summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Marie <alexandre.marie@synchrotron-soleil.fr>2018-12-17 12:28:24 +0100
committerAlexandre Marie <alexandre.marie@synchrotron-soleil.fr>2018-12-17 12:28:24 +0100
commitcebdc9244c019224846cb8d2668080fe386a6adc (patch)
treeaedec55da0f9dd4fc4d6c7eb0f58489a956e2e8c
parent159ef14fb9e198bb0066ea14e6b980f065de63dd (diff)
New upstream version 0.9.0+dfsg
-rw-r--r--CHANGELOG.rst60
-rw-r--r--LICENSE2
-rw-r--r--MANIFEST.in2
-rw-r--r--PKG-INFO21
-rw-r--r--README.rst16
-rw-r--r--copyright6
-rw-r--r--doc/source/Tutorials/.ipynb_checkpoints/Image-checkpoint.ipynb1841
-rw-r--r--doc/source/Tutorials/Sift/.ipynb_checkpoints/sift-checkpoint.ipynb4248
-rw-r--r--doc/source/conf.py2
-rw-r--r--doc/source/developers.rst98
-rw-r--r--doc/source/ext/snapshotqt_directive.py257
-rw-r--r--doc/source/index.rst6
-rw-r--r--doc/source/install.rst267
-rw-r--r--doc/source/modules/gui/dialog/datasetdialog.rst7
-rw-r--r--doc/source/modules/gui/dialog/img/colormapdialog.pngbin0 -> 23258 bytes
-rw-r--r--doc/source/modules/gui/dialog/img/datasetdialog.pngbin0 -> 39166 bytes
-rw-r--r--doc/source/modules/gui/dialog/index.rst24
-rw-r--r--doc/source/modules/gui/gallery.rst29
-rw-r--r--doc/source/modules/gui/icons.rst39
-rw-r--r--doc/source/modules/gui/plot/compareimages.rst19
-rw-r--r--doc/source/modules/gui/plot/dev.rst1
-rw-r--r--doc/source/modules/gui/plot/getting_started.rst8
-rw-r--r--doc/source/modules/gui/plot/img/CompareImages.pngbin0 -> 169928 bytes
-rw-r--r--doc/source/modules/gui/plot/img/CurveLegendsWidget.pngbin0 -> 30043 bytes
-rw-r--r--doc/source/modules/gui/plot/index.rst1
-rw-r--r--doc/source/modules/gui/plot/items.rst7
-rw-r--r--doc/source/modules/gui/plot/plotsignal.rst1
-rw-r--r--doc/source/modules/gui/plot/plotwidget.rst16
-rw-r--r--doc/source/modules/gui/plot/tools.rst12
-rw-r--r--doc/source/modules/gui/plot3d/img/GroupPropertiesWidget.pngbin0 -> 5129 bytes
-rw-r--r--doc/source/modules/gui/plot3d/img/PositionInfoWidget.pngbin0 -> 3353 bytes
-rw-r--r--doc/source/modules/gui/plot3d/scenewidget.rst8
-rw-r--r--doc/source/modules/gui/plot3d/tools.rst24
-rw-r--r--doc/source/modules/gui/update_icons_rst.py90
-rw-r--r--doc/source/modules/gui/utils.rst6
-rw-r--r--doc/source/modules/gui/widgets/flowlayout.rst11
-rw-r--r--doc/source/modules/gui/widgets/img/RangeSlider.pngbin0 -> 2686 bytes
-rw-r--r--doc/source/modules/gui/widgets/index.rst2
-rw-r--r--doc/source/modules/gui/widgets/rangeslider.rst8
-rw-r--r--doc/source/modules/sx.rst4
-rw-r--r--doc/source/modules/test/index.rst6
-rw-r--r--doc/source/overview.rst2
-rw-r--r--doc/source/troubleshooting.rst36
-rw-r--r--doc/source/virtualenv.rst6
-rw-r--r--examples/__init__.py29
-rw-r--r--examples/blissPlot.py635
-rw-r--r--examples/colormapDialog.py2
-rw-r--r--examples/compareImages.py149
-rw-r--r--examples/plot3dSceneWindow.py10
-rw-r--r--examples/plotCurveLegendWidget.py154
-rw-r--r--examples/plotGL32.py46
-rw-r--r--examples/plotInteractiveImageROI.py9
-rw-r--r--examples/plotStats.py4
-rw-r--r--examples/plotTimeSeries.py33
-rwxr-xr-xexamples/simplewidget.py44
-rw-r--r--package/debian8/control3
-rw-r--r--package/debian9/control4
-rw-r--r--package/windows/README.rst37
-rw-r--r--package/windows/bootstrap-silx-view.py12
-rw-r--r--package/windows/bootstrap.py16
-rw-r--r--package/windows/pyinstaller-silx-view.spec54
-rw-r--r--package/windows/pyinstaller.spec54
-rw-r--r--package/windows/silx.icobin0 -> 4286 bytes
-rw-r--r--requirements-dev.txt5
-rw-r--r--requirements.txt10
-rwxr-xr-xrun_tests.py276
-rw-r--r--setup.cfg1
-rw-r--r--setup.py32
-rw-r--r--silx.egg-info/PKG-INFO21
-rw-r--r--silx.egg-info/SOURCES.txt77
-rw-r--r--silx.egg-info/requires.txt15
-rw-r--r--silx/_config.py31
-rw-r--r--silx/app/convert.py14
-rw-r--r--silx/app/test_.py7
-rw-r--r--silx/app/view/About.py44
-rw-r--r--silx/app/view/CustomNxdataWidget.py8
-rw-r--r--silx/app/view/DataPanel.py35
-rw-r--r--silx/app/view/Viewer.py149
-rw-r--r--silx/app/view/test/test_view.py2
-rw-r--r--silx/gui/_glutils/font.py2
-rw-r--r--silx/gui/colors.py9
-rw-r--r--silx/gui/data/Hdf5TableView.py78
-rw-r--r--silx/gui/data/NXdataWidgets.py3
-rw-r--r--silx/gui/data/RecordTableView.py24
-rw-r--r--silx/gui/data/TextFormatter.py10
-rw-r--r--silx/gui/data/test/test_arraywidget.py2
-rw-r--r--silx/gui/data/test/test_dataviewer.py16
-rw-r--r--silx/gui/data/test/test_numpyaxesselector.py4
-rw-r--r--silx/gui/data/test/test_textformatter.py52
-rw-r--r--silx/gui/dialog/AbstractDataFileDialog.py2
-rw-r--r--silx/gui/dialog/ColormapDialog.py5
-rw-r--r--silx/gui/dialog/DatasetDialog.py122
-rw-r--r--silx/gui/dialog/GroupDialog.py161
-rw-r--r--silx/gui/dialog/SafeFileIconProvider.py4
-rw-r--r--silx/gui/dialog/SafeFileSystemModel.py2
-rw-r--r--silx/gui/dialog/test/test_colormapdialog.py4
-rw-r--r--silx/gui/dialog/test/test_datafiledialog.py120
-rw-r--r--silx/gui/dialog/test/test_imagefiledialog.py86
-rw-r--r--silx/gui/fit/FitConfig.py9
-rw-r--r--silx/gui/fit/FitWidget.py10
-rw-r--r--silx/gui/fit/test/testBackgroundWidget.py2
-rw-r--r--silx/gui/fit/test/testFitConfig.py2
-rw-r--r--silx/gui/fit/test/testFitWidget.py2
-rw-r--r--silx/gui/hdf5/Hdf5Item.py41
-rw-r--r--silx/gui/hdf5/Hdf5LoadingItem.py11
-rw-r--r--silx/gui/hdf5/Hdf5Node.py9
-rw-r--r--silx/gui/hdf5/Hdf5TreeModel.py15
-rw-r--r--silx/gui/hdf5/NexusSortFilterProxyModel.py20
-rw-r--r--silx/gui/hdf5/_utils.py11
-rw-r--r--silx/gui/hdf5/test/test_hdf5.py122
-rw-r--r--silx/gui/icons.py38
-rw-r--r--silx/gui/plot/ColorBar.py12
-rw-r--r--silx/gui/plot/CompareImages.py1190
-rw-r--r--silx/gui/plot/ImageView.py9
-rw-r--r--silx/gui/plot/LegendSelector.py134
-rw-r--r--silx/gui/plot/MaskToolsWidget.py129
-rw-r--r--silx/gui/plot/PlotToolButtons.py56
-rw-r--r--silx/gui/plot/PlotWidget.py183
-rw-r--r--silx/gui/plot/PlotWindow.py5
-rw-r--r--silx/gui/plot/PrintPreviewToolButton.py5
-rw-r--r--silx/gui/plot/Profile.py89
-rw-r--r--silx/gui/plot/ProfileMainWindow.py16
-rw-r--r--silx/gui/plot/ScatterMaskToolsWidget.py61
-rw-r--r--silx/gui/plot/ScatterView.py10
-rw-r--r--silx/gui/plot/StackView.py100
-rw-r--r--silx/gui/plot/StatsWidget.py18
-rw-r--r--silx/gui/plot/_BaseMaskToolsWidget.py6
-rw-r--r--silx/gui/plot/_utils/test/testColormap.py648
-rw-r--r--silx/gui/plot/actions/PlotToolAction.py150
-rw-r--r--silx/gui/plot/actions/control.py1
-rw-r--r--silx/gui/plot/actions/fit.py63
-rw-r--r--silx/gui/plot/actions/histogram.py88
-rw-r--r--silx/gui/plot/actions/io.py12
-rw-r--r--silx/gui/plot/actions/medfilt.py38
-rw-r--r--silx/gui/plot/backends/BackendBase.py17
-rw-r--r--silx/gui/plot/backends/BackendMatplotlib.py28
-rw-r--r--silx/gui/plot/backends/BackendOpenGL.py17
-rw-r--r--silx/gui/plot/backends/glutils/GLText.py46
-rw-r--r--silx/gui/plot/items/core.py23
-rw-r--r--silx/gui/plot/items/curve.py213
-rw-r--r--silx/gui/plot/items/histogram.py7
-rw-r--r--silx/gui/plot/items/marker.py42
-rw-r--r--silx/gui/plot/items/scatter.py30
-rw-r--r--silx/gui/plot/matplotlib/ModestImage.py174
-rw-r--r--silx/gui/plot/test/__init__.py6
-rw-r--r--silx/gui/plot/test/testAlphaSlider.py2
-rw-r--r--silx/gui/plot/test/testColorBar.py2
-rw-r--r--silx/gui/plot/test/testCompareImages.py117
-rw-r--r--silx/gui/plot/test/testCurvesROIWidget.py2
-rw-r--r--silx/gui/plot/test/testImageView.py2
-rw-r--r--silx/gui/plot/test/testItem.py2
-rw-r--r--silx/gui/plot/test/testLegendSelector.py2
-rw-r--r--silx/gui/plot/test/testMaskToolsWidget.py8
-rw-r--r--silx/gui/plot/test/testPixelIntensityHistoAction.py2
-rw-r--r--silx/gui/plot/test/testPlotWidget.py203
-rw-r--r--silx/gui/plot/test/testPlotWindow.py2
-rw-r--r--silx/gui/plot/test/testProfile.py198
-rw-r--r--silx/gui/plot/test/testScatterMaskToolsWidget.py8
-rw-r--r--silx/gui/plot/test/testScatterView.py19
-rw-r--r--silx/gui/plot/test/testStackView.py7
-rw-r--r--silx/gui/plot/test/testStats.py3
-rw-r--r--silx/gui/plot/test/testUtilsAxis.py2
-rw-r--r--silx/gui/plot/test/utils.py2
-rw-r--r--silx/gui/plot/tools/CurveLegendsWidget.py247
-rw-r--r--silx/gui/plot/tools/profile/ImageProfileToolBar.py271
-rw-r--r--silx/gui/plot/tools/test/__init__.py2
-rw-r--r--silx/gui/plot/tools/test/testCurveLegendsWidget.py125
-rw-r--r--silx/gui/plot/tools/test/testROI.py2
-rw-r--r--silx/gui/plot/tools/test/testScatterProfileToolBar.py2
-rw-r--r--silx/gui/plot/tools/test/testTools.py2
-rw-r--r--silx/gui/plot/utils/axis.py9
-rw-r--r--silx/gui/plot3d/ParamTreeView.py11
-rw-r--r--silx/gui/plot3d/Plot3DWidget.py2
-rw-r--r--silx/gui/plot3d/SFViewParamTree.py64
-rw-r--r--silx/gui/plot3d/SceneWidget.py28
-rw-r--r--silx/gui/plot3d/_model/items.py2
-rw-r--r--silx/gui/plot3d/actions/io.py2
-rw-r--r--silx/gui/plot3d/items/_pick.py292
-rw-r--r--silx/gui/plot3d/items/clipplane.py90
-rw-r--r--silx/gui/plot3d/items/core.py201
-rw-r--r--silx/gui/plot3d/items/image.py68
-rw-r--r--silx/gui/plot3d/items/mesh.py176
-rw-r--r--silx/gui/plot3d/items/scatter.py182
-rw-r--r--silx/gui/plot3d/items/volume.py173
-rw-r--r--silx/gui/plot3d/scene/event.py4
-rw-r--r--silx/gui/plot3d/scene/function.py4
-rw-r--r--silx/gui/plot3d/scene/primitives.py2
-rw-r--r--silx/gui/plot3d/scene/transform.py42
-rw-r--r--silx/gui/plot3d/scene/utils.py180
-rw-r--r--silx/gui/plot3d/setup.py4
-rw-r--r--silx/gui/plot3d/test/__init__.py25
-rw-r--r--silx/gui/plot3d/test/testGL.py2
-rw-r--r--silx/gui/plot3d/test/testScalarFieldView.py29
-rw-r--r--silx/gui/plot3d/test/testSceneWidgetPicking.py267
-rw-r--r--silx/gui/plot3d/tools/PositionInfoWidget.py209
-rw-r--r--silx/gui/plot3d/tools/test/__init__.py (renamed from silx/gui/plot3d/scene/setup.py)24
-rw-r--r--silx/gui/plot3d/tools/test/testPositionInfoWidget.py101
-rw-r--r--silx/gui/qt/__init__.py7
-rw-r--r--silx/gui/qt/_pyside_dynamic.py55
-rw-r--r--silx/gui/qt/_qt.py43
-rw-r--r--silx/gui/qt/_utils.py5
-rw-r--r--silx/gui/qt/inspect.py82
-rw-r--r--silx/gui/test/test_colors.py18
-rw-r--r--silx/gui/test/test_console.py2
-rw-r--r--silx/gui/test/test_icons.py2
-rw-r--r--silx/gui/test/test_qt.py63
-rw-r--r--silx/gui/test/utils.py507
-rw-r--r--silx/gui/utils/_image.py104
-rw-r--r--silx/gui/utils/image.py143
-rw-r--r--silx/gui/utils/test/test_async.py2
-rw-r--r--silx/gui/utils/test/test_image.py50
-rw-r--r--silx/gui/utils/testutils.py520
-rw-r--r--silx/gui/widgets/FloatEdit.py4
-rw-r--r--silx/gui/widgets/FlowLayout.py177
-rw-r--r--silx/gui/widgets/PrintPreview.py4
-rw-r--r--silx/gui/widgets/RangeSlider.py627
-rw-r--r--silx/gui/widgets/__init__.py8
-rw-r--r--silx/gui/widgets/test/__init__.py4
-rw-r--r--silx/gui/widgets/test/test_boxlayoutdockwidget.py2
-rw-r--r--silx/gui/widgets/test/test_flowlayout.py77
-rw-r--r--silx/gui/widgets/test/test_framebrowser.py2
-rw-r--r--silx/gui/widgets/test/test_hierarchicaltableview.py2
-rw-r--r--silx/gui/widgets/test/test_periodictable.py2
-rw-r--r--silx/gui/widgets/test/test_printpreview.py2
-rw-r--r--silx/gui/widgets/test/test_rangeslider.py114
-rw-r--r--silx/gui/widgets/test/test_tablewidget.py2
-rw-r--r--silx/gui/widgets/test/test_threadpoolpushbutton.py4
-rw-r--r--silx/image/bilinear.c2188
-rw-r--r--silx/image/bilinear.pyx13
-rw-r--r--silx/image/marchingsquares/_mergeimpl.cpp2504
-rw-r--r--silx/image/medianfilter.py13
-rw-r--r--silx/image/shapes.c1904
-rw-r--r--silx/image/test/test_bilinear.py16
-rw-r--r--silx/io/configdict.py18
-rw-r--r--silx/io/convert.py10
-rw-r--r--silx/io/dictdump.py38
-rw-r--r--silx/io/specfile.c6904
-rw-r--r--silx/io/specfile/src/sfinit.c26
-rw-r--r--silx/io/spech5.py40
-rw-r--r--silx/io/test/test_fabioh5.py128
-rw-r--r--silx/io/test/test_specfile.py20
-rw-r--r--silx/io/test/test_utils.py12
-rw-r--r--silx/io/utils.py8
-rw-r--r--silx/math/calibration.py10
-rw-r--r--silx/math/chistogramnd.c5293
-rw-r--r--silx/math/chistogramnd_lut.c5999
-rw-r--r--silx/math/colormap.c4690
-rw-r--r--silx/math/combo.c2251
-rw-r--r--silx/math/fit/filters.c3563
-rw-r--r--silx/math/fit/fittheory.py8
-rw-r--r--silx/math/fit/functions.c9163
-rw-r--r--silx/math/fit/peaks.c2426
-rw-r--r--silx/math/marchingcubes.cpp2776
-rw-r--r--silx/math/medianfilter/include/median_filter.hpp217
-rw-r--r--silx/math/medianfilter/median_filter.pxd5
-rw-r--r--silx/math/medianfilter/medianfilter.cpp6030
-rw-r--r--silx/math/medianfilter/medianfilter.pyx154
-rw-r--r--silx/math/medianfilter/test/__init__.py6
-rw-r--r--silx/math/medianfilter/test/test_medianfilter.py264
-rw-r--r--silx/opencl/codec/byte_offset.py6
-rw-r--r--silx/opencl/common.py8
-rw-r--r--silx/opencl/test/test_addition.py4
-rw-r--r--silx/opencl/test/test_medfilt.py4
-rw-r--r--silx/resources/gui/icons/compare-align-auto.pngbin0 -> 1446 bytes
-rw-r--r--silx/resources/gui/icons/compare-align-auto.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-center.pngbin0 -> 716 bytes
-rw-r--r--silx/resources/gui/icons/compare-align-center.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-origin.pngbin0 -> 728 bytes
-rw-r--r--silx/resources/gui/icons/compare-align-origin.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-stretch.pngbin0 -> 903 bytes
-rw-r--r--silx/resources/gui/icons/compare-align-stretch.svg4
-rw-r--r--silx/resources/gui/icons/compare-keypoints.pngbin0 -> 616 bytes
-rw-r--r--silx/resources/gui/icons/compare-keypoints.svg17
-rw-r--r--silx/resources/gui/icons/compare-mode-a.pngbin0 -> 803 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-a.svg13
-rw-r--r--silx/resources/gui/icons/compare-mode-b.pngbin0 -> 740 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-b.svg13
-rw-r--r--silx/resources/gui/icons/compare-mode-hline.pngbin0 -> 902 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-hline.svg16
-rw-r--r--silx/resources/gui/icons/compare-mode-rb-channel.pngbin0 -> 1269 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-rb-channel.svg17
-rw-r--r--silx/resources/gui/icons/compare-mode-rbneg-channel.pngbin0 -> 1260 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-rbneg-channel.svg17
-rw-r--r--silx/resources/gui/icons/compare-mode-vline.pngbin0 -> 1079 bytes
-rw-r--r--silx/resources/gui/icons/compare-mode-vline.svg17
-rw-r--r--silx/resources/gui/icons/math-mean.pngbin0 -> 1487 bytes
-rw-r--r--silx/resources/gui/icons/math-mean.svg2
-rw-r--r--silx/resources/opencl/bitonic.cl232
-rw-r--r--silx/resources/opencl/linalg.cl57
-rw-r--r--silx/resources/opencl/medfilt.cl2
-rw-r--r--silx/setup.py3
-rw-r--r--silx/sx/test/test_sx.py15
-rw-r--r--silx/third_party/EdfFile.py18
-rw-r--r--silx/third_party/TiffIO.py12
-rw-r--r--silx/third_party/modest_image.py322
-rw-r--r--silx/utils/launcher.py4
-rw-r--r--silx/utils/number.py2
-rw-r--r--silx/utils/test/test_html.py6
-rw-r--r--silx/utils/test/test_launcher.py32
-rw-r--r--silx/utils/test/test_weakref.py82
-rw-r--r--version.py4
301 files changed, 37359 insertions, 40179 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 2a98a90..073e1ac 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,66 @@
Change Log
==========
+0.9.0: 2018/10/23
+-----------------
+
+ * Graphical user interface:
+
+ * `silx.gui.widgets`:
+
+ * Adds `RangeSlider` widget, a slider with 2 thumbs
+ * Adds `CurveLegendsWidget` widget to display PlotWidget curve legends
+ (as an alternative to `LegendSelector` widget)
+ * Adds `FlowLayout` QWidget layout
+
+ * Plot:
+
+ * Adds `CompareImages` widget providing tools to compare 2 images
+ * `ScatterView`: Adds alpha channel support
+ * `MaskToolsWidget`: Adds load/save masks from/to HDF5 files
+
+ * `PlotWidget`:
+
+ * Adds `getItems` method, `sigItemAdded` and `sigItemAboutToBeRemoved` signals
+ * Adds more options for active curve highlighting (see `get|setActiveCurveStyle` method)
+ * Deprecates `get|setActiveCurveColor` methods
+ * Adds `get|setActiveCurveSelectionMode` methods to change the behavior of active curve selection
+ * Adds configurable line style and width to line markers
+ * Fixes texture cache size in OpenGL backend
+
+ * Plot3D:
+
+ * Adds `SceneWidget.pickItems` method to retrieve the item and data at a given mouse position
+ * Adds `PositionInfoWidget` widget to display data value at a given mouse position
+
+ * `silx.gui.utils`:
+
+ * Adds `image` module for QImage/numpy array conversion functions
+ * Adds `testutils` helper module for writing Qt tests
+ (previously available internally as `silx.gui.test.utils`)
+
+ * Adds `silx.gui.qt.inspect` module to inspect Qt objects
+
+ * Math:
+
+ * Updates median filter with support for Not-a-Number and a 'constant' padding mode
+
+ * `silx view`:
+
+ * Fixes file synchronization
+ * Adds a refresh button to synchronize file content
+
+ * Dependencies:
+
+ * Deprecates support of PySide Qt4 binding
+ (We intend to drop official support of PySide in silx 0.10.0)
+ * Deprecates support of PyQt4
+ * Adds `h5py` and `fabio` as strong dependencies
+
+ * Miscellaneous:
+
+ * Adds `silx.examples` package to ship the example with the library
+
0.8.0: 2018/07/04
-----------------
diff --git a/LICENSE b/LICENSE
index acebc8d..15172e7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -5,7 +5,7 @@ Silx follows the permissive MIT license although it may include contributions fo
Silx uses the Qt library for its graphical user interfaces.
A word of caution is to be provided.
If users develop and distribute software using modules accessing Qt by means of Riverbank Computing Qt bindings PyQt4 or PyQt5, those users will be conditioned by the license of their PyQt4/5 software (GPL or commercial).
-If the end user does not own a commercial license of PyQt4 or PyQt5 and wishes to be free of any distribution condition, (s)he should be able to use PySide because it uses the LGPL license.
+If the end user does not own a commercial license of PyQt4 or PyQt5 and wishes to be free of any distribution condition, (s)he should be able to use PySide2 because it uses the LGPL license.
The MIT license follows:
diff --git a/MANIFEST.in b/MANIFEST.in
index 4e9b35f..abdc1f9 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -12,7 +12,9 @@ include requirements-dev.txt
recursive-include silx *.pyx *.pxd *.pxi
recursive-include silx *.h *.c *.hpp *.cpp
recursive-include doc/source *.py *.rst *.png *.ico *.ipynb
+global-exclude .ipynb_checkpoints/*
recursive-include qtdesigner_plugins *.py *.rst
recursive-include silx/resources *
recursive-include examples *
recursive-include package *
+
diff --git a/PKG-INFO b/PKG-INFO
index ecb8d4f..52f365a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: silx
-Version: 0.8.0
+Version: 0.9.0
Summary: Software library for X-ray data analysis
Home-page: http://www.silx.org/
Author: data analysis unit
@@ -13,7 +13,7 @@ Description:
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
- It aims at providing reading/writing different file formats, data reduction routines
+ *silx* aims to provide reading/writing tools for different file formats, data reduction routines
and a set of Qt widgets to browse and visualise data.
The current version features:
@@ -41,12 +41,18 @@ Description:
Installation
------------
- To install silx, run:
+ To install silx (and all its dependencies), run:
+
+ .. code-block:: bash
+
+ pip install silx[full]
+
+ To install silx with a minimal set of dependencies, run:
+
+ .. code-block:: bash
- .. code-block:: bash
-
pip install silx
-
+
Or using Anaconda on Linux and MacOS:
.. code-block:: bash
@@ -130,3 +136,4 @@ Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Provides-Extra: full
diff --git a/README.rst b/README.rst
index 8e420fd..bd91773 100644
--- a/README.rst
+++ b/README.rst
@@ -5,7 +5,7 @@ silx toolkit
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
-It aims at providing reading/writing different file formats, data reduction routines
+*silx* aims to provide reading/writing tools for different file formats, data reduction routines
and a set of Qt widgets to browse and visualise data.
The current version features:
@@ -33,12 +33,18 @@ The current version features:
Installation
------------
-To install silx, run:
+To install silx (and all its dependencies), run:
+
+.. code-block:: bash
+
+ pip install silx[full]
+
+To install silx with a minimal set of dependencies, run:
+
+.. code-block:: bash
-.. code-block:: bash
-
pip install silx
-
+
Or using Anaconda on Linux and MacOS:
.. code-block:: bash
diff --git a/copyright b/copyright
index 4229c58..174de4b 100644
--- a/copyright
+++ b/copyright
@@ -3,7 +3,7 @@ Upstream-Name: silx
Source: https://github.com/silx-kit/silx
Files: *
-Copyright: 2004-2017 European Synchrotron Radiation Facility
+Copyright: 2004-2018 European Synchrotron Radiation Facility
Data analysis unit (silx@esrf.fr)
License: MIT
@@ -20,6 +20,10 @@ Copyright: 2011 Sebastian Wiesner <lunaryorn@gmail.com>
Modifications by Charl Botha <cpbotha@vxlabs.com>
License: MIT
+Files: silx/third_party/modest_image.py
+Copyright: 2013 Chris Beaumont
+License: MIT
+
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
diff --git a/doc/source/Tutorials/.ipynb_checkpoints/Image-checkpoint.ipynb b/doc/source/Tutorials/.ipynb_checkpoints/Image-checkpoint.ipynb
deleted file mode 100644
index 8042fc7..0000000
--- a/doc/source/Tutorials/.ipynb_checkpoints/Image-checkpoint.ipynb
+++ /dev/null
@@ -1,1841 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Image processing performance optimisation\n",
- "\n",
- "The idea of this tutorial is to give some suggestion how optimise image processing.\n",
- "In the following example we decompress a CBF image from a Pilatus 6M, take the log-scale and calculate the histogram of pixel intensities before plotting. \n",
- "This very simple operation takes >300ms, what makes it unpractical for live display of images coming from a detector. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n"
- ]
- }
- ],
- "source": [
- "%pylab nbagg"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Using silx version 0.8.0-dev0\n",
- "filename powder_200_2_0001.cbf\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/media/data_unused/tvincent/venvs/py3env/lib/python3.4/importlib/_bootstrap.py:321: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
- " return f(*args, **kwds)\n"
- ]
- }
- ],
- "source": [
- "import time, os\n",
- "start_time = time.time()\n",
- "import silx\n",
- "print(\"Using silx version \",silx.version)\n",
- "from silx.resources import ExternalResources\n",
- "downloader = ExternalResources(\"pyFAI\", \"http://www.silx.org/pub/pyFAI/testimages\", \"PYFAI_DATA\")\n",
- "fname = downloader.getfile(\"powder_200_2_0001.cbf\")\n",
- "print(\"filename\", os.path.basename(fname))\n",
- "import fabio\n",
- "nbins = 1000"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CPU times: user 380 ms, sys: 40 ms, total: 420 ms\n",
- "Wall time: 420 ms\n"
- ]
- }
- ],
- "source": [
- "%%time\n",
- "\n",
- "#Display an image and the histogram of values (in log scale)\n",
- "img = fabio.open(fname).data\n",
- "log_img = numpy.arcsinh(img) # arcsinh is well behaved log-like function\n",
- "his, edges = numpy.histogram(log_img, nbins)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "[<matplotlib.lines.Line2D at 0x7f57a47b0588>]"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "fig, ax = subplots(1,2,)\n",
- "center = (edges[1:] + edges[:-1])/2.0 # this is the center of the bins \n",
- "ax[1].imshow(log_img, cmap=\"inferno\")\n",
- "ax[0].plot(center,his)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Optimised GPU code\n",
- "\n",
- "The code below prepares a GPU to be able to perform the same calculation as in the previous example.\n",
- "\n",
- "3 operations have to be carried out:\n",
- "\n",
- "* Decompress the CBF image\n",
- "* Calculate the log scale (arcsinh values)\n",
- "* Calculate the histogram\n",
- "\n",
- "Both can be performed on the GPU without additional memory transfer"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "#switch this to \"CPU\" to have a fail safe \n",
- "devicetype = \"GPU\"\n",
- "from silx.opencl.codec.byte_offset import ByteOffset\n",
- "from silx.opencl.image import ImageProcessing\n",
- "import pyopencl, pyopencl.array, pyopencl.elementwise\n",
- "cbf = fabio.cbfimage.CbfImage()\n",
- "bo = ByteOffset(os.path.getsize(fname), img.size, devicetype=devicetype)\n",
- "ash = pyopencl.elementwise.ElementwiseKernel(bo.ctx, \n",
- " arguments=\"float* data, float* res\", \n",
- " operation=\"res[i] = asinh(data[i])\", \n",
- " name='arcsinh_kernel')\n",
- "ip = ImageProcessing(template=img, ctx=bo.ctx)\n",
- "res = pyopencl.array.empty(bo.queue, img.shape, dtype=float32)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CPU times: user 432 ms, sys: 36 ms, total: 468 ms\n",
- "Wall time: 486 ms\n"
- ]
- }
- ],
- "source": [
- "%%time \n",
- "raw = cbf.read(fname, only_raw=True)\n",
- "dec = bo(raw, as_float=True)\n",
- "ash(dec, res)\n",
- "his, edges = ip.histogram(res, nbins, copy=False)\n",
- "log_img = res.get()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "[<matplotlib.lines.Line2D at 0x7f5759b03ef0>]"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "fig, ax = subplots(1,2,)\n",
- "center = (edges[1:] + edges[:-1])/2.0 # this is the center of the bins \n",
- "ax[1].imshow(log_img, cmap=\"inferno\")\n",
- "ax[0].plot(center,his)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The results are the same and the processing time is 6x faster. Hence, one can envisage realtime visualisation of images coming from detectors.\n",
- "\n",
- "## Investigation of the timings"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Profiling info for OpenCL ByteOffset\n",
- " copy raw H -> D:\t1.048ms\n",
- " memset mask:\t0.374ms\n",
- " memset counter:\t0.006ms\n",
- " mark exceptions:\t0.688ms\n",
- " copy counter D -> H:\t0.003ms\n",
- " treat_exceptions:\t0.122ms\n",
- " double scan:\t1.672ms\n",
- " copy_results:\t1.220ms\n",
- "________________________________________________________________________________\n",
- " Total execution time:\t5.132ms\n",
- "\n",
- "Profiling info for OpenCL ImageProcessing\n",
- " copy D->D:\t3.041ms\n",
- " max_min_stage1:\t0.873ms\n",
- " max_min_stage2:\t0.009ms\n",
- " histogram:\t0.775ms\n",
- "________________________________________________________________________________\n",
- " Total execution time:\t4.699ms\n"
- ]
- }
- ],
- "source": [
- "ip.set_profiling(True)\n",
- "bo.set_profiling(True)\n",
- "ip.reset_log()\n",
- "bo.reset_log()\n",
- "raw = cbf.read(fname, only_raw=True)\n",
- "dec = bo(raw, as_float=True)\n",
- "ash(dec, res)\n",
- "his, edges = ip.histogram(res, nbins, copy=False)\n",
- "log_img = res.get()\n",
- "import os\n",
- "print(os.linesep.join(bo.log_profile()))\n",
- "print(os.linesep.join(ip.log_profile()))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Conclusion\n",
- "This notebook explains how to optimise some heavy numerical processing up to 10x speed-up for realtime image processing using GPU."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.4.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/doc/source/Tutorials/Sift/.ipynb_checkpoints/sift-checkpoint.ipynb b/doc/source/Tutorials/Sift/.ipynb_checkpoints/sift-checkpoint.ipynb
deleted file mode 100644
index f6544c1..0000000
--- a/doc/source/Tutorials/Sift/.ipynb_checkpoints/sift-checkpoint.ipynb
+++ /dev/null
@@ -1,4248 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# SIFT image alignment tutorial\n",
- "\n",
- "SIFT (Scale-Invariant Feature Transform) is an algorithm developped by David Lowe in 1999. \n",
- "It is a worldwide reference for image alignment and object recognition. \n",
- "The robustness of this method enables to detect features at different scales, angles and illumination of a scene. \n",
- "\n",
- "Silx provides an implementation of SIFT in OpenCL, meaning that it can run on Graphics Processing Units and Central Processing Units as well. \n",
- "Interest points are detected in the image, then data structures called *descriptors* are built to be characteristic of the scene, so that two different images of the same scene have similar descriptors. \n",
- "They are robust to transformations like translation, rotation, rescaling and illumination change, which make SIFT interesting for image stitching. \n",
- "\n",
- "In the fist stage, descriptors are computed from the input images. \n",
- "Then, they are compared to determine the geometric transformation to apply in order to align the images. \n",
- "This implementation can run on most graphic cards and CPU, making it usable on many setups. \n",
- "OpenCL processes are handled from Python with PyOpenCL, a module to access OpenCL parallel computation API.\n",
- "\n",
- "This tutuorial explains the three subsequent steps:\n",
- "\n",
- "* keypoint extraction\n",
- "* Keypoint matching\n",
- "* image alignment\n",
- "\n",
- "All the tutorial has been made using the Jupyter notebook."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Populating the interactive namespace from numpy and matplotlib\n"
- ]
- }
- ],
- "source": [
- "import time\n",
- "start_time = time.time()\n",
- "%pylab nbagg"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Silx version 0.8.0-dev0\n"
- ]
- },
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "<matplotlib.image.AxesImage at 0x7f068d8ad710>"
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# display test image\n",
- "import silx\n",
- "print(\"Silx version %s\"%silx.version)\n",
- "\n",
- "from PIL import Image\n",
- "from silx.test.utils import utilstest\n",
- "path = utilstest.getfile(\"lena.png\")\n",
- "image = numpy.asarray(Image.open(path))\n",
- "fig, ax = subplots()\n",
- "ax.imshow(image)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CPU times: user 1.03 s, sys: 168 ms, total: 1.2 s\n",
- "Wall time: 1.28 s\n",
- "Device used for calculation: Quadro K2200\n"
- ]
- }
- ],
- "source": [
- "#Initialization of the sift object is time consuming: it compiles all the code.\n",
- "import os \n",
- "#set to 1 to see the compilation going on\n",
- "os.environ[\"PYOPENCL_COMPILER_OUTPUT\"] = \"0\" \n",
- "#switch to \"GPU\" to \"CPU\" to enable fail-save version.\n",
- "devicetype=\"GPU\"\n",
- "from silx.image import sift\n",
- "\n",
- "%time sift_ocl = sift.SiftPlan(template=image, devicetype=devicetype) \n",
- "\n",
- "print(\"Device used for calculation: \", sift_ocl.ctx.devices[0].name)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Time for calculating the keypoints on one image of size 512x512\n",
- "CPU times: user 36 ms, sys: 4 ms, total: 40 ms\n",
- "Wall time: 39.2 ms\n",
- "Number of keypoints: 411\n",
- "Keypoint content:\n",
- "(numpy.record, [('x', '<f4'), ('y', '<f4'), ('scale', '<f4'), ('angle', '<f4'), ('desc', 'u1', (128,))])\n",
- "x: 275.483 \t y: 302.585 \t sigma: 36.518 \t angle: -0.194\n",
- "descriptor:\n",
- "[ 11 5 0 1 5 20 22 8 88 20 3 0 0 4 40 120 41 9\n",
- " 13 52 32 36 15 81 1 8 14 25 89 84 7 1 12 0 0 0\n",
- " 22 94 29 9 120 32 0 0 1 21 43 69 81 20 0 0 22 120\n",
- " 43 49 48 120 13 2 16 79 17 3 24 6 0 0 30 76 16 9\n",
- " 120 64 7 5 5 10 7 38 64 75 36 37 38 54 5 8 109 120\n",
- " 9 1 2 4 12 21 39 22 0 0 18 19 5 4 120 120 10 5\n",
- " 1 0 0 0 27 42 44 52 37 20 6 2 24 10 3 2 7 42\n",
- " 81 25]\n"
- ]
- }
- ],
- "source": [
- "print(\"Time for calculating the keypoints on one image of size %sx%s\"%image.shape[:2])\n",
- "%time keypoints = sift_ocl(image)\n",
- "print(\"Number of keypoints: %s\"%len(keypoints))\n",
- "print(\"Keypoint content:\")\n",
- "print(keypoints.dtype)\n",
- "print(\"x: %.3f \\t y: %.3f \\t sigma: %.3f \\t angle: %.3f\" % \n",
- " (keypoints[-1].x,keypoints[-1].y,keypoints[-1].scale,keypoints[-1].angle))\n",
- "print(\"descriptor:\")\n",
- "print(keypoints[-1].desc)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "[<matplotlib.lines.Line2D at 0x7f06706f73c8>]"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Overlay keypoints on the image:\n",
- "fig, ax = subplots()\n",
- "ax.imshow(image)\n",
- "ax.plot(keypoints[:].x, keypoints[:].y,\".g\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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plwFfGtcBQwAc0MAdtdLk/wiyf4Zjx1IclPK9wPekeTqVdYjAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKklAAGgMQKQWgIQABojAKm14QF45MiR0Z133rk83XLLLQIQADaQAKTWhgfgYx974dKbcmoSgACwEQQgtTY8AHfvftgo+f4o+dV4+qwABIANJACptUkB+OOJ2Pu8AASADSQAqSUAAaAxArC7Lkny10nuS3I4yZcnHnt6khuTHElyW5JrVlmPAASAxgjAbrokJfpeneSMJLuTPGv82N4kdyR5d5I9SQ4kGSZ58wrrEoAA0BgB2E03JXn/Co9dleTOlChccjDJLSssLwABoDECsHsenuTBJP8+yf9K8vMk/yfJS8ePX5vkhqnnXJLkaMrRwWkCEAAaIwC75/wkx5L8LMkzU470/Yskv0ry7CTXJfnU1HMuSgnA82asTwACQGMEYPfsSwnA907NHyR5X9Z5BLDX6436/f6o3++PBoNB1ZtSAALAxhsMBss/q3u9ngDsoFuycgBeGWMAAWCuOQLYTQdTrvS9OMmuJC9O8oskv5NylO/2JO9KcmbKVcC3xlXAADA3BGB3vS3JT5MsJPlakhdNPHYg5UrhB1JC8epV1rOtATgcDkcLCwvL0+Li4oZtBwDMKwFIrW0KwEOjZM/Sm3d52r//XBEIACchAKm1TQE4HM8bjucvLM9zWhgAVicAqbXNAWhcIACcKgFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAFILQEIAI0RgNQSgADQGAHYTdckeTDJfUnuH//3ExOPPz3JjUmOJLltvPxKBCAANEYAdtM1SW5a4bG9Se5I8u4ke5IcSDJM8uYVlheAANAYAdhNqwXgVUnuTLJ7Yt7BJLessLwABIDGCMBuuibl1O+hJD9OOf37xPFj1ya5YWr5S5IcTTk6OE0AAkBjBGA3PTXJBePbj0vyFylH+B6R5Lokn5pa/qKUADxvxroEIAA0RgCSlLF+i0kujyOAADD3BCBJCcBfJLkiyZVZxxjAXq836vf7o36/PxoMBlVvSgEIABtvMBgs/6zu9XoCsINenuRR49uPTfLnSX6U5KyUo3y3J3lXkjNTrgK+Na4CBoC54QhgN3025QKQIylf8fKJJE+aePxAylXCD6R8JczVq6xLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgtQQgADRGAFJLAAJAYwQgn0lyLMkLJuY9L8nXkzyQ5IdJ3rDK8wUgADRGAHbblUm+kORoHgrAJyQ5khJ9pyW5NMm9SV6ywjoEIAA0RgB21+OT/GT838kjgO9IOfo36dokX1xhPQIQABojALvrC0leO749GYCfTvLhqWVfmeTnK6xHAAJAYwRgN70xJQCXHEvy/PHtLyV539TyL0zy6xXWJQABoDECsHuelOSOJBdMzKs+Atjr9Ub9fn/U7/dHg8Gg6k0pAAFg4w0Gg+Wf1b1eTwB2zFVJfpnkriR3j6djSQ4n+UiSq2MMIADMNUcAu+fMJOdNTceSvDzJ2UkuTLkK+PVJTk/y3JQ4dBUwAMwJAUhy/NfAJOWrX76R8j2AP0qJwZUIQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGrtuAAcDoejhYWF5WlxcXHDtg0A5oEApNYOCsBDo2TP0ht6edq//1wRCAATBCC1dlAALs0bjucvLM9zWhgAHiIAqbUDA9C4QABYjQCklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIQGoJQABojACklgAEgMYIwG56R5IfJLk3yV1Jbkhy8dQyT09yY5IjSW5Lcs0K6xKAANAYAdhNv5nkkePbpyV5S5I7k+waz9ub5I4k706yJ8mBJMMkb56xLgEIAI0RgJyR5I+THE3yqPG8q1KCcPfEcgeT3DLj+QIQABojALvrD5McTnIsyYNJ3j/x2LUpp4UnXZISiXun5gtAAGiMAOTslFO7L5uYd12ST00td1FKAJ43NV8AAkBjBCBJGft3b5Knje+f8hHAXq836vf7o36/PxoMBlVvSgEIABtvMBgs/6zu9XoCkJyW5IEkLx3fvzLGAALA3HIEsJsOJnnM+Pajk3w0yT1JHjuetzfJ7UneleTMlKuAb42rgAFgLgjAbro+yc+S3J8Sen+Z5JlTyxxIclPKkcE7kly9wroEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEILUEIAA0RgBSSwACQGMEYPe8L8l3kiwkuT3JJ5M8fmqZC5Jcn+S+JHcl+VCS01ZY31wE4OLi4mhhYeG4aXFxccP2CQB2EgHY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\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "<matplotlib.text.Text at 0x7f06706ad160>"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Diplaying keypoints by scale:\n",
- "fig, ax = subplots()\n",
- "ax.hist(keypoints[:].scale, 100)\n",
- "ax.set_xlabel(\"scale\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,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APzkk08gkUhw9913IzAwkLsO4HQrgE888YTf4+fPnw+NRuN3+8TEBAICApCVlXXDXjsFICFkJhSAhJBZMRcD8EZ54YUXcNttt/lcNma2UQASQmZCAUgImRUUgFfX1dWF6upq/OAHPwCPx7uh34sCkBAyEwpAQsisoAC8ukWLFuGOO+7AU089hYmJiRv6vSgACSEzoQAkhMwKCsCbCwUgIWQmFICEkFlBAXhzoQAkhMyEApAQMisoAG8uFICEkJlQABJCZgUF4M2FApAQMhMKQELIrKAAvLlQABJCZkIBSAiZFRSANxcKQELITCgACSGzggLw5kIBSAiZCQUgIWRWUADeXCgACSEzoQAkhMwKCsAbZ+HChXjyySe5z+vq6hAQEODzfsRTUQASQmZCAUgImRUUgDfOokWL/AIwMDCQApAQct0oAAkhs4IC8MahACSEzDYKQELIrJirAXjmzBlER0fjnnvuwbx58/CTn/wEAoEAX3zxBbcVW1VVhfj4eNx99934j//4D1itVnzxxRdobm7GggUL8N3vfhe//e1vsW/fPp/nttls4PF4+NGPfoTvfOc7+NWvfoUVK1bg4sWLPvejACSEzDYKQELIrJirAfiLX/wCDz30EHbs2IFjx47hjTfegFwuxz//+U8uAOfPn4+0tDQcPHgQubm5CAgIgMlkwm9+8xts3rwZ+/fvx+OPP47/9b/+F9577z3uubdt24aSkhLs3r0bx44dw8aNG3H//fdDLBb7vAYKQELIbKMAJITMii8TgE4nkJ/v/nM2zfbzvvvuuwgICEBNTc20X2cDUKfT+dz+4IMPIjAwEPX19dxtbW1tCAgIwJYtW674/T7//HO8+uqruO222/D+++9zt1MAEkJmGwUgIWRWXGsAOp3AD34AMIz7z9mKtRv1vA888AB++9vf4sUXX0RPT4/P19gAfOedd3xul0gk+Pd//3ef2/7xj38gICAAJSUl3G0fffQRMjMz8cADD+D2229HQEAAAgICEBgYiKamJu5+FICEkNlGAUgImRXXGoD5+e5IY6egYHa+/4163oGBASiVSvznf/4nAgIC8POf/xwbN24EcDkADx065PMYlUqFH//4x37PFRAQgJycHO7z2NhY3HXXXXj22Wdx7NgxOBwOPP/8835xRwFICJltFICEkFkxV1cAvbW2tkKv1yMgIAB79+79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auscwNXhojZMgvlyUQrTpWAlgEcrl9X3+rrVs0mJSC35FOYf60+V/61e4mvYpqYAGAIzari6UwCCKl8fBjCo2vIoAAd/y47fJL92JpS6qKYAeKNngKlNXWAuvl0dPpsAIKPaen+AOaa2le//CaB7tXVmwnRbqCvugbmV5u3wWX2uu2iYC3+VnwF0rHy9E6ZvpyNXmBY+wNyq/wmmJdBRJoBxN3Y3f7W/wnQzAMwXjRUwLWB3oX7XF3DrZ5MSkVpyF0x/veuV/1fDNtdrAbxUw7o/AHCrfK0WwFvjdm4B7AXTUta72uf/qgWwqvN5XW4BdHQHTF+4pyvf19e6exymr1hjh89+TQvgM6i7LYDV3QlzB6QL6m99Vanav1s1m5SI1CPX6wP4E67tA/gTrnSyX4JrL7ZrUT/6AF5vJpS6qKYAeKNngKkNwTDhr0sNy5xhvmzU1Afwzsr38bj2ApSNutUHEDADIipw5ZZbfa27cJg6OQ0zircM5txxDsAHMM8f/bV9AP8E0xJV230Aq7sT5gtwV9Tf+nJ0K2eTEpF64Pe4clute+X7f3NYvgnmJHEfzIl6G8yjH6q0gjlJesBc5PrAnODr2ijg+joTyu9g6qQbTAC8q/L9Haj/M8AMhQkO17vw3wEzWnQJzLE+AjNK2HEUsA9MK2A7mIEhg2EecVHbo4BjANxf+boBzG2ys7jS8lVf6+4PMLcEHcvPMKOx74Gpo3KYbiH/AfNInnO4ehTwQpg7B41h7kYsxbWhsTb44sognQcALIMJPf+F+ltfjjSblIhc1gRX+go6lokO69wD0xfmHzAn8mUwtwMcecPcqrsEYC/MI2HqosmofzOhhOPqOqp67Vy5vD7PAPMzTMvPBVz97DXHQNgYQGzlsjIA83BlBHCVaJgLUwVM14N2N3Onf6FNMH/zizAX1vW49ktRfa47R9UfIeUME/AqYAJU9T7Cd8I8z/EMTH1vQu0HdgDYANOiVQ4TbFbC3PKucjvUl2aTEhEREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREal1/x/wSZjA+vuQNgAAAABJRU5ErkJggg==\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "<matplotlib.legend.Legend at 0x7f06704c0898>"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#One can see 3 groups of keypoints, boundaries at: 8 and 20. Let's display them using colors.\n",
- "S = 8\n",
- "L = 20\n",
- "tiny = keypoints[keypoints[:].scale<S]\n",
- "small = keypoints[numpy.logical_and(keypoints[:].scale<L,keypoints[:].scale>=S)]\n",
- "bigger = keypoints[keypoints[:].scale>=L]\n",
- "\n",
- "fig, ax = subplots()\n",
- "ax.imshow(image, cmap=\"gray\")\n",
- "ax.plot(tiny[:].x, tiny[:].y,\",g\", label=\"tiny\")\n",
- "ax.plot(small[:].x, small[:].y,\".b\", label=\"small\")\n",
- "ax.plot(bigger[:].x, bigger[:].y,\"or\", label=\"large\")\n",
- "ax.legend()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Image matching and alignment\n",
- "\n",
- "Matching can also be performed on the device (GPU) as every single keypoint from an image needs to be compared with all\n",
- "keypoints from the second image.\n",
- "\n",
- "In this simple example we will simple offset the first image by a few pixels"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "shifted = numpy.zeros_like(image)\n",
- "shifted[5:,8:] = image[:-5, :-8]\n",
- "shifted_points = sift_ocl(shifted)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CPU times: user 8 ms, sys: 0 ns, total: 8 ms\n",
- "Wall time: 4.49 ms\n",
- "CPU times: user 4 ms, sys: 0 ns, total: 4 ms\n",
- "Wall time: 6.34 ms\n",
- "Number of Keypoints with for image 1 : 411, For image 2 : 399, Matching keypoints: 353\n",
- "Measured offsets dx: 8.000, dy: 5.000\n"
- ]
- }
- ],
- "source": [
- "%time mp = sift.MatchPlan()\n",
- "%time match = mp(keypoints, shifted_points)\n",
- "print(\"Number of Keypoints with for image 1 : %i, For image 2 : %i, Matching keypoints: %i\" % (keypoints.size, shifted_points.size, match.shape[0]))\n",
- "from numpy import median\n",
- "print(\"Measured offsets dx: %.3f, dy: %.3f\"%(median(match[:,1].x-match[:,0].x),median(match[:,1].y-match[:,0].y)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "application/javascript": [
- "/* Put everything inside the global mpl namespace */\n",
- "window.mpl = {};\n",
- "\n",
- "mpl.get_websocket_type = function() {\n",
- " if (typeof(WebSocket) !== 'undefined') {\n",
- " return WebSocket;\n",
- " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
- " return MozWebSocket;\n",
- " } else {\n",
- " alert('Your browser does not have WebSocket support.' +\n",
- " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
- " 'Firefox 4 and 5 are also supported but you ' +\n",
- " 'have to enable WebSockets in about:config.');\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
- " this.id = figure_id;\n",
- "\n",
- " this.ws = websocket;\n",
- "\n",
- " this.supports_binary = (this.ws.binaryType != undefined);\n",
- "\n",
- " if (!this.supports_binary) {\n",
- " var warnings = document.getElementById(\"mpl-warnings\");\n",
- " if (warnings) {\n",
- " warnings.style.display = 'block';\n",
- " warnings.textContent = (\n",
- " \"This browser does not support binary websocket messages. \" +\n",
- " \"Performance may be slow.\");\n",
- " }\n",
- " }\n",
- "\n",
- " this.imageObj = new Image();\n",
- "\n",
- " this.context = undefined;\n",
- " this.message = undefined;\n",
- " this.canvas = undefined;\n",
- " this.rubberband_canvas = undefined;\n",
- " this.rubberband_context = undefined;\n",
- " this.format_dropdown = undefined;\n",
- "\n",
- " this.image_mode = 'full';\n",
- "\n",
- " this.root = $('<div/>');\n",
- " this._root_extra_style(this.root)\n",
- " this.root.attr('style', 'display: inline-block');\n",
- "\n",
- " $(parent_element).append(this.root);\n",
- "\n",
- " this._init_header(this);\n",
- " this._init_canvas(this);\n",
- " this._init_toolbar(this);\n",
- "\n",
- " var fig = this;\n",
- "\n",
- " this.waiting = false;\n",
- "\n",
- " this.ws.onopen = function () {\n",
- " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
- " fig.send_message(\"send_image_mode\", {});\n",
- " fig.send_message(\"refresh\", {});\n",
- " }\n",
- "\n",
- " this.imageObj.onload = function() {\n",
- " if (fig.image_mode == 'full') {\n",
- " // Full images could contain transparency (where diff images\n",
- " // almost always do), so we need to clear the canvas so that\n",
- " // there is no ghosting.\n",
- " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
- " }\n",
- " fig.context.drawImage(fig.imageObj, 0, 0);\n",
- " };\n",
- "\n",
- " this.imageObj.onunload = function() {\n",
- " this.ws.close();\n",
- " }\n",
- "\n",
- " this.ws.onmessage = this._make_on_message_function(this);\n",
- "\n",
- " this.ondownload = ondownload;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_header = function() {\n",
- " var titlebar = $(\n",
- " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
- " 'ui-helper-clearfix\"/>');\n",
- " var titletext = $(\n",
- " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
- " 'text-align: center; padding: 3px;\"/>');\n",
- " titlebar.append(titletext)\n",
- " this.root.append(titlebar);\n",
- " this.header = titletext[0];\n",
- "}\n",
- "\n",
- "\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_canvas = function() {\n",
- " var fig = this;\n",
- "\n",
- " var canvas_div = $('<div/>');\n",
- "\n",
- " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
- "\n",
- " function canvas_keyboard_event(event) {\n",
- " return fig.key_event(event, event['data']);\n",
- " }\n",
- "\n",
- " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
- " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
- " this.canvas_div = canvas_div\n",
- " this._canvas_extra_style(canvas_div)\n",
- " this.root.append(canvas_div);\n",
- "\n",
- " var canvas = $('<canvas/>');\n",
- " canvas.addClass('mpl-canvas');\n",
- " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
- "\n",
- " this.canvas = canvas[0];\n",
- " this.context = canvas[0].getContext(\"2d\");\n",
- "\n",
- " var rubberband = $('<canvas/>');\n",
- " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
- "\n",
- " var pass_mouse_events = true;\n",
- "\n",
- " canvas_div.resizable({\n",
- " start: function(event, ui) {\n",
- " pass_mouse_events = false;\n",
- " },\n",
- " resize: function(event, ui) {\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " stop: function(event, ui) {\n",
- " pass_mouse_events = true;\n",
- " fig.request_resize(ui.size.width, ui.size.height);\n",
- " },\n",
- " });\n",
- "\n",
- " function mouse_event_fn(event) {\n",
- " if (pass_mouse_events)\n",
- " return fig.mouse_event(event, event['data']);\n",
- " }\n",
- "\n",
- " rubberband.mousedown('button_press', mouse_event_fn);\n",
- " rubberband.mouseup('button_release', mouse_event_fn);\n",
- " // Throttle sequential mouse events to 1 every 20ms.\n",
- " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
- "\n",
- " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
- " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
- "\n",
- " canvas_div.on(\"wheel\", function (event) {\n",
- " event = event.originalEvent;\n",
- " event['data'] = 'scroll'\n",
- " if (event.deltaY < 0) {\n",
- " event.step = 1;\n",
- " } else {\n",
- " event.step = -1;\n",
- " }\n",
- " mouse_event_fn(event);\n",
- " });\n",
- "\n",
- " canvas_div.append(canvas);\n",
- " canvas_div.append(rubberband);\n",
- "\n",
- " this.rubberband = rubberband;\n",
- " this.rubberband_canvas = rubberband[0];\n",
- " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
- " this.rubberband_context.strokeStyle = \"#000000\";\n",
- "\n",
- " this._resize_canvas = function(width, height) {\n",
- " // Keep the size of the canvas, canvas container, and rubber band\n",
- " // canvas in synch.\n",
- " canvas_div.css('width', width)\n",
- " canvas_div.css('height', height)\n",
- "\n",
- " canvas.attr('width', width);\n",
- " canvas.attr('height', height);\n",
- "\n",
- " rubberband.attr('width', width);\n",
- " rubberband.attr('height', height);\n",
- " }\n",
- "\n",
- " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
- " // upon first draw.\n",
- " this._resize_canvas(600, 600);\n",
- "\n",
- " // Disable right mouse context menu.\n",
- " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
- " return false;\n",
- " });\n",
- "\n",
- " function set_focus () {\n",
- " canvas.focus();\n",
- " canvas_div.focus();\n",
- " }\n",
- "\n",
- " window.setTimeout(set_focus, 100);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items) {\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) {\n",
- " // put a spacer in here.\n",
- " continue;\n",
- " }\n",
- " var button = $('<button/>');\n",
- " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
- " 'ui-button-icon-only');\n",
- " button.attr('role', 'button');\n",
- " button.attr('aria-disabled', 'false');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- "\n",
- " var icon_img = $('<span/>');\n",
- " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
- " icon_img.addClass(image);\n",
- " icon_img.addClass('ui-corner-all');\n",
- "\n",
- " var tooltip_span = $('<span/>');\n",
- " tooltip_span.addClass('ui-button-text');\n",
- " tooltip_span.html(tooltip);\n",
- "\n",
- " button.append(icon_img);\n",
- " button.append(tooltip_span);\n",
- "\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " var fmt_picker_span = $('<span/>');\n",
- "\n",
- " var fmt_picker = $('<select/>');\n",
- " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
- " fmt_picker_span.append(fmt_picker);\n",
- " nav_element.append(fmt_picker_span);\n",
- " this.format_dropdown = fmt_picker[0];\n",
- "\n",
- " for (var ind in mpl.extensions) {\n",
- " var fmt = mpl.extensions[ind];\n",
- " var option = $(\n",
- " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
- " fmt_picker.append(option)\n",
- " }\n",
- "\n",
- " // Add hover states to the ui-buttons\n",
- " $( \".ui-button\" ).hover(\n",
- " function() { $(this).addClass(\"ui-state-hover\");},\n",
- " function() { $(this).removeClass(\"ui-state-hover\");}\n",
- " );\n",
- "\n",
- " var status_bar = $('<span class=\"mpl-message\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
- " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
- " // which will in turn request a refresh of the image.\n",
- " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_message = function(type, properties) {\n",
- " properties['type'] = type;\n",
- " properties['figure_id'] = this.id;\n",
- " this.ws.send(JSON.stringify(properties));\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.send_draw_message = function() {\n",
- " if (!this.waiting) {\n",
- " this.waiting = true;\n",
- " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
- " }\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " var format_dropdown = fig.format_dropdown;\n",
- " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
- " fig.ondownload(fig, format);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
- " var size = msg['size'];\n",
- " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
- " fig._resize_canvas(size[0], size[1]);\n",
- " fig.send_message(\"refresh\", {});\n",
- " };\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
- " var x0 = msg['x0'];\n",
- " var y0 = fig.canvas.height - msg['y0'];\n",
- " var x1 = msg['x1'];\n",
- " var y1 = fig.canvas.height - msg['y1'];\n",
- " x0 = Math.floor(x0) + 0.5;\n",
- " y0 = Math.floor(y0) + 0.5;\n",
- " x1 = Math.floor(x1) + 0.5;\n",
- " y1 = Math.floor(y1) + 0.5;\n",
- " var min_x = Math.min(x0, x1);\n",
- " var min_y = Math.min(y0, y1);\n",
- " var width = Math.abs(x1 - x0);\n",
- " var height = Math.abs(y1 - y0);\n",
- "\n",
- " fig.rubberband_context.clearRect(\n",
- " 0, 0, fig.canvas.width, fig.canvas.height);\n",
- "\n",
- " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
- " // Updates the figure title.\n",
- " fig.header.textContent = msg['label'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
- " var cursor = msg['cursor'];\n",
- " switch(cursor)\n",
- " {\n",
- " case 0:\n",
- " cursor = 'pointer';\n",
- " break;\n",
- " case 1:\n",
- " cursor = 'default';\n",
- " break;\n",
- " case 2:\n",
- " cursor = 'crosshair';\n",
- " break;\n",
- " case 3:\n",
- " cursor = 'move';\n",
- " break;\n",
- " }\n",
- " fig.rubberband_canvas.style.cursor = cursor;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
- " fig.message.textContent = msg['message'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
- " // Request the server to send over a new figure.\n",
- " fig.send_draw_message();\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
- " fig.image_mode = msg['mode'];\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Called whenever the canvas gets updated.\n",
- " this.send_message(\"ack\", {});\n",
- "}\n",
- "\n",
- "// A function to construct a web socket function for onmessage handling.\n",
- "// Called in the figure constructor.\n",
- "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
- " return function socket_on_message(evt) {\n",
- " if (evt.data instanceof Blob) {\n",
- " /* FIXME: We get \"Resource interpreted as Image but\n",
- " * transferred with MIME type text/plain:\" errors on\n",
- " * Chrome. But how to set the MIME type? It doesn't seem\n",
- " * to be part of the websocket stream */\n",
- " evt.data.type = \"image/png\";\n",
- "\n",
- " /* Free the memory for the previous frames */\n",
- " if (fig.imageObj.src) {\n",
- " (window.URL || window.webkitURL).revokeObjectURL(\n",
- " fig.imageObj.src);\n",
- " }\n",
- "\n",
- " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
- " evt.data);\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
- " fig.imageObj.src = evt.data;\n",
- " fig.updated_canvas_event();\n",
- " fig.waiting = false;\n",
- " return;\n",
- " }\n",
- "\n",
- " var msg = JSON.parse(evt.data);\n",
- " var msg_type = msg['type'];\n",
- "\n",
- " // Call the \"handle_{type}\" callback, which takes\n",
- " // the figure and JSON message as its only arguments.\n",
- " try {\n",
- " var callback = fig[\"handle_\" + msg_type];\n",
- " } catch (e) {\n",
- " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
- " return;\n",
- " }\n",
- "\n",
- " if (callback) {\n",
- " try {\n",
- " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
- " callback(fig, msg);\n",
- " } catch (e) {\n",
- " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
- " }\n",
- " }\n",
- " };\n",
- "}\n",
- "\n",
- "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
- "mpl.findpos = function(e) {\n",
- " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
- " var targ;\n",
- " if (!e)\n",
- " e = window.event;\n",
- " if (e.target)\n",
- " targ = e.target;\n",
- " else if (e.srcElement)\n",
- " targ = e.srcElement;\n",
- " if (targ.nodeType == 3) // defeat Safari bug\n",
- " targ = targ.parentNode;\n",
- "\n",
- " // jQuery normalizes the pageX and pageY\n",
- " // pageX,Y are the mouse positions relative to the document\n",
- " // offset() returns the position of the element relative to the document\n",
- " var x = e.pageX - $(targ).offset().left;\n",
- " var y = e.pageY - $(targ).offset().top;\n",
- "\n",
- " return {\"x\": x, \"y\": y};\n",
- "};\n",
- "\n",
- "/*\n",
- " * return a copy of an object with only non-object keys\n",
- " * we need this to avoid circular references\n",
- " * http://stackoverflow.com/a/24161582/3208463\n",
- " */\n",
- "function simpleKeys (original) {\n",
- " return Object.keys(original).reduce(function (obj, key) {\n",
- " if (typeof original[key] !== 'object')\n",
- " obj[key] = original[key]\n",
- " return obj;\n",
- " }, {});\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.mouse_event = function(event, name) {\n",
- " var canvas_pos = mpl.findpos(event)\n",
- "\n",
- " if (name === 'button_press')\n",
- " {\n",
- " this.canvas.focus();\n",
- " this.canvas_div.focus();\n",
- " }\n",
- "\n",
- " var x = canvas_pos.x;\n",
- " var y = canvas_pos.y;\n",
- "\n",
- " this.send_message(name, {x: x, y: y, button: event.button,\n",
- " step: event.step,\n",
- " guiEvent: simpleKeys(event)});\n",
- "\n",
- " /* This prevents the web browser from automatically changing to\n",
- " * the text insertion cursor when the button is pressed. We want\n",
- " * to control all of the cursor setting manually through the\n",
- " * 'cursor' event from matplotlib */\n",
- " event.preventDefault();\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " // Handle any extra behaviour associated with a key event\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.key_event = function(event, name) {\n",
- "\n",
- " // Prevent repeat events\n",
- " if (name == 'key_press')\n",
- " {\n",
- " if (event.which === this._key)\n",
- " return;\n",
- " else\n",
- " this._key = event.which;\n",
- " }\n",
- " if (name == 'key_release')\n",
- " this._key = null;\n",
- "\n",
- " var value = '';\n",
- " if (event.ctrlKey && event.which != 17)\n",
- " value += \"ctrl+\";\n",
- " if (event.altKey && event.which != 18)\n",
- " value += \"alt+\";\n",
- " if (event.shiftKey && event.which != 16)\n",
- " value += \"shift+\";\n",
- "\n",
- " value += 'k';\n",
- " value += event.which.toString();\n",
- "\n",
- " this._key_event_extra(event, name);\n",
- "\n",
- " this.send_message(name, {key: value,\n",
- " guiEvent: simpleKeys(event)});\n",
- " return false;\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
- " if (name == 'download') {\n",
- " this.handle_save(this, null);\n",
- " } else {\n",
- " this.send_message(\"toolbar_button\", {name: name});\n",
- " }\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
- " this.message.textContent = tooltip;\n",
- "};\n",
- "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
- "\n",
- "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
- "\n",
- "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
- " // Create a \"websocket\"-like object which calls the given IPython comm\n",
- " // object with the appropriate methods. Currently this is a non binary\n",
- " // socket, so there is still some room for performance tuning.\n",
- " var ws = {};\n",
- "\n",
- " ws.close = function() {\n",
- " comm.close()\n",
- " };\n",
- " ws.send = function(m) {\n",
- " //console.log('sending', m);\n",
- " comm.send(m);\n",
- " };\n",
- " // Register the callback with on_msg.\n",
- " comm.on_msg(function(msg) {\n",
- " //console.log('receiving', msg['content']['data'], msg);\n",
- " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
- " ws.onmessage(msg['content']['data'])\n",
- " });\n",
- " return ws;\n",
- "}\n",
- "\n",
- "mpl.mpl_figure_comm = function(comm, msg) {\n",
- " // This is the function which gets called when the mpl process\n",
- " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
- "\n",
- " var id = msg.content.data.id;\n",
- " // Get hold of the div created by the display call when the Comm\n",
- " // socket was opened in Python.\n",
- " var element = $(\"#\" + id);\n",
- " var ws_proxy = comm_websocket_adapter(comm)\n",
- "\n",
- " function ondownload(figure, format) {\n",
- " window.open(figure.imageObj.src);\n",
- " }\n",
- "\n",
- " var fig = new mpl.figure(id, ws_proxy,\n",
- " ondownload,\n",
- " element.get(0));\n",
- "\n",
- " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
- " // web socket which is closed, not our websocket->open comm proxy.\n",
- " ws_proxy.onopen();\n",
- "\n",
- " fig.parent_element = element.get(0);\n",
- " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
- " if (!fig.cell_info) {\n",
- " console.error(\"Failed to find cell for figure\", id, fig);\n",
- " return;\n",
- " }\n",
- "\n",
- " var output_index = fig.cell_info[2]\n",
- " var cell = fig.cell_info[0];\n",
- "\n",
- "};\n",
- "\n",
- "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
- " fig.root.unbind('remove')\n",
- "\n",
- " // Update the output cell to use the data from the current canvas.\n",
- " fig.push_to_output();\n",
- " var dataURL = fig.canvas.toDataURL();\n",
- " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
- " // the notebook keyboard shortcuts fail.\n",
- " IPython.keyboard_manager.enable()\n",
- " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
- " fig.close_ws(fig, msg);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.close_ws = function(fig, msg){\n",
- " fig.send_message('closing', msg);\n",
- " // fig.ws.close()\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
- " // Turn the data on the canvas into data in the output cell.\n",
- " var dataURL = this.canvas.toDataURL();\n",
- " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.updated_canvas_event = function() {\n",
- " // Tell IPython that the notebook contents must change.\n",
- " IPython.notebook.set_dirty(true);\n",
- " this.send_message(\"ack\", {});\n",
- " var fig = this;\n",
- " // Wait a second, then push the new image to the DOM so\n",
- " // that it is saved nicely (might be nice to debounce this).\n",
- " setTimeout(function () { fig.push_to_output() }, 1000);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._init_toolbar = function() {\n",
- " var fig = this;\n",
- "\n",
- " var nav_element = $('<div/>')\n",
- " nav_element.attr('style', 'width: 100%');\n",
- " this.root.append(nav_element);\n",
- "\n",
- " // Define a callback function for later on.\n",
- " function toolbar_event(event) {\n",
- " return fig.toolbar_button_onclick(event['data']);\n",
- " }\n",
- " function toolbar_mouse_event(event) {\n",
- " return fig.toolbar_button_onmouseover(event['data']);\n",
- " }\n",
- "\n",
- " for(var toolbar_ind in mpl.toolbar_items){\n",
- " var name = mpl.toolbar_items[toolbar_ind][0];\n",
- " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
- " var image = mpl.toolbar_items[toolbar_ind][2];\n",
- " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
- "\n",
- " if (!name) { continue; };\n",
- "\n",
- " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
- " button.click(method_name, toolbar_event);\n",
- " button.mouseover(tooltip, toolbar_mouse_event);\n",
- " nav_element.append(button);\n",
- " }\n",
- "\n",
- " // Add the status bar.\n",
- " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
- " nav_element.append(status_bar);\n",
- " this.message = status_bar[0];\n",
- "\n",
- " // Add the close button to the window.\n",
- " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
- " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
- " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
- " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
- " buttongrp.append(button);\n",
- " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
- " titlebar.prepend(buttongrp);\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._root_extra_style = function(el){\n",
- " var fig = this\n",
- " el.on(\"remove\", function(){\n",
- "\tfig.close_ws(fig, {});\n",
- " });\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._canvas_extra_style = function(el){\n",
- " // this is important to make the div 'focusable\n",
- " el.attr('tabindex', 0)\n",
- " // reach out to IPython and tell the keyboard manager to turn it's self\n",
- " // off when our div gets focus\n",
- "\n",
- " // location in version 3\n",
- " if (IPython.notebook.keyboard_manager) {\n",
- " IPython.notebook.keyboard_manager.register_events(el);\n",
- " }\n",
- " else {\n",
- " // location in version 2\n",
- " IPython.keyboard_manager.register_events(el);\n",
- " }\n",
- "\n",
- "}\n",
- "\n",
- "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
- " var manager = IPython.notebook.keyboard_manager;\n",
- " if (!manager)\n",
- " manager = IPython.keyboard_manager;\n",
- "\n",
- " // Check for shift+enter\n",
- " if (event.shiftKey && event.which == 13) {\n",
- " this.canvas_div.blur();\n",
- " event.shiftKey = false;\n",
- " // Send a \"J\" for go to next cell\n",
- " event.which = 74;\n",
- " event.keyCode = 74;\n",
- " manager.command_mode();\n",
- " manager.handle_keydown(event);\n",
- " }\n",
- "}\n",
- "\n",
- "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
- " fig.ondownload(fig, null);\n",
- "}\n",
- "\n",
- "\n",
- "mpl.find_output_cell = function(html_output) {\n",
- " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
- " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
- " // IPython event is triggered only after the cells have been serialised, which for\n",
- " // our purposes (turning an active figure into a static one), is too late.\n",
- " var cells = IPython.notebook.get_cells();\n",
- " var ncells = cells.length;\n",
- " for (var i=0; i<ncells; i++) {\n",
- " var cell = cells[i];\n",
- " if (cell.cell_type === 'code'){\n",
- " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
- " var data = cell.output_area.outputs[j];\n",
- " if (data.data) {\n",
- " // IPython >= 3 moved mimebundle to data attribute of output\n",
- " data = data.data;\n",
- " }\n",
- " if (data['text/html'] == html_output) {\n",
- " return [cell, data, j];\n",
- " }\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n",
- "\n",
- "// Register the function which deals with the matplotlib target/channel.\n",
- "// The kernel may be null if the page has been refreshed.\n",
- "if (IPython.notebook.kernel != null) {\n",
- " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
- "}\n"
- ],
- "text/plain": [
- "<IPython.core.display.Javascript object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAADwCAYAAAApZFODAAAgAElEQVR4nOydd3gc13mvj+ObxHEc9UJRNU5iy3aKi7oodoIEiV62TtuOtugAAZAE2ItIiSqukizJsmTJtsTexAo2EL0SAIkOsKi4JDe5cZElv/eP2V0sQEimGSmU5fM+z3l2dzCzO3w45/v95jvfOSOERCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSieSTyO+FEJWXcNy00LFTP9zTGcPzQojBj/D7JZLxXCmEqBJCfPV/8B1VQojpH8rZjOVS+6pEcjE8L8bG29uFec1pl+VsLo6lwjxHiUQi+V/nHiHE5Es47nOhYz/34Z7OGJ4TQgx8hN8vkYwnbBrc/4Pv+L0QYvmHczoXfK800JKPivHx9q+EGeOvvTync1FUCSHeu9wnIZFI/rz4q8t9AheBNNCSD4uLvd7vENJAS/48+VOMt9JASySS/xHzhBA1QohfCSH+QwixWQjxhai/Vwshjgoh4oQQzUKIXwsh8kJ/m0iU7UKI7tB+bUKIeCHEISHEwah9JirhCP/OLCFEkxDiv4UQHUKIxHHf/w9CiBeEGax/JYToF0J8Wwhx1bj9/hQDuuTys1SY1+ZXhBB7hBD/Jcw+IYQQBUKIU0KI3wohzgshnhRC/F3ob+Hs83uh1/D78BD2HCHEztBx4Wu7UAjxF1G/PdHx0f1rmhBivxDiP4UQ/y90fl8Zd/5/IYRYGfU7B4UQXxbSQEsujUuNt+9XwpEnzFKPXwshaoUQ94c+Pxu1jxE69l4hxItCiP8rhDgnhHhcXHgz+zdCiHWh3/5t6LVCCPGpcft9TZj68mshxBkhxGJh9nVpoCUSySUxTwjxrjCFeIEQwiaE6BVCvC2EuCm0zyEhxFvCDJyGME3vP4f+Nl6U5wgzIL0mhIgVQqih486JCw30e2KsgT4kTNHvEKYJjxFC7BVCvCOE+HzUfg8JIVYJ09BPEWaAPiWEOD7u3yYNtORSqBLmdd0rhCgTZj3yVCHE6tD2x4V5necJ01wfDh33V0KIpNA+K4Q5fB09hB0QpgGfK8zrv0iYxmB11G/fEzr++1HHh0ukFgghfieE2CTMm9J4YV7zvxRC3Bz1HSuE2bfWCSFmh/4NfeJCMy6RXAyXGm8nMtDe0LbvCbMPZQjTPP9SjDXQemi/08I0uTOFEIuEqVVVUft9Wpim+GdCiKAQYoYQolyYJnl91H7XCiH+XQjRKYRIE0IkhI4bEdJASySSS6RRmEEqOgt2hzBN64bQ50PCDFz/MsHx4w10jRCifdw+XwvtdzEG+rdirFm+PvTbZR/wb/i0EOLB0Pf9W9R2aaAll0J4WDcnatvVwhTl74/b1ynMazsu9PmPqYH+tDAzZb8Yt/39Sjh6hXlDGc3nhGkeHg19vkqYpv5b4/YrFTIDLflwuNh4O95Af0qYhnX7uO9LDu03kYEef71uF6Z5D6OGzuPBcftVCCF+I4S4LvR5Vehz9I3mZ4XZd6SBlkgkfzSfFWbwmEisDwkhGqLe973Pd0QHub8QpgGummC/fnFxBvrkBMeeF+aQYZi/FGaA7BbmkGL0cLclaj9poCWXQthA3xK1LTa0bea4fT8tzJvNcLbrgwz0JGFm3oZCx0RftzdE7TeRgf7H0HYj9Jvh9n+EENuEeSMshNmf3hMXruJxm5AGWnJpXGq8HW+gbw191sd9/18Isz+MN9DvCSHuGrfv6tA5hHkx9JufHtfuFmNvbA8Is0RwPM8KaaAlEsklcLMwg0zmBH97WZimVwjT2B59n++IFuUbPuD7asTFGegjExw7vj7uEWFmE8qFaRS+Icw66fHDhdJASy6FsIH+dNQ2Z2jblybY/w0xmpl+PwP9KWHekJ4J/e1BIcTXxWi5xW1R+05koB8QF9ZHRxuZ8HVueZ/z/GshDbTk0rjUeDveQIfLk2In+I3zYmID/flx+42f9LdXXNgfovtF2Kx3CSF+PMHvrhHSQEskkksgnIFeNsHfDgkh6qPeT2RshfjwM9AXY6DPCjOTF810IQ205MMhLNLRZU2xwry+ZozbN5yBfjj0+f0MdDiDbB+3fZm4OAP9xdD2UmEa7/EtPCfhodB+08cdLzPQkkvlUuPth5GB/kMG+mVhjo5+TUzcL64J7fd+GejnhDTQEonkEqkX5t159Izl24VphMOm4GINtBDmxJLxNdDfEBdfA30xBvqX4sIazxfE2BUPhJAGWnJpTGSgwzXQ441EODM9P/R5kjCv9exx+/1raHt61La/FKOT+6IN9G/E2AlQYQaEED/4A+d+pTBroL89bvtCIQ205NK41Hj7fjXQO8Z9V6qYuAb6Ygy0Lkyt+oL4YFaKC2ug/1bIGmiJRPI/YK4wZ/bvEma9mF2YkwrfFELcGNrnjzHQs0PbNgsza6eJ0VU49kftN9EydhdroH8kzCW8MoU5k/s7wpxgJQ205MNgIgMthDkR6T0hxEYxugrHf4qxma1PCVOUjwrz2v6GMLNgfynM67hHmIYhUZjXe4+40EA3C/Omdnbo+PBqOLHCNAuvCCFSQt+fHjqf/Kjjlwtz4u3Doe8oF3IVDsmlc6nxdqJVODyhbU8Lc5WlTGHOCfilEOKZqP0u1kD/H2H2o7PCXOFmpjBXlsoRQrwuhPhMaL9rQ7/RJcwypyQhxDEhV+GQSCT/Q2KEmTn+b2Eu9bNJCPFPUX8/JEaX6hrPe0KIJeO22cToOtDhdZybhbm0XZj3y0BP9DsDYuzqB9cKM6j/ItReEKbRmCig9wuJ5I+jSpgGdLyBFsI0zd3CzGadE0I8IS58mmaCMCfD/laMvSb/VZg3iP9PmMK9VJilHuMN9P3CrJf+lbjQ9N4rzEmDvwj9fUCYfeHeqH3+QpgmOrwO9AEhxJ1i4r4qkfwhLjXe3j7BPkIIkSvMm8lfCXME9AFhmttHovb5IAP97rhtfyXMPtIlTM35uRCiTpjXenQf/qow9eVXwpyLsEjIB6lIJJKPObcIM7BVXO4TkUgkEsnHivCKGY7LfSISieSPY5kwM0n/Jcyh2PFP9ZL8cXxGmPWX4SFmlzAzAz8ToyUhko83sk9IJGORfeLD4Q5h1vcnCHMiYpYws8G9YrTcQiKR/AlQIoQYFuZjbv9amGtMnhXm6hSSS+MvhVkCck6Yw9y/EGY99Jcv50lJLhrZJySSscg+8eFxoxBitzDn2Pw29PpDMXbNdYlE8ifAgBj7tLFPC/MR1s7LczoSyWVH9gmJZCyyT0gkEkkUVwiz7urecdtfF6OPsJZI/pyQfUIiGYvsExKJRDKOW4QZGL84bvsrQoinxm37lDDXj7xCNtk+Ju1mMXbt7g8D2Sdk+1Nusk/IJtvY9lH0CYlEXCEuPrNwsxAC2WT7mLXohwJ8GMg+IdufepN9QjbZxrYPu09IJEKIiWvb3hIX1rZdIYTgRImHjsUBOpb4aCk36Cjz0x5uC320LfTRXhagtcxPz6ogveuCDDyax9CGPIbWBeldGqCj0MuBNBs/nm1h4zdieeKueTz1YDzPz0zipZhUXpq1gJdmLeDl2fG8MieBH82O48WZ8cTe+nl+MjeJVxcksi05nT3paeyzWthnTWefNZ291lQOOW1UKzaqFXvovZ0jmoNDTiuHVTtHNCeHVQeHVTvHDAfHXc6oVydHdYXDqoNqxT76qitUa07Sv3wnh3WFw7rCAcPgiNdDta5wSLFSrVg4YDg45FE5pDs4pNiodto4pFg4ajipVm1UqzaOGg6qNQfVupNDmoN9DgsHFBuHNIX9djsHnM5IO6goZlNVDigKqXfeyT6bjT0WGzvTrWxKtvHjeAs/mJvCD2fGsDkhmQMuhZpcL3XFAVqrgpxcnk/rkixaywI0l3poKvHSWpZBc5mP9sUB2hZ5aKtw015uttYyg44KD61lBi0Vbloq3LQu8tC22Ivz7q9QU6LT+niQ86+v5WfHn+Dfj3+L/2hez38c3kjbhoU8EzuPH85N5ieJqbyaks6mNAtbLBa22WxssTrYatPYYrGxw2JlZ1oqu60Wdlot7LJZ2Wm1sMdhZ4fFwh6HjdeddnZY0nndaWe3zULqF/6R/YqNlxNTybvjwXBgvOJy94k/t/a1SZPYZ3dw2HCReuedHNJ0DigqB1WN/Q47+20WtlvS2GaxsCXVwqvxafxkQTqvzLPz8lwLL85O59U4O3tVnZpsHw3F2bSW53KyMp+OZQV0rMinc1khnZX5tC/OorMqi86lATqrAnQu9tFR4eHkIi8dFR6Uu7/MyYoAJ8szOF2RTVdZBh0lfloLPTTnGTTlGjQGNRpzdBqyDU7kKNRlaTRmqjQEHNRnOjlRYGfo2VL+74Gn+PfaH/J20/P8suMVfj74Im/s20jClf9A3BX3kXD1AyRfPRPlhvtRb3wA/aYpfOmzN2G9+i4s1z+I85ZZWG6cStLV92KdNI3sf0nG+48LSL/6Lp5K8VFfWUZLZd7/xv/RJ7pPPD8jkZdmJ/PSrAW8OHM+P5odxytzEnhpVhwvzogbpxNp7E5LY5/Fwl5LGnstaeyzpnLQaaHaaaVasXHIYb4eVh0cclg5HIr9h1U7h1U7R3U7xw0nx/SQTuhOjmpOjqj2yHGHFZupE6qD9C/dyWFNoVpTOGDoVHtcHNIcHHRaOOS0cEC3c8ithLZZqXZaOaRYOaI7qFZtHFJs5nvNQbVm6sR+u4UDThsHVSf77DYOOB0ccISa08kBp6kVB5xOUr/4RfbZbOy2WNmRZmFTkoVX4tJ5YW4Kd159zWWPH5epfRR9QiIRxcJ8CtJXhBB/I8wnjZ0RF86uvkIIQediH0PLMxlekcXgsgyGV2RF2uCyDAaXZdC7LJPhNbm8+WgRP3+yiF98s5D/+GYhv3g0lzdXBTidr9OkaGyfY+Hp++L5wYOJvDw1kS2zUtk6O5mtsSlsjU1hyzzz/WtzEtg8L46EOz7PrsRUdielsT/dzmGbwjGHQo3q4IRmo85lo16z02Q4aXGrkdfo1mQ4aXYptHl1Wj0a7T6DNq9OZ4aHNq8eaS1ulQ6/ixa3RpvHTYvLQPnKV2jzuGnzuGn2ma3J66LBrdPg1mn0qJFW73LS6FFp8ho0eV00eV00eoz3bQ1unXqXRr1Lo85QIy16m/3LX6LOUDmkOjjgdLDX6mR7opVtCTZei7WyJc7CYc2gKcfH6fJc+pYWcWZNGcOrixhclUv/ikz6lgYYWZnNmVU5jKzMZmRl9gX/f+HWvyKT3mUB+pZn0Lc8A9f9/0pfZZC2VVmcf20lv2n4Lr9t+w7vdn6X33c/w39UP0F1eYCX5iSzJc7K9kQ7u9PCNwU2DqlODqkKh1QlIgLVisIhm52jisoxVYu047qTEy6VI4qN47qTpoAH+1e+wo/jbOTfei+WK77xUQbGP6pP/Dm0uf/weRp8HurcHhp9fk4YLhq8Puxf+Wfq3R7qXRq1uhK5ZsMG4pCisc/iZG+qlZ2JqWxPtLJ5vp1NsQ52pdipC3jpLMqnf3Epg8vLGFi9kP61xQyuXcjwylIGVxYytKqA4TV5DK3OZmRVDsMrshhYGmBoeRbu+/6NwcogI5W5jFTmMrwkyOCibPrKMugry+RUUYDe0iy6Cnx0FvjoKPDRVpjFqbwMuvNcnAxqdOSotBRb+MWzlfz26JP8puMZfje0nd8P/pDmh3OwXXUPydc+RPKN96BcOxPXDVPwTp6Ge9JDfOkzN2G/8i48t85Cv2UO9hum4Zw0A9dtc1l4l0rwy0kUfjmG/cFiWioKaV9YSPpXv/anaBY+Fn3ipr/5HFtmprBldjJbonRiy7zkiE7E3/737ExIYXdSGvvSbBy2Khy1KxxX7NSoNmoNK/WanUbdQbNL+YM60eJWI7pwMuC+QCfafcaEOtHqcdPsNXWi0WNEYnlYIxrcyh+tE+Hv+CCdsH35Tmr1UZ143eKI6MSmkE5Uawbz/ukfLntc+V9s0kBLPjKWCiHeEObTwarFxOt7XrSBPrOugPMbinn7sRJ+/mQRbz2Wy88fy+NnG3I4t9xHT75Og0NhR4x1QgO9fUEa2xeksSMunU0xiWyem8RrMfOJv/3v2RGfzO6kNA78LxroFpdBh8/7vgY63Fr8RqSFA2OL302L30OL33PRBjpsyMdvc3zlyzS4dQ7rCodUlf12lV0pDnYmO9m6wOC1eTb2pOnUeP10FRdwekkh/csKObuulLPrihheE2RwZRbn1uRybk0ub6zL50zIkFysge5dlkfnIh99j+Tw3/se4b+an+RXJ5/ind7v87uOZzj3o1VsdiSxJSGdHUl29qQ72Ge3s9eWzkHljzfQtW6NRr+bGl1lwe1fIHjHdOy3xRF//bSPOjBedJ/4pLZZf38H2ywpNAU81HsN6jwuThgu6twe6t0eanUV25fuHCPq5o2kQZ3L4Jjq4ohT54DFwb40G3tTrexIsrJlgY1X51rZk+bmmCtAc04W3aUFDFQupG95CQOrShlYvZAzayoYWlXM0KoCBlfmMrAyi8GVWQwvDzK8PJ/Bpbl47vsqg1WmeR5clM1AeQbDi3wMlLnpLfXRXeinM9/LyTwPJ3PddAQNThW4OFXg5lSBm+58F115Br35bjqCds49VgbHn4Xe7/Ney2rWfuMBlKvnknbdXBzX34vrhgfx3zKDwK0zcU96iDv/ehKem6aSeXsM1usewnHjdCzXTiHri0mUfN2J/7bZfD85k/rKSlpXLOZQXg7NSyr/VM3CUnGZ+8TLDyWweWYKW2cns21+Ktvmp7J9QRqbYhLZFJPIq3Niibv9johO7E+zUx1loE9oH2SglVAzdaLJ5fyjDHSzodPu9YzqhNtNk9dNk88VpRMGzT491LSITjT7XBFN+UCdcGnUjetv9eO22b/yJepdYZ1Q2G9X2JlsZ0eSgy0L9JBOaBGdOJrvZ96X//Gyx5uPuEkDLbmsXCGE4OQiL8MrsjizKoczq3I4tyY3YsKGlmea2zbk8saj+bz9eBFvPVbIG4/mc3ZjAec25DKy2Edv0EWt7uEns9P5/gNxPHd/LC9Nmc/2mBQ2z5jPtrnJ7IhNZWtMUqRti0ml6mv3syM2mT0JSexPSeFoehon7DbqFSd1Tgd1TgcN4wy0aZSNiPFtcRk06RptHhcdfhftPoNWj8bJgJsOvysSIDv8rkhrNnTaPG6+Nz+WNo+bDp+XNo+bzoCfVreLNo+bRs3MBLT4PZGMQKPHoC3DR3umn/ZMfyRb3egxLgiWTS6dVrf5W82GToOq0GzotLgMWlzm+T82fTrNhsFxzc1RxaDarrI31coBiyNkTOy8Ns9BteKnoyCXrvICequKGV5VGjLRxQytzmVkbS5vPFLEyFrz/cjqYCQrHTbS/VV+hpZnMrg0i/7KHPqXBHnOkURfpZ/eigzaK9y8/coSflP3ML9vewlO/YDfn/wevz30BO2rc3k5zs2rSW5eS05nt9XGXoubfTaF/Q77GCN9QFPYZ6gccukc0TRO6Aa1LjcNAY06NZV2r0qjL5NnZyQx58p/xXntQ1hvmEr8dfd9HALjJ9JAF9zzddqz/DQFPNS6tciNTL3XoNbQx2S/Ho+ZNSrmLo1Wj5t6xUmTrkWu06OKwQGLg70pDrYmJLElLpXN823sTnFTrfioz8zkZF6QvpJS+pcsZGD5QvpXltK/vJiB5YUMrSpkYHkeAytyGViRy+BSsw1UBXleSWRwaS7nl+VyriqDoQovg+Ue+he66CnS6SnJpDPPNMongxqduTrd+aMGuqfIS3e+l84cF8NFGXSWGPSt88CBJ+lZ7cV51T+Tds1Dpjm+5gE8Nz5Exi3T8d8yA/Xa+5n2t1/CdfMcMv5+Po4bp2O/YRqeO2IJfjmVsrt0qr5qYZMvnxNVi2ldVcbBAh/da6o+yWbhI+0TL02Zz7Y5yWyesYBtc5PZPi+FbXOT2TInkS0xiWyLSaHya/ezIzYpohNH0tOosVmpczqoddqpc9ipV0cNdKPuoNWj0eoxY3Cr20WLS6dJV2nzGBPqRIffRZtXp91nhJorpCtuvhc7jzaPm3avh1aPi5N+X5ROKNQZCs0+d0gnVBo9Oi1+D20ZPtoyfGNGNaOz0g1unUaXqQkRnVAUmkLvmw3z/B+fMZ0mQ+e46uaIonPIpvB6ioX96fbIDexr8xwccvppL8ilqyyf3qoihleVsjR+5mWPPx9RkwZaclm5aAP95sYC3txYwBuP5vPGo/mc25DL8PpcRtZlM7LEx2CBj7aMHHYlGRED/fLUOLbMSmTb7Hh2xKayfV7KBQZ6y5zEMQb6uNXCMUs6xyzpExrocJvIQLe6jUgWuslwRjLRZjZBHZNlCAfVDp83YmbbPO5IUGz3emh1RwU5jxEx0PUujWafm86cTNoyfLT4PRHz3Oxz0xrw0uDWqVOdkUx3tIFu0jWadC2ybSJjsjspbYyB3pOm0ZgVmNBAn1mbz5l1eZxbX8D5DYVme7gg8n849v8zg4GqzIiB7l+ST09lNr0VQXoXB2lf5uJ3e9fwbsNjvNf5Xd7p/D7vNn+ft7euYqtq46fJ6byWbGNnmsKeNDVUp+ekWlNHM9Gqk726wmGPi2OGQZ3LTb3bQ7Pfw8mMAHWuAE9NSyFr8v3YbpiK7cZpqJNnkXrdR1oD/Uf1iU9Ce3j2dNozPTR5tVBGzKAp4KHB56IuUqJkXJhtdus0RYl6k65Rr5jXco3q4phqcMSpcUzxcNDiYneCne1JKWyNt7MtXuWARafOyKI9M5fuvEJ6y4vpXVJC3/ISepYV0be0lIHlJQwsL2RgRT4DK3Lpq8yhvzKHoUqzXGOkMpeRJTmMLPYzvMjHYLmHvpKQSY4yy115RsQ8d+W5OZXvo6cwwKl8H33FmfQUBuivyGRgSYA3VhWy8a44jGtmknL1Q9iun47juim4J03DPWkKnlvnoN04A9vVD6LdOAPX5Nk4rp+KMnkGni8mkflvKgvvUvlWrJ9deaUcr6zgRGUuRyuyaH9kCbP+5c5Pqln4yPrEN665kZenxrF5ZgLbZsezfV5KRCe2zEkc1YnZiWMM9LEJdCLaQDe7lJBW6KMjjKFrucWtT6gT4eyzabxN8x1OdrR7PbS4jCgzPlZ/Gt0hfQhlj8O60eR1cTI7g7YMX2R0M1on6l0ataqTllCmO1oTGjWVRk2lWTe3NWoaxzQXRxWDI06d/el2dielsT3JwuaITqg0ZvnpDBnooZWjOjGyNo/vOOdf9rj0ITZpoCWXlYs20G8/XsSboYzzuQ25nHk4h/41WQytzuTMEj/DhX6avBlsmmePGOgfT0/gtelx7IhJZPu8FLbMSYwEyO3zUiY00AeTkyJZ6IkMdKtHCwVH/QID3eI2g2KLW41kIMLHjDfg4ePaPG7z2FBwbNRUWt0u6hWnaXhDWYVmnzsSGFsDXpp97kiAHJ+Bjnx2G2YW2+kYY6AbVCUUENXI5+gMdDgwRhvobQk2jnuMCQ302YcLOPuwaaLDGegzoZKOwWUZDC3PZGBpgP4qP4PLMuhbEogY6L4lBXRXFtBbVsjpohxOLnTx1lMF/LqmknfanuRXnc/zm67neKf9m4x8ayE/TVvA5hSF7Skau1Jt7E5PY48lnb02a8RA71UcvK45OerzcNxtmudGr482b4A2XzbPT03Af+3dqDfOJnnSVNQ75mK97iEs1zzwcQiMf/IG+vm4BXT4vbT6XbQGXLT4XdQZDlr8E9diNrh16lwaDVE3dY2aGhHx8PXa4jKo11VqDJUjTo1qm0a1zcW+VI1dSRZ2xVvYEZfO68kOjik+mnw5dGTlcrqwiFMVhZxeUsipqgJ6KovprSqib2mBaaCX5TIQqnMeWpzD0OKcSM3zYJmH/oUB+kr89Bb7OF3oiZhns1zDTVeuh65cD915XnoKAxHj3FecSW9JFkMV2Zyv9DJQXkje5HuwXBVD6rUzcF4/De26+/HfMgPXjVPw3DQDy5X3Y9w0i8zPx2G/Zopppm+egvsLC8j+uoNFUxV+pOdxonIp9Suq2F+SR8u6JXQ/sYKTGz/SLPQnsk88d/88fjwtnlenx7E9Sie2zU2OtK1zUiIGendCEvuSkyM6UWOzUuuwR3SiUXfQZDhDMV+h2aVFTG/EQLt0szzDpdCohTLVbo1Wl0ZzqBzQ1AmNNq9pvNvcbpo0jRZDp9Vl0KiF+oPioEF10ug2qNMVmtwGdSEj3eL3RPTh/XQinIFu1NTIKE/4NdzvonXjmOriqKKHdMIRMtDpbF5g47V5drYl2DnuddNZmkdvZTFDK0sZWVvKmXVFnF1n6sTIWlMnPqr/0//FJg205LIyxkCfXR3kzKoczq40jfTQ6hz61+Qw/EgB5zfm8ObGIG9uzAt1wnzOrA7y5to8ziz10F/sokl1sm1WIs/dHctz98TwyrR4Xp2dwJa5Ceycn8buOAs7YlNHh+dmJ7M1JoldC1J5PTGZfcnJHElP47jVwgm7jRN2mxk8QjVtDZo9kl1o0JwRAxrOEkS3cNDp8Hro0gxOagYdLhcdXg8dAR+dGQE6fV46DIM2h0Kb3Umb3Uarw0aT00qjYqNRN4NjdCBrUJUx9czhWujoDHQkm6erY8xyndMxxpDUOR1mNtrQOK6rHFN1Djt0jjg87ElysjUxic0L0nhtnlkuccIb4GR+Ln2LShhcUcbgmjKG1i9k5OEKzq4tZ2RNMSNrCkwDvTaHM6vMuvbh5TkML8+L1JgOVAUZXJpLf2UOvYuz6F0a5HRlNnFf80gAACAASURBVF2LMuisCNBTlcPPti3n1/Xf5tcdz/BO93P8ru0ZfrV3I/vyVH4yP42tCxzsSLNwQHNwWNc4rGsRA31Q1TiouTmquzmuKTR7DLoy/bR6fPxgehqea+5BvXk2cdfcj+Oqu9Guux/7lXdhTH7o4xAY/yQN9GtOC/WZHpoCZl1+i8dFo0elLcNFo0f/wBrMRo8RGXnp8Hkj12i0iIdvApsNnRMunWOqxiGLk2qrzp4Uld1JTnYn2tg2P5XdiTaqbS6aPDm0+LM5GcyjqySP7op8Opfk0r24gJ4lRQwsKWGwqojBqnwGq/Ii5nmgIovBRdmcLvFxushLT7GP3lDrKfJyKt/NqXwvp/J9dOeZr6fyfZwu8NNblEF/aQY9RV76SvwMLMxgsCyLf19Vxn6rTuC6e0i/cQaWq+9Fu+5+vJOn4Z08Dc9NU/HeNDVioL23zsV53VT0STNRJ03F9flYMr9q4eE5XvbkLaS+spym1cvZX5JHx6Mr6X5iJV1PLP2kmoWPrE88e/ccXp4ax09nxbN5bgI7YlPZtSB9TBZ6y+xktsxJYteCFPYkJLM3KYkj6akcs6RTY7NSY7OaptNwRnRi9L0zcjP4/jqh0eF206XqnFQN2kM60e730hnwc9LroV03aLObOtFqs47qhNNGg26nXnWYfSWUeGlQFBqM0XrmaH0YrxP1+lh9qXM6LvgcHrU8riscVTUO2zUO293sSXSyNeFCnejIC9K3qISB5QsZXLOQwYcXMryunDNrzQnoI2vyGVkbZGRtNjXFzssevy6xSQMtuaxcIYSga4nfNM4hA31+tZm9PLM2lzMbCjj/RClvP5nPmxuDnF2fw8jaIEOrczm7Jpe3Hy7g/Ar/BQb62bvHGuitMUmjmedxBnrnfDMDfTAtbYyBrovKLIQnCjbqDtPYhgLjREExnJFu0s2MQdhAt+lm9qDV66Yj4KPL76Nd12mxOWix2mmxWmi2WWi0Wz7QQNdqTpq8LuoMdcyEw/GBsdHQIsN9f8hA14ZMyUGLk2qbi70pKtuTU9iWYGXLAkckMLbn5tBTXkT/slL6V5XQv7aYobVlDK8qZXBlASNrCj/QQI+sKDBfl+cztCyPgapgxEB3VgTorAjQWuJm8JtZ/P7wE7zb9gzvdD7Lu93P8077Ewy/UsWPUpPYkuhgT7qd3elp7LVZOeB0TGiga3SN9oCXFreXp++Jx33tPaTdMB3rdbNRr52Bcs29GDc8SODWmdivvefjEBj/ZAz0cZdCo0ehyeOkJuCiPstLnTdUf+/WaPToNHkMmidYBSD6mq0zVBp182Y0fE2Ov1bDWbFmQ6dRUWlwKNTYNY5YdQ5YDPZb3exNcbI73srrCTYOpCjUOH00ezPpyMqlqziPzoV5nCwO0l4cpLe8hL5FJfQvLmKwqsA00JVBhhbn0FeWQU+pn55SP6eLvXTnGfQUeenNczNY6KevwMOpULlGxDgXBOgrCESMc39pgP7SAEPlWby9PI83K4rZeE8S9qsfIu6z92C55l7ckx4i8/bZ+G6ZgXHTTJQbp2O58n4Cd8xHvWE6yvXTcE+ejXrrbFxfSsD3T/N5KjWbmooqThQv5MSSCg5XlND52DJOPbmcrieW8C+3Tf4kmoWPpE98/m+vHGugYxIio5Tb5iaHDHRCxEDvnJ/M7vhEDqSmciQ9LWKgax126hxmCUe0iW7Q7GZ2+AMSLRGd0E2d6NAM2jSdVpdOq8dFh997gU40W9NpsqbTYEs3DXTody7QCdXUiVpdodHjiqzKcUGixdAi5VJhXRivE42aSpOhccKlcVRRx+pEUgpb461sme9gb7qpE23BbHrKi+hbWkLfypBOrFnI8KoSBlYUhBItpoEe1YlseitzLntc+yOaNNCSy0okAz2yMjuyksPI2nzOPpzP+Q0F/PxJs/3ssVx+vjGX8+uyObs6yPDyHM6uyuHt9UHOLnPRV6TSYtjZPGs+z01J4IcPxfPKtHg2z0xg+5wEts1NZuf8NHbOT2Pb3GQ2zzYDozm5MHnM5JCIgXY6qHXYI0FufCYhnCUL37GHJ1yEa5vDdW/RpR7hdtLtptPjoVXTaNU06qxWGlQl8rtH0lKpV5wct1oiAazWYeeE3cZhq5VGt5cTqk6Tx0e94abR7aXZ66fR7aXecJvb9FHzfEEWe1xrdKrUOjSO2XQOWnR2hTJ6uxKs7Iy3sC9VodbIpCMrj57CEgaWLGRweRlDa8oZWVPBmTVlDK0qjGSgR9aMTh48tyaX4RVZjKwwVzoY05blM7S0kIHKfAarCjhdns3JYj+NRQq/eCmD/3fEz6+6K/nP3qd5t+dF3m36MQNPP8nm9Ez2JhSzN8XOvvQkDlhTOKJYOey0sF+zsk9Pp8ZIpdWn0eDN4KeJHtyT47BdNR3jpjnok2Zgveo+fDdPx3PTVFw3TsFx3b0fh8D4sTbQt115Jcd8fpqys2jwmVnmZo+TGp9OQ4abFr8etQqAEam1DE9uDQ8nR2fCGj2GabSN0aHkOqcjUsb0vterXeOIVeOQ1WBPisrBNI19SQ52LUhnd5yFI1YXDUYmHRkZnMrLprsoj5PFuXQU53KqpIjTZYX0lBfQv7iIvkWFDFYWMlCRFTHRp0t8dBcYdOVonA4a9OV7GCj0MVDo43TQxak8L715Pvry/fQXBOgvCNBTGMo8lwYYKPZzvjyHny0OMlCcS+UXppH+d/eTfNUU0q66h8zJD5F58zT8k6fjv20O1munYL9uKoE75qPdMB33rTEYt8ag3xaD9wuJFH41iZ+4c2mqXMzx8oUcLCqhcXUlXY+tovOxpZx8bAkdGxd9Es3CR9InnnswnhceXMAr0+LZNCOebXPMRMuO2NTIhPOwTmyNMXVid/yoTkQb6BN2W6RmuFEzbwhbXPqYkqR65UIzHZ7rYmqHOQemJervHW43J91uWlSVVlWl3mqlQXFywmalzmHnaHoadU4Hx60Wah120ziHzueIzT6BTnho9vpodHuoN1zUGy4a9FHzXK84L+h39dFZbafKCbvGUavGwXSNXUlOdiWaGrEjLt3UCT2T9sxcThcU07+4lIFlCxlcXcbwmnJGVpuJluE1+QyvCTK8elQnzq7OZXh5eEWcPG6/5srLHu/+QJMGWnJZiWSgz64O8sa6fN5Yl8/Zhws5t76QNx4p5O3H83j78Tze2pjDzx4NcnZNJmdWZXNmZS7nogx0T4GDJs3KppmxPH3ffJ67P/YCAz2mri0m6Q8a6HBwDA/RRZvmaOMcDorRE/SizXL4b9HbOlwu2g2DFlWlRVVpsNvHGOgTdlvkmAZVocZmjZzTMYeDOt1FrWbQ6PbS6PbS5PF9qAb69VSN15Md7Iy3sG1+asRAt2cGOZVXZGbvlpbSv7KUwZULGVpZwtCqQoZW5TO0OofhVdlRgTFo1kIvy57QQA9U5tO3OJf+JXmcKsuiqzSDk4V59K7L4d1DD/O7tu/xTs8Wftv3PO92P8Mvdqxluy+JzfEp7EpK4/XUFPalp1HtsHNEcXJIc3LMp5lLpfmzeH6WBeNz/0La56biuGYm+qTZ+G6bh++2mDEGWr9pyschMH7sDPQ/XXsNrVl+mjO8NAe8NAdzaMzOoc7not4zOgHQXHtWo8Gt0OBWaPJqtAY8tGf6aQ14IxNex9dhRoaSVYVWtytSuvFBBrpJ0ahzqNTYNQ6mqexJUdifqrE30R4p19qXZOGE6qbd76MrmEVPYR6dRbm0FwfpLM7mdFkePeX5dJXk0FOWR29FAT2lAYYX5TJQmk1vsZ/eYg+ncnV68lz0F3jpL/AyWORnoNBHT65poHvzfBED3Rcy2EPFAUZKMxkqDvDWknxqfBn4rrmTlGvuI/nGaTivm4n3pqkEbnyAzFtmoN/4ECl/+3VcN04h69ZYlKumoFw/LWKglZti2Dgjg8PFFTQsW8jevCyOlpXQvHYpJx9dRedjy2hdv5jW9Yu54cq/+6SZhQ+9T1zz15/h6fvm8+z983hlWhybZsRHdCIyyTxaJ8IGOiGJ/cljDXR0bK5XnGMm4kXrRHjbeJ0I60N0ixhslzly2awoEZ2oV5ycsNsiRjl6Qnj0uRx3OKjVDGo1gwaX5311YryBfl+dUMI3rmrIQOu8nqKyJ8l+gU60ZQTNCbwVxfRVldC/spSBlaUMrihmaFUhgyvzGFyVzVCUTpxZlWOuxb4sOzJiGW533njdZY+DEzRpoCWXlSuEEJyqCnB+bR5vrS/krfWFnN9QzBuPFPPWxuJQ3XOQNzZk8daGbEZWBRhekcmZlbmcX5MbMdCn8uw0KOm8Oi2G79wVw9N3z7nAQG+aFc/m2aNZhj9koI+kpUYmiES3cEAJm91wYIyeJR0ecn6/Eo82XafJ6aTJ6aRFVWlWxn7n0fQ06hUntQ47x60WjoYC9jFLOidUlRpFGzXKbi8tvsCHY6BDGb2DNg/7UhV2xlvYPDcpEhhb/Nl0BQvoKS+it7KEvhUl9C4ton9ZaGmwFcHQ2rqj63qPrMymv8rPwNLMCQ103+Jceipy6F0UpHthJqfKsugu8FObb+XN5xbxm5rv8ruul/lV72be7X+F3zd/i4HvlfLsrNlsS7CwJ8nK3hQ7By0qR51ujhpu6gJ+jhkenpmagPfae1Cvm4X1yhkkfeY+/LcvIOsf4sn8/PyIgXZPegjbNXd/HALjx8JAT/67z/FozGxaMn2mcc7wmito+N00ZQRo8Hlo9o1OTGr0mGuVmwZ6dMnF8Mz/k9kZtAa8kfKN6DXPo2v2wyM9Hyjk4WxYqIzjsEVjb6rC6yka+xI1ds13sGNeOq8nWDhq02jxeunKzKCvIMhASR6nS4J0FWfTXRqkpzyf02V5nF6YR29JAacLzX0GSnMYqQiatc9FHnryXPTmuenL9zBckkF/gZeeXHfEQIdN9GBRZsRkD5dkcK48h59XFvLqdCf6lXcT+Goq1ttnYbv2PrJunkrm5AfJuG0myjX3olxzr1kLPWkGxrXT8N06F8/t81Amz8F1WxzPxgdpXraeuiWV7C8IUldVRuv6StofWUL7I5URA926fvEnzSx86H3i1Wlz+c5dMTx112xemTpqoLfGJLJpVjybZsVHyv62zEoKGeikqAz0aA30kbTUMSOWkUmFIUM6RieiM9BuI5KVbnEZtEQbaMOgxRirE82KQrPTzBCfsNmiMtDmb4zViTRqnAo1TpU63UWd4Qpln/00e3w0ujzU6y7qdRcN2ngDHW4fbKAPWQ0OWt3sS1HYEZfO1nnJ7EtVOGFk0OLPpjOYz+myQnori+ldXkzP0kL6lhUyuLKQgeU5DKzIYiCiEwGGV2TRX+VjYGkGw8vyGArpw/CyPIaW5dG3OEhPRQ43fzQ3iH9qfUIiMQNj9/LMyAoO59YXcObxAt76Vikj64OcfzjIm+uCnF+XYba1WZxbE+TMylzeWJvPm2vzzAepFGjU2a28NnU+z3w9hmfvjuHFB2PZPDeZHQtSIsY5Ogu9Zc4Cts2NZ/u8BPbEp7I3MZ1qaxqHbekcV+wcV+wcc9qoddoj2ejIsJbDToPdHgls4Uxy2Aw3Kwptuk6brtOiqrSHgmG4dbhcNCsK7YZBq6bRbhh0Ox2ctNtotVlosKTS6LBQa7VSZ7NxLDWVE1YrR1NTOZGSzAmrhQafhxO6h1Y1QLvmp0l306AakVav6DTpbpoND42ai0bNRbPh+YMZ6H2pijkknqqyL8nB7jgLB1NV6jQzMJ7MNidlnVpkrmrQW1VM39ISBpYXR5YFG1iey1Ao8IXX2A0/nOLs0nzOVOVFnvA2uCib/vJM+ssz6SvL4FSxl+4CF+15VjqXqvzu4Ab+u/0Jfnv6ed7t2czvu1/gvw+s5mCWm5/EWNgUa2V3qsr2RAv77QrHdAc1hsL3pyeRceO9pF11N8nX3heZlOW5JQbfbfMwJs3CM2kWrhtmoF07FdvVchWOvHvuGpMhbvK7afS7afSZT0CLPA0tygCbr+YqANFZ5bBZjs46j5/w2uxzU29o5nCyPrrU1+iN6h8u46ixaByxutiXpLIvUWNPnMLOWAt74q1Up9hpdBqcyvAyUJDDQFGQnpIgXcU5dBZn01OST09xPl35OXTmZdOdn0NnToBT+QGGy4OMLMpiYKGPvgLPmAz0UHGA/gLTNA8UZkRKOQYKTXM9UORjuCSL4eIgby1ZzIY7HyDx6gewXz8d7YoHyJw0g9zbZpNx60x8N0/HuOFBjBseJOO2WbgnTUO56h68k6dj3DybtKunkPnFNHZnL6Rp2XKqi0rYm19E0+oqOp9YRvsjlaMG+uHFtK+TBvoPtU3TQjpx1xxefDCWTTFJbJ+ffIFOmHXQ89k2N45tc+PZHZfC3sR0DlnSqLamccxpCzUrNQ5bJPkS0Qm7LaIT0cmSaJ1o1TRaVS2iB226HintazeMiJa0ahrtukGXw85Ju5UWWzr1lhTq7WnUWNM5YbNyNC2kE2mp1KQkUWNJp87jokZz06L4aQvpRL2iR3SizqlFaYNBo+YKaYnzAw303hRTJw6kquxNtLM7zsKBFIU6LUCzL4uObHPuwalFBXRX5tNTefE6MbwkGNGJ8Ko4AxVZ9JVlRHSi6KG7+du/+ktpoCV/towx0EOrc3jjkSJ+/mQJb28s5PzaHM4s83NuqZ+RFW7OrPbxxrrsCQ10f7GLRsXB5unxEQP90pT5vDo7gU0xo9mEiQz0zvlJ7IlP5UCKjeNpadSkp9PgsFNvt5sBMFRXNiYr5nSMBr9QoGvVtEigbNU0c9WNUIsu12hRVTo9HlpUdUxgbVUM6lSNak2hOsPN8eIcTlSUU7toMUdLF7InO4fNbg/7FYMjFid1VpU6q4Nap4NaRaHOqb2vgW5xeWnUXKHAeXEGen+ykz3xVnbOT+P1BBvHHd4xBrqrPJ+uJXmcWlJIT2XUsmArchlYHmSgKhhZcSPaQA8tzomY5/7yTHpK/Zwq9nKq2MvpEh+nir10FfrpLHDRWuTk3NPFvHf8W/yu83u8d3oz7/X8lHdbnuDcS0t5MTae1+ZZ2BJnYVeKnUOKzhHNw3MzU/BOvgfrdVNwXDMV13XTI+Y5cMd8Mj8fh+/WuXhvmo1v8hzUax76szXQvq//G60BF60Bz5gH8TR4DJrco+vDhmv526IeJ9zqNVfOiExW9Zjr0TZ5XeYqAKoSqX2u1ZWoBzgYNHt9NHl8NLg8UaMm4eFolXpFC4m668LrVdNpVQwabQon0hWOpqnsT1R5PUllT4LK9lgrexZYOZhoocFh0OX30J+bxUBRkMGFuZwuzaK7OIue4nxOF+XRlZ9DezCD1swAjR6zHOVkjoe+4mwGFwYZKs1msMhPX75ppIeKAwwU+ujN8zJYlDk2E13oY6DQw7nSAG8uyaW/pJyK6+8i8bMPYLlyCuq1U8m8eTZ5t8eQecsMsu6Yg3bd/bgnm6VFyvXT8E2eStbtc9AnTSf+s3dR/DULh4sX0byklKNFpdQuqqTjkeV0fbOc9keW0PlIFd2PLKVj3WI61i3mU5/6RJmFD7VP/IX4FFsiOjHnA3Vi1EBH6USylWNp6dSkp1Fvt1Fvt1Fns1EfykDXjdOJcHxvUdVIQmW8TrQbBh3GqE6EzXW4/rnJ6aTR4QjVQruoU3UO6yrVGR5qSoKcWFQR0YnXc4Js8XjZ69Q5nO6k1qpQa7FxwmGn1mnqxPsZ6HCyZUKdGGeg94UM9L4kUyd2xKbyeoKNY3bPGAPdVZ5H5+JcTi0upKeycIxO9C8LMlCZY7awVoQMdPSqOOGJvaeKvXQXeSN60Vnoo7PAwHfvP0sDLfmzwyzhWJrBmdU5nF2bxc82FvCzJwt5Y00m5yt9nClzM1Lho3+RwflVGbyxLocza3IYXpPD+XW5vLkuyNllbvqLdVp0B1tmLuDpb8Twwn2xvPzAfF6btoDNM+dHliaKGOiYJLbNiWV7zHz2LEhif2IqB5LSqElNo85iod5qpdHuoMnhpFl10KDYaVIdNKkOGhU7TU5HJCCGM8phMx3OMLTpOm1uF/U+Nw2aSqvipE1x0qI6adV8NBsZNHqCNGWV0JhTTm35wxwtW8XxlRs4vmEjLc88TeMPn6L2+e/Q8spzdG56kc5NL9K1+WWOPbGBfaXF7LarHE60cyzNyTG7GgqITk5oTmp0lSbDR6Pho9kdoMnlo05x0ajpNKgajZoeaS2KTp1NpcaqcShd5/UkhX2JKrsX2NgxL419SVZqnB5a/QE6s7M5VZRHZ0kuHQuDnCovpHdxMf2VRQwsLWQgtFRd/6JsBiuDDC7JYbgqlzNLczlXlcNgRYDhxRkMVvjpX+iltzSTnpIMThcH6C7ycarIz8kiH12FLtoLnLQv1Xln72P8tul7/K77Vd4b2M57vS/wq5oN1JYZbI5LYVeijf22VKoNjW89mIhxzT2kX30fluun4QwZaNfkGbhunkHm52MJ3DEX980zcd0wFcdV96JfNwXL1X8+JRxx//h59qrWkHEONzfNfg/NXvMxwuYDHswnbEab5/Byc+GJstFroTd5DOrVqOW0VIW60GoALX4PjW53pMyo1Z9Bs9c/aqB1U7gbNTctLs+YjJiZDVNp0t2hzwaNDo16i53adIXqZAcHE50cSlTZkaCwNdbK5tnJ7I1Lo9ai0eHx0pPtZqgki5GKPAbKg/RVBOlfWMTpojw6g5m0+Hw0uHwctTs4arfT4HLRkZ1Bb1GQgbJMBotHDXQ4C92b54nUP4cz0QMFGbyRm83bxX7eWuylNcdD4Ip/JfWzD5B+1UMo108n45YYMifPxH3Dg/hum4fzuqmoN0zHc0sM+qSZ+G6ZQeYts1FvmI3jxhl8LymbpkWraVy0mJqSxTRVrqJzwzK6H6mia0MVnesr6VxfGTHQHR9+FvoT0yeadTtbZsbx9Ddi+MG9c/nRA7G8Om0Bm2bMZ2ds2gUGeuucWLbFzGfPgkT2JZg6cTw1ldp0izn5226nyeGgSXHQ4LTTqDrMpthpDCVaIhnkUKIlbIrDOtHqMkydUBVanQ5anQ6aVSctmpcWVwaN7hyaMotpyC6jtmztGJ1ofvopGl4wdaLpR89w8rUf0vnai3Rt/hHHntjAgYUl7HHqVCfbOZLm4KhdoUExqHOEdUKhMawTLj9Nho86xaBB1SI6Yb7XaXZq1NlUjluidUKJ6MTeRCs1TjetvpBOFObSWZxLR2mQ7rJCehYV0b+kiIGlBQxUmUuZ9i/KYnBJDgOLsxmqDDKyNJezldkMVvgZWpTBYLmPvoVeekpNjThV7A/phI+TRV66Cly0FThprzLoe6ESZ+x9H9q18geaNNCSy8oVQghOL83g3Joc3tqQzS8fz+PtjTmcX+7lXKnOSIFOf75OX5nBW6uyeWNdkLMP5zD8cA7nH87lrYdzOLPUiKzCsWXmfL739Tm8cG8sP35gPpsfWsC2mQvYPi+FTbPixxjonXPns3PufPbGJXIoOY2DSakcT02lzmql1jIaHJvV0dak2Mz3SihrrGkRA92m65EAGc5OtxnmhMFuh0aP00O7w6BR83Asv5zmJatpWLqOmqXrqFm1gcOVa2hc/zinnnmW+ic30vTdx2n50VOcfPV5Gn74Hdp/8ixNL32Pzp/8gFObXqJ/zyZ6N/+Ilm8/wd7cfLZbnBxJd1Kb6qDWaueEw0Gd5qVe91GneWl0BahTPWOy1OHW7FCpsyjUpGtUp+vsTVLYl6ize0G4njSd4w6Ddr+P7uzMyISsjuJcukvNySLmkmBFDFblMViZO+bBFEOLcxhZksPZygyGF/lGH49c6uJ0cQbdhX66C/10FfjoKvDRUeSlq8BNd4FO1yIXI98u4TfHnuTdjh/yzqlXeafnx/z+9PP8545V7NDT2Z3qpFp38MSU2bivv4/kz96F87qpkYdRKNdPxXvbTFw3T8N9y3Tct0zHc4u5jJ3z6nvQr38Ay9Xf+DgExo/UQD8ye0aojMI0ze2ZnoiBbvOPPhGt1aNFnqLZqCuRlWXC2eawcW7SNdrcLhrCy2lpF5Zc1CtOjjmckRUBwhNfw3X7DSFDPOZ6NDymWdY9NBp+GjQP9apOg6pTr+jUOTXqnBrH060cTbNxONnGwQQH+xbY2TnfzuZYK5tmJ7NzXirVSVaaVTenMnWGS7I5U5bLYEUuQ4uCDJXl0l+SQ29hkBafl2MOle2x8WydHceuuRaOWlTaAn66gwEGizMYKc1ioNBHX76XwSIfwyWjK3D0FwQipRyDudm8WZ7JuTKd19Mt2D/zFRI+NxPL1dMxJs3Ac9NU/LfMIOO2Wbgmz0S9YTquybNDBnoqmbfPIXDDHCxXTcHz93N51V1KS2k5NaWlHC4tonVVFZ3rl9K5fgkn1y8eY5w71i2mfe2HvhrHJ6ZPtBi2KJ2Yxyv3x7LpoflsCz3Ke6xOJLIjxtSJ1xckcDAplYNJqRwbpxP1NhtNyqhGfJBORBvpSLLF0Gk3XHTaNU47XbTZDRo1L0fzymhcvIr6qrUcr1rL8ZXrqV6yhoaHH6frqWciOtH68lN0/PQ5Gl/8Lm0//j5NL36Xzh8/R/eml+jd9SqnX3uR5m89zr78AnbYFA6nOTmR6qDWYqfG7qBW9UR0osHwR3QiOlPdoOg02RXqLE5q0lUOpWnsTVTYm6CN0YljDp1Wn4+u7ExOF+RGdKKrxJw707eoiMGqQgar8i54gJGpE9mcWRJgqMLLULmHgTI3faUGp4oCdBX4IjrRGdKJzgI3XfkanRUGw98q5jdHn+Dd9hdo3LpBGmjJJ5orhBD0LMvkrfX5/OKxPH7xWB5vrPZxrlzlTNDGaVcyvRl2+heOGujzG3I5syGXN9ZPbKC//W8zef7uubz6UDzbpiewc07ChAZ6d2wcu2Pj2BefRHVKOkfTbWMMdKTGOcpANzgstGgO2g09EgCjA2M4sxA20O26oy4pZwAAIABJREFUTqvdRqtNoVnP4FhGMbVL1rK3ZAVHK9dxZPFy9pYs5MjiRRxbvoqmRzbQ8s1HafjWOlqefmRMYKx9/ps0vvhdWp9/gs6fPk371mfp3P48A9t+yMjezfRu+jH7S0rZYXGyP93BIYuTozaNE4qbY3bdNNOalzqnRq1DjZiQOqdGXbqN2nQHx9NUDqQo7E28eAPdWZzPqYUF9JQXRALjUFVuZPhtdBjObwbFCm8kKPYU65wuzqAj183JPE+ktRZl0VmQQU+un+48g9ZchV9uKuP3zd/jd6d+wq97X4XhTbzT9V1Gnl/JrjSFF2YuwHXTPSRfPQ3rVQ+Yqxj8f/beO7ruKkvQ1Zv1Vr/p6cLgiANQVFdPVQMFRQEGbEtWzunmnIOyrrKs7AQ4gm1sg3FOcpYsWw7KOeecrCwHjKFrOrzpNFXf++NeXdtATffMq7Wa7uGsddbv2lfL+sP3nO+7++yz9wpv9Mu9sLzoS8TLPuhXuKFb7opm2VpUi98j4gW7zBiWrfsPK9BnBaHObpZP5jd3WfX0Wg30WQ0MRJrojzA+3W7erKM/wkh/hMlZonG+LXynUU+fTkefSkmXWkGHWk6HVkmH4XHecodO62xINF8RoFVvdKRqRDCkjnVGmZ9OPdLRaYqkTW+l3RBBuyGCNq2ZVrWOZqXG+ZltUWlplCuol8qoFSmoCldSFqTgRoiKa8FKivwkFHmHUxkmpVmmZSTKxFRKLDOZ0czlRvLl5mTu56UytcHGTEYy/TGRNGl0FPvLOPlWMAd+5UW+ezjlEg09JitjcXHMpCYynRLHVEqUvRpHitmZCz1fzm4qJZrZ1FjuJkfyTW4aB3/thvonbyN8fh2qRe+iX7KGyBe9nBJtXuGOfrk7+hVuqJeuQfv8OmL+IoCIl4IJe2YtMa+Gc9O2kc4PP6I+I43mnEyGdn1E//aN9O/IYWDn0/Lcuy2Lno8yOWiQ/UeRhT9uBHqeE296c+IdPy67hlDkHsINBx++LdC3Ah5zoloooU4if0qg25VKOlQqup4Q6DallG6dkl697g9yokOlotMh2H06nb1BikJDly6K+qgUmnO2UZa6lfq87dTmbKEsLZ3anCwaNn9Ax+5ddO3/mLYDdk50n/uCvm9xovvEPgYvH6bn6lEGrp9g8vppZkqvMlpwgar0DIplKiqkKqqkqm9xwkybzkyLSvvUemtV6WiRyGmRqmiQaKgQqikN11D+PQLda7UyFBPNaNJ85Ztvc2K+9rrtqeZF9vzmCKazzN/ihM7JiXlW9CeY6UmJZjAxirF4K8M2A70JWr4pyOB3XYf4p5FL/P1YAb+bLqDlcuaPAv3j+A83Fri4uDCYF8ndPUk8OpDE1ztj+HJzJNOJKkaMofRqgxmIUnMnR8/cR1Ye7o7l0SfxPPoknm92J/DbnTa+3GxiKllDt0ZOkWsAR17z4djrPpx5x5/LriFccg2kwCuEa34CCrxC7HWgvUO54RtCaZCQ2wHhVIXLqBUpaZbJaHHMDpXqO7NNoXBslhrnnN8Uu7QaOtUqRrVmumV6uswxdCdl0JW5iYqoBIot0TRm5VGTlkldVi712XlUpG6gMj2T+uw8mjbl0fLBZlp2fED99i207t1B+6e7GD59mIHTXzCQf4S24/sp/XQz06UX6L7wOYOFxxi5dpLJW/ncrSlkpCSfoVMHuSaVUStSc1thodoQQ4M+0i4iaiONchUdOuNTEt0gk1MnUVAtsEfyqsO13AzXUhyk4LqfmKpwGS0ynSOXNJrJlHjG02wMp8U9VRJsPDuZiZwUJrITnPV0J7NiuLMhktFUC2MpFiY3RDGeFmHv6vZEW+RBm56BeB0D8bonWiUbGYjX0RerYegjPb+v/gL6i/jnO0X8fuYS/zBzgd+3H+SWJRTri+tQLPZH9owr4kVuKJe6Y1rpRdSL3lhWrse0yhfzC34YVnijXrIe40ofDCu8US1eh3zhakTPvflD2Bj/KLJwwN+X3ugIpzQ/KdCdZgPdJi1djjbzfU9IdK9FT3+E0ZG+oX9iOlrPm4z2Zg9KNX0qe1e0LoWMdpXMLg5albOc17w8N8ikNCmVNKjVVGsVtJjNtGstdOhNtKi1ztz9FrWKRp2CRq2aFq2ZVp2FJrXRHh3TWWhRaZ2f2Walhmalhka5yv7ZFSupCNdwO1xLcaiaoiAFRQEyrniFURokpTpMTq85gsnUFOaybTzYHMvDLYncy01mLjuF+3lJjKdG0RNholKk5Ys3/UlZ+TZ5f/4ep9YGUiHW0qw1MRwTyURiNDNpsUynRjGRbGTUpmc03syYzeJM5ZhOjeGrDVHc35DK1pfd0TyzDvmi9eiWuWFZ6U7cn/tjWelO5IteRLzgiWHleiJe9kG9dA3GVR5EvOyDdrkXymXr2e6ppSnnQ3q2bKI5PYuurZsY3LmV/h3ZDOzM/U70ufvDDLo/zKBza/p/FFn4own0eJKabo2Mq+v8OfKaD0df9+H0O/5cdgvhkmsQBV4hFPmGO3lx1cvOiZJAwVOcaJLKaJZKaZZK7SVIlUo6VPbZrlR+hxOdarWTE51aDR0qFYMqI91yA13mGLoSM2hPz6UsMp5icxQNGTlUp2VQm5lDXVYulWkZVG/Ioj4nj8aNubR8sJnmHR/QsGMrbft20v7pLoZOHqL/1CH6zx6m7cQBqg9t486NM/RcPET/lSOMXDvJxM2zzNUUMFJylsFTBylWKqkUqrgtN1Oli6ZeF0GbwWrnhExlX5eOddei0lIvlVEnkVMtkFMVpqQqTMPNMA3XA+Vc9xdTGSanRaZj0GJmIj6KieR47qTZGEqNdXJiNCOB8ewkJnKSmchOYCo7ljsbIp33YUZT7JyYSI/kTqqV0WQzI4lGhpOMDCeaHIzQ0h+nZTjRyHCikaGEJzjxoZ7fVR3i931X+eexq/xu2s6J37Xu57oxlMAlr/5HWBM/jh+HIwK9NZaHBzbw5T4b9z+wMJujZcAspjkkjLoQu0BP5Bm4vyPKKc/fFuiZVD29OiXX3IP57A1fDr7hzVm3MM57hlHgZ79dfcUzmAKvEK54BlPoFcp17yBu+Ydx0y+UilAJVeEyGsUSmiQSZyS6VS7/FwW6S6OxH+Gp9PRHJHDvw4/p27Kd1i07KUvOpMoYS5U5jlv6SEoj42lIyaQsNpGSaBtVCam0ZW+iOSOXuuxMWj7YTOvOD2nfu5Oug5/QeeBjug7to+PwPjqPH2DgwjGaT+5l9Popei4eYrjoBFMl55m8cZbJknMMl+UzXHGembpCCrISuBwoo1FioVGgo1Gpp1qjpV6qoFWto0mhplmpoUmhdgp0jVBJZag9klccoqIoQMZVHwEVoVLaFIZ/UaCH0uIYz05mMieRyawYJrNi7C2R06zcSY9gJMnEnVTr9wr0UILBOZ/8++FEI4M2PZ2xEr45nsfv24/zD8P5/PPUVf7xywIYOMUltRTRAldCF3iiWOqO4nkvFEvXf0egtcs8UCxc54hK+6Nf7oVmqRumFzyQLvr3H4F+8hLgk687zEa6TRq6TVpnt7Q+q12kn44222ePWUenQe0QbQ0DUREMRFgZtFro0z3uitYpldDmaOLQpJA7G0m0azU0yKQ0KuS0q2TUCcJpCxfSJpLTqdDTJJFRJw2jQaqgQq6mQaamVaKmWaKiQaqmWqqmWWWgVGOhWR9Bi9ZMg1rn/Ow2yFQ0yJQ0iKXUixTUCpWUhci4HWqPPl8NVHAtWE2hl5LrXirKgxV0agwMxycwmW5jLieGuWwbs9kx3M1J4l5uClMbYhiy2Y+xz7mFkvaSJ1HPvk7yitUcdpdwK0xGh1Ztl+iEBGZT45lOi2A8Sc+dBCuj8fZ86LmkaGaTY3iQHc1QbAyRz/4a8XNeyBf6YH3WHesqD6Je8ibqJW8My9ZhfN4V0yoPDKvWo1/hgWmlD6ZVvuiXe2Na7sfh8Gg6NufRvTGNlg0f0PfRVoZ2b2RgZy5927Pp3ZZF77Ys+nfk0PNRplOguz/M+FGgvzVnUnT06BQUuQfz+Ru+HHzdizOuoZzzCOWKr8DJiSuewVz2sAv1da/HnCgPsQcTGsR2RjSKxU+l+3WoVN8r0PMS3aZQ0KHU0meJY2bTdrrzPqB18w7KkjOpNMRQYYzhtj7KyYnSmARuR9uoTkyjLXsTTRty7JzYuonm7VvtnPhsj4MTe2k/vI+u4wfoP3+UllP7GLl2kt5LXzB09TiTt885OTFSms9IxXkmKi5yLSeZghAFdWIzDeFaGhQ6qtVa6qQKxymPiiaFmiaF+gmBVlAZqqQ0UEFxiJKr/lKKfASUh0hpU+gZtJoZt0UzmWznxHzVm3mBHkqL405WEhPZCY85kWq/QD6aamUkyWTv/jkv0H+AE8OJxu9wojtextfHcvkfbcf4+6F8/nnyKv/0oIDfD5zmvFyMcIEbIQs8kS9x//e8Jn4cPw77xji5PYG/OpTN/U/imNloYDRZTKM4hOL3/WkIljIab2Bqk4kHO6P5eo+NR5/E89XHcXy92+YU6Ll0A/16Fdc9Qzjwph97X/fk2Nogjqz145xXKJc9grjsEUyhdygX19sj0kVeQdzwDaXYN4SyYBGVoRLqhSLqRSIaRCKapTKapTJnhOHJjbFTraFLba/L2SKT0qlR8Vdb8qjRySk1q2hIjKZSp6daqaXOGEetMY5yQzSNcanUxiRTEZNIWZSNxpRMKmKTaEjOoHnTRlo/3ELHx9tp/WQ7Dbs+oO+LfXR/sY/eEwcZu3ySrjOfM3LtJOM3zzojC9OlF+gpOMxk2XmmbuYzV3qRB9VXmSy7RMepw5yTqbgVIqNGrKJKrqZWLKdZqX0sITIlDTKFU6ArQpXcDpBxLUjBVT8JBV7hlIeIaVMYGHQKdNxjgU5xCHRGImMZiYxuSGA0PZbJzBims+1R6OEUMwM2PcOJRkaTzYynWhlLtjCSaGQk0cRIoonhb82RRPvGOJpkZijBwHSSlcFMHX9Xup2/7z/OP00V88/fXOXv246gWPA8gmf9CV3oh3SxK4plHuhX+tgF+gUvLCvd0S+355oqF7k6BMUL+XNrUTz3Pvrlruhf+PfXSGXpn/4p9So5zTo1LXqNvS22U5r1TgnuNuvsT5OWLqOGToOaXrOePos98tzjeL/Pqne+7tU7KslYzPRazc7280MWC90qNR1qFW0qlbOhQ7tWQ6NcZu8kqJTRrpRTJ5ZQqVBRpFRxTW+kOCKSsggrJcnp1CdsoDQhmWpbMqUxNq4qdVyXqagRq6hVWGjQxtIktdAk1FEv11ClVFMnkVMl1VMlUVMjklInFFMrkFAbLqcsRMrtEAXXg0TcCJFxPURJoY+Sq54qSgNUNIgV9EZamEi1MbUhnnu5icxmx3Ivz8a9nFRmsuMZTY2iKzKSUoGOT34djOG/vI52sSuJvwjipLuQksBwmuRa+iwRjMVHM5USyVSqiTspkQwmmJmJ1nDfZuZOYgSTG+IpF+tQ/udXCFj0PvKXfNAtdSXmZV+iXvIm+qc+xLzsi/F5VywrPBxf5twxrfIl8uUgTCt9sS4PoVCdSv+W7XTk5NKUnsXEJ9sY3JXH0O6N9G3P/k76xpMCnR9j+FGgHbMsMozZND39eiXXPYLZ/2s/9v7KgyPvB3BkjR/5niFc8gjmknswV7xCuOgeyBXPEK56BXHdN5Ri31BKgoRUhEqoFYioE4moF4tpkspolMpodVRtmq/K0a5S0aHW0KnU0q1S0SKT0KFV8PWWXGq1SiotOhps0VTo9FQp9dQYYqgyxFCmj6IhNoWamGTKoxOcnKiKS6YhJZOmTZto3rKJ9t3baduznYZdW+n5/BO6vthL74mDjFw8TveZQ4xeO/VUBHry9jkGrh5jvOQsE7fOMlt6kbtVBUyWX6HjxCEuKDUUB0upFquplGmoEStoVGqolyqplypokMppkMipFSuoEigpD1VyK0BOkYMThV5hlIdIaFXoGbSamLBFMZkSy3haPMOpsXZOpCcwtmGeEQmMpsUykRHLdFYc4xuiGE62R5iHEwyMJpm4k2KxcyLhMSeGEkwMJ9if869HksyMJJkZtBmYSDAxlKXn70p28Pe9x/mnqRv84/0LfF3xKerFP0OwwBfBs77IF7mhXOqBYaUXppWe/Nl/+pN/T2vix/HjcAj0x3H8t0/Tebg1nrkNVoYi9BS7B3D8FTcqg0QMRyqZ3mTg4e5YuzjvsfHVx3E83B3Po53x3N9iYipJQ79GwTXXYPa+4sPeVz354u0ATqwNJt89nHzXIM6vD+GiRxiFvmIueYZzxU9Coa+YYj8RtwPCqQgSUi2UUCOSUiuWUS9VUC9VONubPlUUX6WjS66nX65kzKLj/qZErvitpzxUQZ3cSJXSSK0+ghtiDRWaSG4pzVSa46iKTKA2LoVb1lhKIuMpj0mk2pZKtS2VuvQcqtIyad26lZZtebTt3sLIiQP0Ht1D/+kDDJ77nMFLh2k5tZfJ2+cYLDzG6PVTjBWfZuDKF0zcOM5kST5T5ZcZqyhktPIKw6VnmbtxnhJbAue9win1V9pLDwnVVIkU9txvkYQ6oV2ey8OU3A7TPHUMXuAZRkWolCaJhkGrgcnESGbS45jOsjG6IYbR1HhnObDBhFh7Pd2EOCbTEuwlwDJiGU02MZKgZzTewJ0Ek71WbrKVMZuRkUQrI4lWhhMsT83RpAjupEQxkmhlNCmCqcRIhpNNjO6IhK4vYPo4/6N6B1veew/Rs2sJW7QO0WJ3FAu9MCxbR8zLvkS84Ensz/ywrPBA/txa5M+tRb/cC8MKbzRL3NEtXo/x+bVYVr2Petn7P4SN8V8lC79cuIhqhcpZs7xBraBJq6JBraDdqKFDr3KK8nyUeT4C3WM2OrqX6eg26RzvaenQq+gxGxiMiGBIZ2BQZ6BPb6DXaM9/7rWaGbJYnKW45jujtToaO7QpFPSp1HTrlNTIpdRGRtGcm0fv0S/ov5zPaPFFegvymS4tYuTmRUZLLjB5M5+xsiJma28xWprP5NVTNO/7kPOpURQojRQpjdwIklIuM3A7WEOZUMutcBU3gsWUBAuoDAmnQiCkTKh2thO+FiiiKEBIYYCYK74yLnkoKPSWUxEup9tkZtgWzdQGGw82pjCbHcdsdgxTWYnM5CQwkRHDYGI09WoLJ94PIXLxW2iWrkO71I3YZavZ85o3BR5BNMpU9JqNjMeYmEowMZNiYjZZynCMkv5YMw83pzGRlcSB1WFoF79D+LL1yJb7onzelZhf+GFZaY9EW1a6o1+6FsOydYh+str+BW+xG5ZVfqifXY/t5UCqYrPp37KTlg15dObmMrQ901l54/suDz4p0D0f/dFyP3/wa+Jfmvc3G5/gRBB7nuDE8TVBnF0fRr5roJMTBT4iJycKfEVOTpQHCagWSKgWSpycqJMonmq25eSEUkeXXEu/XMmAVsFsbjzFwT6UhcipdXCiRmvlpsTOiZtKExXGWCojbdTGJnPTEkNJZDwVsUlOTtSnZ1Odlknzls20fLSRtl1bGDq+n56je+g/c4CB/M8ZuHSYjrP7Gb951smJ0eunGCg8zHjxMSZKzjJZdomxigJGK68wVHqW6ev5lCYmccFHQKm/kttCDWVCFVVCBTVCCfVCCXUCe/S5PFTB7VD1Y074Sx2ckNAk0TBg1TOZGMF0WizTmfGMpEcz4uDESPITnEiMZSLVxmT6Y04MJ+gYidMzZnN0/0y2MhpvZCTR8gc5MZoU4eTEZGIkwykm7uyOhs5D/H7yKP9YsZ0t769F9MwawhatQ7jYHflCe/316J/6ODlhWu6O9Nl/dRWPHwX6x/FvOha4uLgwvTOGb7bZeJAVwXi0kvIwOZ+9sp4vfuVLaZiU7igpd3I0fLkrhm/2JjgF+stdcTzcHsPcRj1jcXJ6VTKuu4V8r0Bf8gx3boj/kkBXhosoDxU4BbpeKnFO58aoltOllNEnl9Etl9GmV3FbEE55qIIKkYZajYVypYFaQxQVmkhuqyxUmGKpiU6iNi6F8phEbkfEUW1LpTYxnar4FKpjU+xRhvQMend+QPeOLfQd+piBE58yeuEw/fmfOQV65NpJBguPMXT1OBO38rlTfJLJmyeYLr/gFOixiivMNhYxUHWRuZob9OzZy8UwBYUBYq75C7kVKKA8VECtQERNuJSqcHvt3Jvzl7C+R6CHI01MJ0czl2FjOtPGRLaNicxk7qQlOZtRDCbEMhgfw2BcBBNpscxl27iTauFOktEpz98n0PMb4Py8kxLFRFoMY8mRjKdGM5YSyWR2DOObrPz+5h7+4dpm9nmtR//cOkL/1APR0veQL1uLfpk3lpXumJa7OXNM9UvWoV3mgWGFN9aXAtAu80Cz1B35UjeML7tj/YU7vv/5lz+EjfEPysL7y1/geqCc4mAptwUSKmUqapUKeykqrYomrYIWvZx2o5J2nZJOg5ouo4Yuo8ZeVeOJcnTzZed6TCa6TbqnOlZ2GfQM6gwMag306wx06+2d03qMBgaMpqeqB3RpNPQpVQwqFfSqZTSoxJRFGpg4cZSus8dpOXWIrnOHGSw4Rde5w4xcPM7ApcP0Xz/OcNFxpm6fY/LWOWYrLjF0+wyjFRe4U3aOmfKLzFYVMX7pCO2fbKMsPomrQi1XgmQU+Iso8AnjqlsgRX7hXPUVcjPE3kq4OFhCUYCQAn8BF/2EnPcVcc5DyoX1Em4GymhQqOmOMNnTOLITuZeXyFxOLDPZ8czlJTOdE89IUgSd5kgKvIRs/K8emBe9h2yBG5qF7sQuWsPmv/Di1LpQ6gUSupThdBvldNhiGTh4kK+uXaf27Gf8tr2Mfxiq53hqGt5/8gbCZQEolgaifv49dCvXEeGo/2xesd4p0OqF72NYtg79EleMyzwJ/b9+TcZrapozMunO20pnziY6N2XYq2/s3vQtgc6lf8cmpzTPp3X8Eatx/CDXxP/KvLtRz2icjF6VlOtu9kDLnleeFuhLnuFc8RY+xYsrvt8WaCHVgv9FTsik9Cjkdk6Eh1MWIqdSpKFGbaZMYaBGH2kPtKjMlBtjqI5OpCY2mdLoBEocnKhJSKMyLvkpTvRs30L3ji30fr6b/hOfMnL+EP35nzFw8Qs6zu5nuOgEAwVHGS46wfjNs9y5cZKJG8eZKjvPZPklRssLGC27xHRdIYNVF5mtLqZnzz4uhSspCBBR5C/kZmA45SHhdk6ESagKk1ESLOdGsJKieU74SynwDHUK9FCEkemkKGY3xDOVaWM8O56JjCRn06IBW4x9xkUzEBfBeGoMM1nx3Em1MJZoZMxmdJaMnEy2MvaEQD/FiUQrY8lRjKdGM5oU4eTERHY0dzZZ+d2NT/jbyznsXr8O3bPrEPzEG9HSd5EvXYt+mZezC23EC55YV3mgW7IW3fOeGFZ4Y37Bjxf+ZPEPdU38OH4c9o1xZlscv90SwWyyhk69mNNrA/j0FVeOvOlBZbiQwUgVc3kmHm2P5pu9CXz5SRx3P4nlwY5Yvtkex/2NBsYTVHQoJVxe488nv/Ri76ueHFkdxCnXUM57Cp0b4wX3UAp9xVz2Ejhzoudbe5eEyqkWSqkSiGlWaqgVy6gRSWlVyGmSSJ66dT1stNAqFNAqD+VhRiolgeGUBctokmioCJNwK1hImVRJuUxNrdZKszmWanMUVeYoqqzRtCWk0hSbSKsthWpLNC3xyTSnptOSkUlbTg7VGen0795J7/6ddB7YQf+xffSe/JTRi0cYKTxO3+XDdnG+cYaJW/mM3TzDVMVFxkvPMVF2nrmaAibLLjNdeYuZ6hvcrb/GvcZC2vP3ccRPxYl1oVxeF8g1/2AKQv0oE6m5Ha7gZuhjEbkZruGav5oCdwUl/ioaxEr6IqKZSEtgNjua2exI5hylwMZTYxlNjKPbaqUnIoZuawSdFg2D8SZms+OYyYpiPMXEnQSTsyXy42YUVmf5r/lyYGMpFsbTIpwXSSbSIxlNtZfBe7TFzERWEjtfD0WzyBPxQlfki13RLHHFuHQd5uX2i1rmFeuxrvLAtNwN2YJ3MP00AMOLfmhWeCFf4oZulTexf+FFzOuhCFasxefPXvkhbIxPyULIy3/BrTC5PboarKLIX0pxsIyboVLKJQqq5WrqlVoa1BqatEqadQpajQraHAI9n/PcY9bRZdQ5BbrHZHzcUtgx59sI95iM9BoM9JhMj1sLO36m32SiQ6VyNnjoNxoZ0OnoVmtoMEdRnZZD2/7P6Tv2Be1nPqf/8gm6zh2m9dRBOs4eouPkflpP76P30heMFZ9m4la+83M8VXaBqdvnmCi/wmhlISNVl+m8dZK+0nPM1N3ky4qbNB/eyXldIkfUMZw02Ni9PoQTa0K56i3ksk8YBYFiCgNlXPKVcNFHQr5POGc9ROS7iinyFlEnFNJt0jGaGMNsViL385K4mxvPbHYsc9kp3MtJ4H5eMn1RkVSK9HzxmwDin3sL3YJ1KH+yDtWfvYfpmdXkrXyTT99wJ987lMtyPVO3rvM33fXM1ZQw3VvN3TuN3B+v5W9m2kgTxBC0Igzxs8Gol6xFt9wdywu+RL7ohX7pWrSL7eKsW7IWy0o3ol7yQbvIFcH//RZb3tXRmfUhQxs/pCMri76tGxnevYXeHbkM7d5I/46N9Hxkl+f+HZuc0vxkVHq//o9SjeMHsyb+d+Y5fbCDE0oHJ/z45Jde7HnFg8PvBHJyXQjnPATfEeh5TlxxckJESYiMqvmyp3KVkxMtchlNjpzoZpmUNqWCAb2RVpGQNlkYd1MSKQsWUh4io1Hs4ESInRNlDk40GKMfcyIihub4ZJpiE2mOT6baEk1zXBJNqek0b8igNSeH2swN9O7eQfe+7XQe2EHv0b1OTowVnaTn4iHu3DjD+M2zdoG+dZbJ8guMl55jsvwC01WXmSy7zFRFMdM1xcw1XOdufSFtJ/dxLFDDcde2QtWuAAAgAElEQVQwLrkGcs0vmIIQf8qEKsd+JOV6kMjBCRVF/ioK3OWUBChpFKvoj4hmItXm5MRsdjxTDk6MJMTSbbXQHRFNp8VKh1nDQJyRmaxYpjMjuZNiZCzB6OTEVEoEE0lWxhIsjM2zIimS8aRIxpItzjs19qedE7O5EXy52cxYRgI7Xg9CvdANyaL1yBe7oVmy7juccFZienY1xpf87ZxY6Y18iRvaFZ7E/Nyb1xb+9Ie0Jn4cPw77xji+JYKvsiMYidBy2y+Iz369nv2vunHibe/vFeiHe23c3xvPlzvjvleg977iw6e/8n5KoC97Ceybobf99RUvAYXeoVz1CeO6v/AJgZY4S9pVCcQ0yJRPCXSb46i6S2GvQDARa2Q8NopakZJqgZqaMBm3AsIpF8iokKkok6qoUpmo1Vqpi4ilVGemLjqeusg4GmMS6EzeQEt8Mh1J6dQlJFFlS6A5M5OOD7dSm5VB046NtOz5gMET++k9+SlD5w4xeNl+o3q46ASj1+15bsPXTzJVcZHpyktMlJ3nfn0RA8UnGa2+SFfxGQZKChmrKOVuSxtd1TX0Xb3FEWUEh93CKfSQUhwscc5rgSKuB4m5Fiznqq+SQg+lU6CHY+OZzUzhwSYbX26O5+HmVOayk5lMj+dOcjxdFguNaj01MiUNaiU9kWbGkmOZyohlKj3aGX2eTY9mJi2K0XjjvyjQE+mRTGVEM50Zy/08G3fzkvlsrR+mhetQLvFxCrRq0VqsK9yJfsnLWSZMu/h9VM+txrjCHcOLfmhXeiNdtA75Ejcifx5M3C8DUa/0JXTBe1h//u4PYWNc4OLiguXVN7keJOZGiJQbIVJHZNV+YnI9WMhtgYQSoZRKmYo6hYYGlYZGrYpmjZJWtZI2jdKZxjEfge7Qq+zNTvS6p8T5yflkV8Eug70L4fx7PQYDfY757W5qXenbqM7+iK5PD9Gy92O6D+9j+PJxus4fof/ScbpOf07P6UN0nT1E57mDTJdeYOjqcQYKjjojY6NFhx0pSJcYqyjkTuVVpm/nM1l7nfuNNxkvL2C2rorZ/n7uTwzwD1MDTF67xCeegRz+jQ/H3/fnoo+EM+uF5LtLOOch54yPiJOeUk65irnsLqY8WEiXRsVAbATTGQnczUnkbq6Nu7lxzGYlcT8vhbs5CQzEWmjWmrnkGU7ey56Ynn0P3SIP9Avd0f1kNco/exvln7xK8i98Gbt4hb8Zr6Ov4ixTnVV8PdXF/zvdyX+f6uQfZ3v4eqgT/xfdEC4OQ7HYE+0yT8wvhqBbsgbdkjXOOuSWle7ol7yHYcV6dMs8UD37LodDrPTk7aAvezOdGdkMfbSVoV0bGdydS/+OjQzs3PyUQPfv2PidtI4/UlOVf/M18f9nfr099gmBFnN5jR97X/Fh32teTwn0Za/HEj3PjELvUGdpu3lOVAkep/pVCcTUSxW0yO2cmL9U2CqX0ylX0S2XMR5tYDwhhhqB3F7lKFTKrYAwysKlDk6oHZyIoNYSQ6neTF1UHHWRcTRE2+hISqclPpn2xDRqHZxoysigbetm6nKyaN6xidY9H9gDLSf2MXzuEENXjn6HEyPFp5goO89UxUUmys5zt7aQoVunGam6QHfxGQZuF3Knsoy7rW10V9fQW3iDo6rIx5wIesyJogChPV0qSE6hr4JCDyW3/ZU0iJUMxcQxk5HM/Y3xPNgcx5ebUpjLTmIyPZ6xpHg6LWYaVDpqZAoaVEp6Ik2MJcUwtSGWybQoxhPNjCeamUmLeoITlsfdPuc58YRAT6RHMrkhiikHJ2Zzkjjwvi/Gha4oFts5IVtk54Rl+XqiHJwwLXd7zInl69G/4It6uaeTExE/DyL2lwEoV/gQ8sxqvFb9xQ9hTfw4fhyOVt45JmaTjbRK5VxYHcix1X4cecuXk+/4fK9Af/1pIl9+msDDXfHfEegrawP49DU/Drzh+5RAzx/HXfWTcNEjjCveQop8w52tW58U6Hqpgspw0fdGoNuVSnsUWqKgV6lgMs5Ek1RIWbCQm74CKoPF1IgUVEtUVCk0lEpU1GqtVKvNlOstVFtjqI6IoUxvoSHaRnNcEi3xydRHxdOYkkaVLYH23Fzqc7Jo2byRll2b6di/naGTBxg9f5ixS0eZvHGWvsuHGbl2kr7Lh7lz4wyTpecZvXWG6cpLjNw8zcjN07RfPkZ/WRnTLY3c62rkQW89j4ab+Gqqlf9+r5e/627mU+9Ajr/lTYFvGEUBQq4HiSn0C3ccg4sp8JFT6Kn63gj0vY0x3N+YxN2cZKYzEphITaDTbKZCJKPIN4gbQeHUK9UMxEYxmZbAXEYiUykRzpbI/5oI9OSGKKYyopnJiuXhpngebUmnTKohbtlqxM96IVnqh8gh0IblHlhXuBOxyp6+oV74LooFbxPxgieRP/VFu9Ib1fMeqJd7YnjRj+Rfy7G9JkTwjCeRLwu4pI/8IWyMC1xcXDjvZ8/jnf8/uR4k5rJ3KFcDQrgaEEJxiIDbAgllYgU1chWNcvlTOZitapUzjaNDr3JeHmzXqenQaZ1R5S6D3inU83L95J+7dDp6DXpnJ7UenY5Bs9lejkujpTM+m7bs3dTlbqf5o48ZOXKEjv276Du+xx4NO7yf0bNHaT20h+6Tn9GTf5i+y4cZLjrhLMNoj0Cfth8tl+YzW1nAVFWBPTpWWchE9WW6i88yXHmLr/rb+Gq4kW9GGvhmpou/nunj79qaOBEVy753/Tnwug9H3w0l/71wTrgJOeIu4sj6cI6vFZK/Tsh1n3DaVBp6oyyMp8Yzl53I3Ry7QM/l2JjLTmYm08Z4ajRdFjO3QqTs+XUwMYvfx7DIHd2C9agWrkH8zDsEPbeePZEZ/NVoA8OV53jYUMvXY8389VgLjwbqeDRQx9+Ot/FPc70c3/QhYYt9US3yxbjSHcvLwUS8aL/cali2Ft3iNaieXYv1JR90K9ZgXOZG/IueFKri6crOpi0zi6bsDY4GKnaBHtiZx+CuLfRt30jf9o1PSPR386JD33r9/1iBlr/zl3y9PY4HeQbGbQ6BXuvPp6/5sf91H46sDnIItPCp6PM8J676hFPkG+7ghIiSUBmVArH9QqtATI1I6ohAPxboNoXC/pTI6VbImYwz0SAWUBYs5IafgIpgMVVCBdVSNZVyNaUSJTVq82NOWKKpskZTpjdTHxVPc3wSzXFJdk4kp1IVb7NzIjuT5k15tO3eSsen2xg6eYCRc4e4c/ko49dP03/lCMNFJ+i/csR+WllyjtFbZ5gqv8jorbMMFZ+mo+AUA+VlTLXUc7ezgfs9dXw11MjDyVb+bq6H37bVst8nmBNv+3LFJ4yrAUKuBYkp9BNwNUDIFX8xV7xljkCL8jEnHBHoe3kx3MtL5G5OEjOZiYynxNNpNlEulHHVN4gbgQLqFWr6oiOZSLUxk2FjMtnqaFg0H4G2/EGBHnecUE5tiGY6M4aHG+N4uCmdm0IVsUvfRfysJ5LFPkgWuSJftA7jcg8sy9cTscod43I3NIveQ7HgHayrPIl4yRfNCi+Uy9xRPe/h5ETcqwIEz3gS/fNwLht+EJz4cfw47BvjRLKBcauJGz6hHH7Hm8Pv+HD4Nz6cWu1HtVDMcLTmKYH+aq+Nh/sT+fKTJB5tT+SrLBOzcTraFHIuugWz71Vf9r3mzdF3gzntFsZZN3tu22UvweM8aB8RhV4iinzEXPMTcitYSGmYmIpwkfNySJ1E7ohAK5yR5/ka0Z1KJT0aDe0qDaVBAm4GiSgXKamQaKmQaKlTmbkdrqBRG0G1VE+t0kSZ0kCF1kyNJZoKk4m6qCiqrVbqoqKosliosVjpy8qkJiaauiQbgx9toW3bRu4c3U/P57t5UHKRluOfMHUzn4HLRxgqOMrEjbMMFx5j9sZ5Zq+dp/fCCTqvnGG0ppQve1u411Xz1Jxrr+Dr/lq+nu7gb6b7aP/0AJ/82p0TawO44i/loo+IK/5SLvmKuOAv4ry3hIvuMm4EKKiTquiNsjCRZmM2K4G7OfYyYHM59sjdRFoUvVFmKkUa8t8L5eRbgVz3ldCsNTCSGMX0hhiHMNvzoGfSophIsovzfBvk+ddPtkueSYviXmYcf51no9VoJW75+8iec0O00BXFwvfQL12LabmbM13D+oK3M8dZu8yD6D8PwfpSAIql61E974FulQ8xvxSw4R0tET8PwrB8HRc0Nlpy038IG+MCFxcX8gNlXPUXOOe1QBGFfuFcDQjmim8gRYGh3A4VUSYQUi0R06SQ2+stK+wi3aZ5nL7RoVc5n+06lbPJyZMi7RRnk4EOrYZuhyx/u2tal0ZDl8pAtzWZ3qwPaN64nYrcTdTkbaJ52zbad22n/ZPtNO78gP7D++n+bA/dX+yj+9gBRi4cZ+jSMcaLTzNYeIyx4tNMlZxn9Popxm+eZfLWKaYqLjBdeYnJ8gvcq7vKcEk+3SUFTDTW87Cvhfvdtcx1VPFVdyUPhup5ONbGX4138duxXvqvFfChbzi7V/vy+dsBHHgrhD2rxRxcE8DhtQIOvR3GOVcBVSIF3WYjIwnRzGYlcjcngZncRKbzkpjNzHCcqMTQHxNBrVzLqXXhZK5aT9Szrhif80T+3FpCn30T+c+C+bqpnf/WWUv31bM8Gm7hYX89jwbquN9dyUTTDb4aqOevp3v4ur0WnwVvI38uEONyD3Qr7W27I1b5YFzmifq5daifW4dpmSdRL3iR8JI/m9+QcMuQxWDOFtqyNtC2MYeBHR/YBXpXLoO7NjG0eysDOzc/Ic+b6N9hL283sDPXmQ9dmhH3f6xAd+VZeLQtwcEJLW0KmYMTfux91Ysjq4McnAjlkmf4d9I4Cp7gxM0gASVhYirCRE55nr9I2OJgxHyqX4tMRrtCQbdGQ5tS7eCEkFKhgnKxhgqxhlqliRKBgnq1xc4JhZEypYFyrZlqcxTlRiO1kZFPcaLWGkH3hnRq42KpT7LRt3Uj7ds3MXp4L72HPubujXN0nNrHePEZByeOMX7jDMOFx5kpzmf66jl6L5ygqzCf0eoS7nU3crezmrud1Y850VbBo74aHk118NdTvXZOvOnB8TUBXPaTcNFH5Hye9xNy3kvChfUyigPkdk5EmplIjWc2y+YsFzmXncS93GQ7JyJNVAjVnH03hBO/CeSar5hmjYGRhCimNkQ7hNnOienUSMYTLX+QE5PJ1qc48dtcG016M/Er1iB91hXhwnVOThifd8Wy0t3+XGWveqNesh7NUneifhaM5UU/Jye0K72J+aWA9Lc1WP88EMsqNy5qbDRnp/0Q1sSP48dh3xh7rCpaBGLOvOXN4bcDOfpuAEff9uPMewHfG4H+PoGeilbTppBzxTOcA68HcOAN3+8V6PkodJG/9H9LoOdnu0JBj0ZDaUAQZSEibodIuB0mo1ZpokKipVysoVkfRYVES63cSL3aQqlCT6naSK01htrISBpjY+lMSaE2MpLWhASaYmJpS06iLj6O7rxsOvOyGNj5IcP7dtJ/YBcPis7SfXwvoxePMFecz0TBCaaunmL4/Bc0Hd1P1+VzzNSW8FVXHXOdFUy3lzHTVsFseyVTLWXMdVQx21bOXGcpXw438s1EF7+fHuGz6CgOvunDqXXhnHYV2i9deckc+aNCzrlJuO4no0asoMtqZCI1nnu5yd8r0P0xFqolej5/04+8n63hs3f8KBEq6bFauWOzp23MRxT+NQI9kxbFbHo0X+YkMJ6RzM7feCD8k18hXOCK4Jl30S5di3nFeudRnHWVB8bn3ZEueB/tMg8sL/pjWuWLesl6ZItdMf00AOufB5OxWoftVRHJfxnIMaGJ5owNNKXG/RA2xgUuLi5c8AjlWqDocTpNoIgrvqEU+Qm45ivkml+4/TMbLqBCJKJGLHReXpqX6Hat2lnzuV2npNPRkrtTr6NNY+8W2KpW0aHT0mMyPpWaMWAy0avXM2A2MWA00q3RMGow0iGT0mKKpj5zM3V526jO2kRNegbtH3xE48Y82j7aSvfeXbTs/oiez/fSsf9jmvduY+D0QXpP7af/3OcMFxxjoOAok7fPOU9Q7tw4w/jtfKYqLjJbfYW7tYUM3zhJx4UjDqjXcr+7ltn2SvvnuLWU2Y5S7vXWc3+wkW8mOvlyrJVv2uo4kxDP1rfd+fB1Pz59w5ddr7qx5+0gDr4j4MR7YVzzFdGq1TEUbWQmNZa5zARmc5KYzktiJjONu9lpTGfEM2KLp1ljoshPxKZf+GJ97j1UC1wRP7uG8IXvUfbFFzxoqaTiyF4e9jXwaKCJB61VzLSVMt1Qwt3Oah4MNPJXE5389zutCP98NYIFvmiXe6Ff4YZhcQCm573QL3FHuWAN5uXemJd7o1u2nsT/KmD3egtVcRsZyN1KV3o2LbnZDO3+kMFdmxnctYXBXVsY2r2VwV1bnhLo3m15zrrQ85cJe7dl/R8r0A8+TnyCEypaFTKueISx/1cBzgj0KVe7QF/0COOyl4CLHmFOThR4/isEWvZYoL/NiW61mhL/QEqDhU5O1CiMTk406SKpkumokRmoVZkpkesoVRupsURTGxlBQ0wMHcnJ1EVF0RwfT2N0DC2JCdTHx9GZm0nnxmz6d3zA0J4d9B/Yxb3CM/Qc38vY5aPMXDvDROEJJgtPMph/iJbjB+m6co6ZmhIedtYy11HBTHu5kxOTzaWPOdFRyoOhRr4e7+CfJgY5FBvLwTd9OLk2zMEJCec9ZeR7h3PWXcg5VzHXfGXUiOV0WY2Mp8ZzNyeJuZzvCnRftJkqsY7Pf+1L7strOPiOH7eFSrotdk5Mp0Y9dVI5kfS0QN9JsDKZHMlEkpnJZKuTEw+ybYymJrLtjfWI//MbCJ5Zh+CZ1WgcnIh4wRPj865YV3lgeH79U5wwrvRBudjtKU5seEdL/CtCUl8J4oTYTEtGOo2psT+ENfHj+AEOuYuLS52Li8tfu7i4/M7FxeU/fev9N1xcXGpdXFz+zsXF5a6Li8vG7/k3Nru4uNxzcXH5WxcXlxoXF5fX/ie/b4GLiwtVslDOewXz+dv+HFsdxsk1wRx7x59Tq/2oEojsAp1r4dG2eL7Zk8xXe5O590kijz5J4q922JjL1jIWr6BNLuKqaxCfveLHZ6/6cOKdIM6tC+Ocaxin1/hzfn2IPXXDX0qBIwJ9zVdCsb+YW8FCbgaFOzfFOomcGpHU0WRESrPi8RF5vVRCk1pFuUDAreBwrvmFURqqolpioESgpFZpok5l5laYnE5rAmUSE7fFOsrkeuoMZloi7ZHnprg42hITqY+Opikujhabjaa4OFoTEujdsIH+rCwmt29lcMdmRo/t5c6ZA0yfO0THoZ1MXzrJ+MljtO7/lKYzp5ioL+NBRy1fdddzv62K8ZpiZhtKuN9Yxr2mcmaay5hqtW+UdzuqmOus5v6AXTwmu6vZF6bhwNowTr8bRv5aIae8xZz2lXDKU8LZdSKu+QipF4voi7Qw4Tj6vpebwFxOLFOZNqazExjPiKYvzkq13MjBd4KJeu43bHz5XS54hNGoMTESn8RsWiIzqXGMJ1ocG1/EU6kb88dzo0l6JlMjmE2P40FGAo+yE7mwXov5mbcJXfAWkuc9Uf+ZO5FL12P7qb3Ws2H5enQrvFAucUOxcB0RPw3EtMrXUb5uDaafe2P8hYDIV1Vkvm0k5w0pJ2QW6jOz6PtwIxWJtu/bGP9N1sRF9zCu+9kv6dwIkXLNV8B1fyHFASKK/SUU+YRzI1DI7VAB5UIB1WKRMwI9XwGgReVI49BrnRHmLoOeDp2WFpWSFrWKDrWaHq2WDrXa2V64S6NhyGKhz2CgNcpCu8XAsFrHsNJMpyGO9uxtlCR/QH3uVqo2ZNKYu4nWjVtoysulaVMe9VvyaNm1jY5922j+eDOjpz6j6/DHdBz5mIFzn9N/4RDjxWecFwnv3DjDWPFpRq/b8zPv1V1l9PoFugrOM9dhP1Kebi13yvN0azlTreXMtlbwZV8DDwab+Gaik0eTnTyabuGbiR76q6oZuXqbM+Z4dnkK2fSLNWz7S0/2/zqAox6+tIhEDJk0TCZGMpdhYy4niencJOZy4+wpHdnJTG9Io8sSSUmolB2/CcS6dDWS5zzw+rO1pAgiuN/TSvu5Y0zW3eLBSAtf9dRwt/U2kzU3mG2yf2F92N/Io7E2fjvWQkagltAl/ihW+mN4wQ3T8/5YVviiXeSGZqErpue9MD3vRcxPg4j6aRAHAs00Z22mPzeP/g259G3b5BTmJ+d8BHr+2bstj4GdOU81WendlkWE57o/lkD/m6yJ/52Z5PceXz3JiTg5rXIRha6BfPaKHwdf9eHE20HkrwvjnGsoZ9YGcsE9lMteAnttY+dJpYTr/iJuBQue4sR8ml+jXEWjTGb/8qpU0KJS0iiT0qJWUykQcDMojGt+oZSGKqmS6CgVqKiWG6hVmrgdrqBZH02ZxECJWEepXEedwUyjNfIpTjTExNAUF0djbKyTE90b0unLzGTsg030b9/MyOFPGD21n8n8z+k9tofJC8cZO3mElgP7aD5zksnaUu531PKwq457rZWMV193cuJuU5mdEy1lzLRXMNtewVxXNQ+Gmnh0p4Pxzio+DdOw771gTq4O5exaAae8xJzyEXPKQ8JZVzHXvIXUi8T0RpgYT41zpkjNZsc4OGHjzoZoemOtVMkMHHg7mOjn3mTjT9/lgmcYjWoTQ3EJzKbamE6JZTzR6ogwf5cT4/OcSLEykxbLg4xEHmYmcG69EtMzv0Gw8F3ESz1Q/8Qd6xJX4l/ydHDCHd1yL5SLXZ2cMK70QfbsGuQL12D8mTemXwqIek1Fxlt6cn4t5YTcSl1mFr0f5FGR8IMItPw4foDD18W+ORpdvrsx/sTFxeW+i4vLBy4uLn/i4uLyKxcXlzkXF5eEJ34mzcXFZcbFxeVVFxeX/8fFxeUjF/sG+l/+wO9b4OLiQpGfH5/9xp3D74Vw4r1QTq4Jcgp0RZiAfquCmWwTX30Ux6PdiU6B/urjRL7ZHsfdXB1j8QpaZUIKXYPY/5of+1/z5vh7IZxdLyDfXcA5t2BndGH+dnWhl4ir3iKKAyTcDBJwO0RI1VO1PR0RaEddzwaZlAaZlC6DntKwMG4EBXEzOJyycDmloSpuhyioVZqolhuolOqoURgpFWooDtNQo4miRmOhNSKaGr2B+uhoWmw2muPj6UxJoTk+nrbERLrT0hjMzmYgK4ue9HTufLCJoZ1bGDu+l/GzBxk/tZ/B45/Tsn8PzYc+ZfJWEV+2VjPTVMZcczmzTWXcbangbksF41XFfNlUwZctlYzX3WSiqYTp1nLudlTx1UATXw4389upbh7eaWfu9i02ve/JgXf8+eKdEA65ijjiHs5xNyFn1gop8hLQKJXQ/6RAO0qATWcnMJOTyERmDENJMTRoIji2RkDEs7/B8szrfPxWIDfDlHSZzEwkxjKZFMNkcgRTKVamUizOTXE+ujCRFMlUgpW51AjuZ8RyLyuNFq2ZqBVuGH7mh+n1cMQveiJd7Ipl+Voin7dfCol4yQf18x7IF63D/IIfplW+qBa7oVnqjn65J6af+2L6SwFpa01kviPnhCie8pQsWjZl0/tRJoVW7fdtjP8ma+KcexhFXsFc8xM48y+LfB25mP4SinyE3AgUUhIqpkwgpEpiL5/V6OgKaBdoJS0qJW0aNZ16nSMqbU/faFMo6HRIc49OR69e72w1PC/RPTodfXoDA0oVvVIVPYYoauJSacnZRE1GNlWpGVTYkunI2UyNLZW2jDzatnxIWWo6LR/Y0486d26ha/92Og/tpv3QLoZOH+T/Y+89o9s+r3xd3nvXXWcmRbZky+qyk8lMMpPYcZdEUey9kyDBCvbeu1jEot5lyZKbJFuV6mInQRIkGgEQ7J2i2ACwiKTtODOZyck5c885z/0ACJIcJzPJrEyyZvlday/iL2IJX/i+zw/73fu3ddVXGLx6lvHqz3hQc4mJ2suM3r/ITPMN5hormb1/nYGbl1nuV7DQK+GLnmbmuttZULUwp5UwrRaj65LwqE/O0qASXW87uq5WHvXLWRlRsTKqYnlCy/K0hl9PD7DQJuOoawhFWyw58IoVp99y4L6rD33hkUymRmMozEBfmMZCaQaLZekslKYbmwtLCpjIyKQ1IJDrtu7E/9VPCPjONhzWWzHToUXXeY+2j06yMtDOUl8bSz2tGDSNzCobWOxqZ0HbxvKghq8mVPxyqo1b5QcJeNmd4M1eRL1sR9QGW5JediR2vQNhz+9EtGYXKS+7E7fekZDVdnzomcJ46XHGiivoLypj+MABRo/tfUZEf718Y/TYXoaPlDN0uMQsoAcOFtJ/YPd/dLT3n31P/DGxeCqLz09k8eXhVCMn0oLQCn25b+XG2X9w5v2fOvDpu55ct/ah0sbnGU48biSssvej2sGfOhcBDW6+NHn6IfUVmG8pzSUcocYx9qrAQNRBQnojRLR4e5k50eItpMUrBLFnMLKgKGRBUbQFiJAKI82ckIUlIg+PRxufhDziWU705uTQmZ5OV2Ym/Xl5jBYXM1JUxEB+PhN7Sxk/to8HF06aOTH+2Ud0mjlRzZJWikHdypzGGPOdEuY7JczKG1nWtLGkbWNa2ci0xri/FkxfAJfGNXylG2BlugdDUwN7Le0597YLH5s4cd7Gh093+XLN0o9qO19UAQKGE2KZzkszlkiVZjJXkoK+OMPIicde66HxXNjmQ8KqN4hf9Ron3zBxIjqW6cwUZrOTTZyIYzY3jpnsrwvoBBMn4s2c6AiOInH9TiJediLi7z3x32yL8GuciN/qSOhLNgStsTJzImSNFeFrbYhYb0P0D52I+bEvuTuiKH4niEuCNBMnihk8UEj1N3Pi2/XtMi8bi98+GCMtLCyWv/ZvGRYWFlNPPc9aWFikPfX8/1hYWHxuYWER9js+Z5WFhfh8meAAACAASURBVAXnf27N+bfc+WynL1csnxXQrZ7eDMUK0RVFsbQ/mZXjmWYBvXw8g18cSWOpItosoO/tcufka86cfM2B81beXHHw55qjPzd2eZgN8u85+Bmv6BwE3LfzpcE1gAY3H1p8BM8I6MciWh1kzCxoQ0PojRChEPgj9vSkydMTaUAwrT7BtPmKaPePoD3QGC1+oTR6CRH7hNISEIM0NIHO2FTUMfF0JhhLNnqys9FmZNCXm8twYSEjRUX05+XRlZlJZ3o6I0VFaLPT0Z07wdAHhxn79BR97x9AUr6Xgc+usKiVoutqZUZZjUFlzHot98qZ75Sg6xAzI2tgsrmKWVkDsyoxcz3tLA91sNSvYK5Xin5AxqNxDZ/P9PKPui5kJw9z6G17Trzqxsk3/Tm33ZXzO7y4usOXKltvNMLAbxTQc3uyWCjPRVeSxkhGAoqQGC6840ncqjcIfX4HOT9xp9JRQFdwMOPJ8UxlJGLIT0aXG890dsw3CujP09P5Ij+B5ZJEdLsLOfYjW4LW2BK0xo7w1VZErt5B6kYb0rdak7zBiqTN9oS/aIn/qm2I1tmR+Io7EevsCF9rQ/RGR0Qv2RL9AxfifyYgd0coHwem0Ja9B+3efahKc+goTECan/T7Dsb/1D1RaeNBnaMPYk8hDW4CswNAnYux+bXG0Y9aZ2NNpdjbB1lgIEqTgNYEB5nj6cEOj8s2ekTh9JhE8lBk5DPi+fHzY5/nochIBiLDUWUVUBedSGtKFu3pxoloTfGptCSmo84rRp6Zjzwzn478EjS7S1EVFNG7t5yBQ3vpPrwP2cFihj45yfjVDxi99gEPbn7CVMM1Ru5dYPDOx8w2Xudh1WeMVl6g99Y15rsVLPfJmJU3MC1vYEXbzopWypymlVl1MwumWs0pVROG7jbme6Us9stZ6JfzRY8SXb8Y3UA7j0ZULA538JupUc5FJ3DoVTsO/YM1F3Z4ogkR0h8fzWyBsaZ/fk+60eWlNJ358jQMpRmMZCSijojkiqUNKS9ZYvPfXuNy6Tl+OdzM0I1LPFK38tWIkrnOJha7W5hW1DCrbGRKXcdin4KVwS6+Gu/kq4dSBqquIvyhPaItzoRvsCFsrSWR6y2JNA30iXjBmvjNzsRudiZ47U4uB2YyWLSf4aJCuor3MHj0JOMn9j9TtvG4gXD4SAXDR0oZOvzEA/rxWO/H4rlv/39oqMqffU/8MbF4KoulYxl8eTiVpYpoHqYF0SX04+4uN06+5sSJVx04v9ObK/Z+XHPw56a15zMi+jEn7tn6UO8qoN7VhxZvwTMC+nGog57cAPWIwo2c8PCgydOTdkEQrT5BSHzCafMXPcsJ7yCafEJoFkQjDY2nMyYVVXQcmvgEtBkZdGdlmTkxuHs3w4WF9OXm0mUS1iNFRfTkZTJz5ijDHxxh/NP36D2zn/aKfQxeusJiZzu6rhamFVUYOuqZ07Sy1GNMuuiUTUxL63kovs+srJ5ZlRhDTztLg0oW++QYetrR9ctYHNOwMt3DL2e0tJ84xMG37J7hxCfbvbi6/QknhhPjfktAG0qymC/LQVecZr6pPP+2B3GrXif0eUtyf+LBdQcB2uCgJ5zIS2Y2N47prBims55koScz4pjJSuTz9DQ+z09gqSSB6bw8jv6NLcLndiFcbUPYczuJWr2DlA3WpG3ZRdIGKxI32RG6Zgf+338X0XojJ0Qv2RL+oo1xuNZTnMjbEcrHwhQkOSV0VuxFVZqDsjAOWX7ytwL62/V71zcdjKcsLCzEX3vfDtP7vmdh/GP6PxYWFtu+9p4WCwuLE7/jc1ZZWFjw/mt2XNnmQeVOH25Y+T4joFs8vBiKFTJdIGL5YCrLxzJYPpXNo/eyWTmZy8rRLObKY3iQEUZXSBD3bbx4/6fOfPBzZz7d5sl1G18qbYxNIV+PKntjRq/OxZsGd0+avb2RmrqrFQIhCoEQdZAxk6cODqQrTERfRDwdASIkPkLa/YNp9Qmk1ScQia8QRaAIub+INv9wmgVhNAtFtIZEIY+JRZWQiDQqGk1SMtKoaHrSM9AkJdObkclQbh59mVn05eaiTU+nJzubgfx8BgsK6CrKZ+x4BZMfHEVcmIds33tMNRkPQp2iFp2yjjl1I/OqJuaUYvTyRiZbqzEojM9zmlajmFY0Mi1vYEpWz5SqCZ221ZiN7pOxPNTBoxE5X06O0HOnnnN+MRz5m+0c/bkdH1n6c/4tb27Z+KIOFhmbCL/uXlCSxWJpDnPF6UxkJNMRHMv5dzyIeu51wl60Im6jNaffcEbs6kN3WAwPU9Mw5KWjz09kMjOCqcx4HqbHmkW0Pi8FQ3Y6K0VxLBRFcN/dg5jv/BzBdy0RPm9F+JpdJKy3I32LIylbHUxOBjvNtmApW12IX+9I6Gororc4E7nFGdFWZ6L/zpOkH/tw1iuFlsxCusqK6DlQQXtBFpqKfFT7f29zyH/qnri805Uaey8aXf3MLjFPC+haJ39qnHxNZRx+SPz8kAcEmMs4FAJ/OoSBxjHfoSFP1UUbBXSv6IlAHoyIMNc8j0RHm0s5xkKj6I1PY6B4H5KoZNpj0mgMi0ORnIMiNZfmxHTECWm0pWajyCowDgRKy0OSkIlmdxGdJSVo95bTubec3tOHGPr4JH0fHWfk6jn0zbeMjU33LmJorERfc5XBS+8zcv0j9D1ylk2AX+xqR69qxqBoYrK5Cp2iyXj1LG9gRm68VZnvlWLobkPfZSxVmu+TsTLeycKQkuUxDV9N9fKLqV5+tTzBdN1Nkje9zns/9afW0YeBWBEPs1IwFGdi2JPBfEUGj8ozWNibhqEsnYd5aagjw7llb8xUlXgm8ouBTkabKhmsu83KSC+PeloxaMToVS3oOsToVc3M97Qa99aAll+MdfH5WDtfDCnxen4n3qstEW2yJ3TtTkQvWZL0sgthL1oTsc6OEFNWLO9nAqojMxgt3ctwUSE9JYX0Hd3H6FNZ56HDpQwdfrbO+ekYOLibgYPFDBzcw8DBPQwdLiPT1eFPLaD/ZHviD41Sz11GTpzIYeVoFoayGCYyw9CGCLlv48WZnzrxwc+dufiuB9dMGei7v8UJ36c44WXkhJcX7T7+5jI/uX8gamEInaHBqIMC0YaG0xsRh1IQjsQ7kDa/IFq8A8ysUASEGznhF06zfyjNgSJagiORRsXQEZ9Ae2QU6sQkZNEx9KRnoE5Moic9g8GcXPqzsukxZaJ7c3Loz8tjID+f7qICxo5V8PCDI4gL85HvP81UYxV6ZZ2RE4o65lSNzHU0YVA0oZM1MNlajV7eiEHRhEHdwqyy6d/ghJJHIwo+nxii604tHwTEceRHOzj6mh0f7vDjk7d9uG3jiyoonKHEWKZzTQJ6z2ObSJMTR3E6DzKSUAbF8PHb7iZO7CR+ozWnX3dC7OpLd1g0D1NTjZzIS2AyM4LJjDgepseaRbQ+LwV9dhrLRXEsFEZyy9mN6O+8buTEc89yInmLg3nqZ/iabUS8uIPkrc7ErXMgdLUVUZudiNziTMTLzkT9nSfJP/HhnLeRE9qyQnoOlNOWn4mmIp+O38+Jb9e36xsPxosWFhY3v/a+n5jet9HCwmKzhfFg/PHX3nPLwsLi/O/4nFUWFhZ88IYj13Z4cXW7J9d2eP1RAnoyO4KesBCq7Hw49WN7zvzU3mxjd22X1x8loJUBQaZR3qF0BAoYjktA4R9Mi7uAFi8B8sAw4xW6SUDLA8KR+YUjC4igLSiS1uBIWoIjUcbFo0lKRp2YhDwmlq7UNIZy8+hMTqE7LZ2B7BwGc3LRZmSgSEykMz0dbUYG/Xl5DO4pYuTwQZry8xm4+DGLbXU8rK9E33qfZUUDhtYqluQNLCgamWi+j17eyEx7HQZFkzGjoGxCr2pGr2o2l3c8PhAfd10/6pfzi2ENSw/UfD7VxS+71VyLzaDsx9s5/qoTH73uwY1d3nQIQ79RQBsHUuSyVJ7DWFoCqpA4Lm/zIm31m4SuskT43R1krN3GFUvjqNfhuHhms1PQ5ycykxP1jQJ6ISeBX5bmMJaSQuZLPyPwe7sQrLIheI0NkWttSd3iTMZWJxI22poHUoSv2UbcRhsSNzkSucaayJfszAI6cqsLiX/rxQGbEBpTd9NVXIa2oICufWW0F2QxfvogfcdL/1Cx8CfbE5es3Ljr4E21i9GnvNE9wGy5WOPkQ7WjL7VO/tS7mhpgffxoFwjoCAxAGRSIKjwEdVgwnaFPRgwbM9Bh9IlC6AsPYUAUbnbXGImOZiQ6mj5RGN1BQobC4hjILqFn/3HaMvORhichj0qlLToFeVIWstRsmuJSECek0ZyYjiKrgJa4ZPpyd6POLUCelY22uBhlsdHTvPfEAZQH9zB64TT6+5eZvHuRybufoqu6jO7+JQx3rqA8d5YFjYLFLikGdQvLvXIWu9rRdYiZbK1mvlPCjKKRSWkdBnULBnUL8z3tzHVJMKiaWexq51G3FENnK/o+KQtDSh4Nq5gfUPHlxABfGIb5l6ku2t87Q+JWay5u86JTIGQ6KYHZgnTm9uUyX5HFYnkGS/szWNibznR+ND0xYVTudOPQW+4YlArGG28zfL+SlV4NhgE5811tRkGvaMSgbmFO04pB04yuq5WFPjlfjqv41WQH/zQmx/X5t/B63hLh2l2Ev2hF5AuWJG11IHDVdiLW2RH6wi7it7pydGcsipwcRivKGCwoYKi0hMEj++g9utfs9fy7hPPgoSei+enoP1BC3/4/upnwz74n/tB4wokcVo5mMlcew8MsEd1hwVTZ+nDqxw6c/gejD/RjTnyTgL7/tIB286TZ24t2X//f4oQ2NISOQAFDsfEmTvjT7ClAFhBq5kSrTyAyQThSv3CkT3GiOUiEIjYOdWISqoRE5DGxaFNSjVxISTVzYiDbKJ4fN6E/zkwPlBQydHA/zQUF9J3/kAVJLRN119G33OeRvN74U1bPvLyBhy1V6GQNzLTXGXkhNXJC1yFG1yE27qtOCXpT47mZFX1yvhxSszSu5vPpbr7s7OBajJETx1514sM3jJxQBhr9/80Z6Kc4sViaw6OybEZT4+kIjuHSu55PcWI7GWu3cXm7F21eAobj4pnJSkafF890dtQ3CuiFnAS+Ks1hICGBjLWvEvA9KwTftyZ4jTWRa21J2exE+hZHEjfZGCfSrrVEZOJEwkZ7ItdYE/GS3RMBvdmZxL/14qBtCI2pBXQV7aGzYDfaij3ICnMYe+8Avcf2/L498e36dv3nZhYc1r2M68a/wXXT37D7Zzu4YuXNZ+96cHWbGy1efowkhDJVEMHywTSWj2WxdDKbxVPZLB3PYeVoNnNlcUxkiNAGh3DPxpszr7rw/quOXHzHnWtW3lRaeZldOKqcBNx39OeevS/37UxCxNmHBjcvxF4+tHkLUAiCUAqCUQeF0xEYQpu/kMG4SPpF4bQ4+iN29qHO2Z12/+BnRLQsIIw2vxCafYS0CcNpC45ALopFnZhER3wC/VnZ9GZkMpJfQG9GJsN5+XSnpaNNSaUnPYOO1Gy6MjPpSIhlIDeXrow82jLSkOTnM3OtEn1DFTPSO6yo6piur2Sm4SazDXcwiKuYbLjDvKKJ6dYaptpqMaiamZU3mAXIo24pi13tGNQtLHS3M6tuxqCVYNBK0He2stKvZKa/Gd2ohM8fdLKgklP+hgNlWy157x+cuLTLDZV/AKMJUczmpjJfnMn8nkzmSjOYK85hoSQH3W7j+G5VaAxXd3iR9cLbRDy3k4DvWBL93A7Kf2jPHTsveiKimUqNR5+byExuPBM5iUykxjCTFsdcTgqGvBS+KIxlaXce7//Mnojvv43fi3YEPr8T0VprotfZkrjJnoT1NsRttCNukwPhL+wkdqMdcZvsiXhhJ1Ev7CJhizNxr7gRsdmZ8PXO7N8WQ11iAV3lhXQV76arsJRDAb6EW+0gwmYHobt+7yCV/9Q94bh+Kx5bfojXyz+k/C1LmjwCafIINGeha519qXH0M5V2GLPQrT6BSAMCUIUI6QwSog0S0mvyLe8ThdAvCqEvPJi+8GAGIkLN2eenSzn6w0Rog6P5/OhJNLtzUaYmIQuPRhaZREtoHPXB0bTHpiFLyUaWmoM8NZtOk4+5KjmDoYISOjJzkGVk0VlURFfRbgbKS+iuKKb/2D5Gzxyl78xhlquuM1X5MQMXTzFx5RPkJ45gkNSjVzYybypH0ivFLHW2oZM38rClyvxlcKlHxqNuqblUaaVPYRbU+g7jrctDTQu6HiXzAxpzLI11szKh4R8f9tFy/mMK37LkvoOQkYhIHqbFM1+Rh2FvFgsVGXxRksFiWRyLuTEMh4VwycWHoboWZgfqGK6tZLK9jsVeGQZNCzpFE1OyenQdYua0LcxqGpiQVTHb0cyjbhlf9Mr4lxElv+xvw3v923h9bxvBa22I2mBP/CY7Ita8S9gLu4jcYIvwRWtSfujFKatItPn7GNtfQW9uDiOlJYwdKWP4WPEz/s5G0VzE0OEShg6XfbNwPriHvoMl9B7aQ++hPWxc/dx/+Qz01jWrWDqRzcLJbJaO5bB8JIu5slgTJ4K5Z+vNmVddOfOqI+ffcefaTiMnbts9Ged9z8GPe/a+3LP1ocrB1Ivg5onY05s2b38U/kEoBEGohWF0BIQg8Qs0TvwUhdPi5E+Tkzf1Lh60+QWZOdHiHYBUEIrENxixtxBJYBhtwSJkohhUCYl0xCfQk55BX2YWQ7l55hvKpzmhTDWW/qkS4hjIyUWbnoskI4323buZunwVXcN9Ztrv8EhRzXRDJTMNt5hpuI3exIk5WSNTrTVMt9eh7xAzI29gQdtm5sSCts0oorvbmVWL0Xcamwv1mlaW+5XM9regGzFyYk4pZe/bTpRtseT0T525bOWGyl/AaHwkMzkpzBdlML8nE0NpOobiHOaLjZwYTY2nIySKy9s9yXzhbSJW7STwO5ZErzJy4ratFz3hkUylxKHPjWc6N44H2Qk8SI1hJjWOuZxk9HnJfF4Yx2J+Did/YmvihM0znEjYaEf8emviNtoRu8me8Bcsid1oT+xGe0RrdhD14i7iNjsR+7Iros1OiNY7c3B7DPVJBWjLdqMtKkBTUMLhAF/CrLabOPHOtwL62/V71zcdjBEWf1xt24rFv1Hbdu5tJ67u8uGKlTdXrLy5vMuPT7d7cWW7JxLfIAbjw5jaHcXywQyWj2Xz6HgOCydzeHQ0h5WjucyVJTCZFUNXcDh3rX049XMX3n/dmU/f9eCmlQ+3dvlwy8bLbGFnFtG2xgaRWmc/Gtx8aPL0pc0rAJlvEAr/EOR+wUh9hLQIQ/jXj4+i9PVAbCOk2UWA2NOHFu8A2v2DzQdjq5+QVkEQYt8AZMHhqCNikASGoEpIpDM5ha7UNMZ2F9Kdlk5Xaho96RmMFuxmIDuH/qxsFGl5tEbGoY5Poi06nubENAbOnGDh7jVGrnzEvPgui23VjNd8hqH1NjNNN5lpvMdMQxVj928wXnMTXVsd8+pWDJoW5rvamFU2GTNipqyCrkPMcq+cOdP1+OPQ9bazMKRkZbyTzx9oWRpV0/nxZxS+sp3DP7LmQ0tHOnz9GY8VoctOeuJcUJaNofix9Vcq4+mJqEMjubbTm9z1lkQ+Z4lotS1h39tG4nNvc+YnlrR7+DIU5sd0cihzBUnoMv0xpAQwlxTCQlYSut1ZrJSkUe8ZRPRfvUbI81YIX9xF5LqdRL20k8Qt9iRtdSBpqwPxW5zMtc5xW1yI2uBAxFpjTXTMBjvC1tkSut6BzH8QciekgO7SA/TsLUKSlYo8L5/eQ2WMnz7E+Jl9dB8t/EPFwp9sT5x/15Hbtl5UO3hT7+RtduCodfZ9kol28DZlxXxodPc1lhEFBNMlDKJTEEB3UBB9YWHGpkCTgO4XhdAdEsiAKJQBUbjZ27k7OJjBiAh6QkLojQmnIyISTXgCstAY5JEJSEUJSMISaA5PQBKdjDwhjfa4JNQpmXQkpdOdmYc6JRN1SibK5FTk8fE8KC9DnZ1Jd1EB/RV76KvYw8R7R5m8aHSUmbx0honPztF6+CCz4jqmNWLmu8TolHUsqJqZldYz3VZrzpbNmcTztLzBnOnVq5qN8Fc2Md3RhKFLYizp6JEzoZJg6FNh6FOh61Yy36Pi89FevtSNsDw5wMPq+5y0cafdL5iJxBi+zIlnsTQe/d4kvihLRV+Rij4zloEYEaOXPmN5QM6D+us8lFSz3K8wlpdIG1hUNqNT1mPQNDKnaWJeUcds/S30LTUsa4xZ8X+abOJX/TLc1r5N4It2xL7iQeRGB+I3OxL03HbC1rxJ7CZbgtfakvK33px2iGKw9BSDe/bQV7SboYoSxo7sYeTY4zHdJSa/5zJzA+HwEeNYb7NwPlRqFs1Px7HQgD+lgP6T7Yk/JD6L8DJy4kQOi0dzWD6SY+JENNrgMBMnXDljKuG4sdObm1beZk4YGSHgnoM/d02cqHEyccLDF4mXAKmPELlfMHK/YNq9AxEHBPGrM/vp8PeiySaQZhcBTR5etHgH0OYX9IQTvoG0+AsR+wYgDQpDHRFDa2AIHfEJaJKS0aakMlqwm67UNLpS0+hOS2c4L5+B7Bz6MrNQpOYgiYxHFZ+EJDqO5qQ0+k8fZ+72Zcaufsxc0x0W2qqYqLuEvuUWM403mW64y0zDfTMnZiV1zKmMXzrnOiXMKo1lHI9vKmc7mox10uoWc1P6Qlcbup425gcVLI9pzJzQfHiRoh9YcuRvbfjQ0hGlrz9jMeHMZicxvzvdaBFZarSInC/OQ7fbyAlVSARXLL3IWW9J5CpLRKttCPveNpKef5vTP9lBm4cPg6G+TCWHYshLQJcpQJ8cgCEplPmsRGZ3Z7JUlEqNeyDRf/1zQp6zQviiFREvWRL10k7jAK0tpqm0mx3NswHitrgQud7+GU6EvmRDyHp7sn4q5G5oAd2l++muKKQ1MwV5vpETY+8dZOz0XrqP7v5WQH+7vnH93xbGrmhnC+PB+B3T8/9lYcweLFpYWOy3sLD4Kwtjd7XB4tnu6jwLCwu9hdGS6K8tLCwOWhg7sH9vd/WH77pwxcqbS5aeXLL05LOdPlx414NL77oj9hQwEBf6jQJ66VgeX54oYHFv8hMBvcuHE686ce4NV86/7cZ1Sy8qLT3NB+M9Bz+qnARUOweYBbTRnsiPZm8BUt8gZL5BSH2EtHsHIvEU0BTuz28+O0Cdqw11tiE0uEXQ4OFnPhAlvkIkvkLEXv4oQiOQBoXRLgxFHRGDJjoeWXQMfZlZjO0uRJOUjDIuno74BHOGoTcjk474BGSJcYjDYqkVxtGYlM7oRycZvvoey82VzNVdYqbqAjP3z6MXX2emqZLphhuM3rvKw5o76Jtr0bXUoG9vYEbWwJzWWA86o2hkvlPCtLzBXMqxoG1jRtFoftarms0CemlUba4bnZ/o4npcOvkv/IxTbznQ7BPCaFzkv09AW3mTv9GKmDVWRL5gT8TzOxH99Rskv/AWZ95wpNE3EGmEiMHCQnr2FtOXn8FgciwLxVnMFiUzEJNKxro3CHrBDsFqJyKetyF2gzWpP3AmbqNx0mDiFnsi1xmHpURvdCRmk1FMx260I3mLA9HrbY1NhZuc+URYTFfpXrpKy1HuLkCSlUb//lIGju5l9NQBRt8rR3vkGwep/Fn2xCfbXbhl48V9O2/qTePma5x8uG/vSa2zrykL7U2tsyf1rt40ewlo9hIg9Q9CHSAwD3N4PD2zPzyUvvAQekND6A4Opjc0lL6wsCfDUcLD6QkJZCwzFInAhzbvEGQBEagiE2kNiqQ1JAppWBya2BTk0Ym0xyQijU9GmZiGPD6FjqQ01KlpKJMSkSck0Jmahjo9DWV6KsqsdAaLC5ncW8b0iYMMnNrHwyvvM1v5IaojxYxcusJiZzPTsmrmFHWsqMTMKxrN4nm6vY45rQSdupkZRSPLvfJnrptnNc2MtFUxoahnRtOMobsNXWcrM91yDN1KZtVSZtVSDFoF81oFC0OdzIxpWRrpxtDeQsOBfSgy4hhPjWKpOA5DeRS6kjCmC6N4kJ/CxKVPeDQiZ7TmPBM3L6HrbTc62iga0ckajKGqR69pZFEj5lFbLQMXTjFz9UOWpS2M3L3Bsuoe/9LbjOdLb+H219sJedGa+K2uRKwzDmaJeMmO+E3OBL/oSMJWPy44ZTBScYChkmIGiosZP7CX8SOljBw1Dkj5XS4cA4fL6D9cSv+RMvqPlNF3+FkR3X1gD9q9Jf9RAf1n2RN/SCwfzTIL6KVjuXxxPP+3OHHyVWfOvu7C+bfduLbD8xlOPHZrqnYO4K6NjynRYuSE2Nsfqa/wGU60evjTLArg1xf2Ue9mQ61NMA1uIurdfRF7+tPiHUCLqdRP7CVAHiJCGhSGNCgMlSgadVQcsugYejMyGS3YjToxCUVsHB3xCQxk55g4kUFHfDztibGIw2KpDoylKTmDkQ9PMHr9DI+armOo/YyZ++eZuf8J+qbrzIgrmWqoNHNC11zDbHM1+vZ6pqX1GDqfcGJO02rmhK5DzHznU5ww1fbP9rQxP6Tg0YiKpVE1v5jqxTDeyY34DIrWv27iRDAjcRFmi8i5PdnoSrMxFOWZBHQKY+kJRgG904u8jVZEr7Yi4gU7Ip6zRPSdN0heY+REvU8A0sgIhoqK6NtfykB+FoPJscwXZaIrSqY3KomMl95A+IItgtWORk6s30XKK07EbbQxez9HrrNBtNaWqA0ORG90NHHC1mhrt87azImLQcVo91Sg3VOOIj+ftuw04+ce3cvoqf2MnCpHe+TbGuhv1zevSAvj9dr/NsXj19am3//Mwuj/+WsLo1VR6Tf8HxUWFhZLFkYPULnFv8Pf87ylB9esfbli5c3VXT5c2uHChTeduPSmC00uvozFR6MrjGdpfxorx3PMAnruWA4rx/JYKk1kNi0abaiINtxYRQAAIABJREFU23Z+HPupA+//3JmL77ibMws3dnlwy8ZolF/rKjR2WDsHc981mAaPEBrdhLR4BNDuGYDcPxipXxBiJy9anXxYul7OyvESam19uOMeRpWTL23u/jS7+dLuHUibVwDt3oG0eAtQhkUiDQpDGRaJJjIWdUQMPUmpDGVk05ucRk9SKt2JKWiSkuhJy2Qwu5DOxBykESnIwjKp9AyjNXs3M7euMVlTydy9Czyqu8Ls/UtM3rnMVPUN9DU3GLnyMeM3P2W++R6PpHXoWu8xJ61hSnybeVkti4p6Fkx1bU+LZ73qWbEx19POXI+USU07c/1qDH0qFoe0/OLhICuz/fxqUEHyltc5/WNfWjwC6YkRmZpDMpkrSTc2XJWms7Ank4WSPMZS01GFRHLTxpeiTdYkP2dF1PetCVttScjqdwn67uskrrfks5B09A0NrPTJ+B/9WvRKMX3VV/h1ex0j5Xs49Hf2CFe9iseLlgi3OBHxohUJm4z1zvGbbEl+2ZGUV5yI3WJH9CYbIjfsImK9FVEbrUnZ7EjCS46EvGCH8AUrDu4KQ5pdTl9pHqq8fJrTstCUlzB4ooLhk2UMnyxj8Pie39VE+GfZE2ffcuDaTnfu2npR5+Btqnv2Notno4D2o8bJgzoXT5o9jI1NUj8BSn9/s3h+LJR7Q0PN0RPytIgOpz8omuHAEEbChDxIjUQRHkCrZxBSgYh2QSjNfoFIhKEoRbG0BUehjk+jWRSNLD6F9ugEJNHRdJiGPCgSk+jPy0OTnEJ/Xh69OTmMlZQwXFjI0O7d9OzOYeqDY8zfucDAe8dQ7D/LXHsDs633eCRvQCe+y3zLfcarKplvb+BB3W0WTJmy+a42Frvaedhea27We9z09GhAgU7byqSqyViepG5B3ylluqMNfaecuS4lOo2MOY0MvVbBVK8SXb+Kpf5Olke7+XJExcyF00zkRfGrwij+aXcYs/lhjJfu5x97WpgVf4bu7nUWFK0sd0qY72hGL38ioOfULcxqGpnrqGfszgV6zx6k/8w+5q6cQ32ggkd11/iVtg3n7/wY/+9aErLGynxzInrJlpQfeRH18nYi1zuRsimAS57ZDFfsZ6h0N/27ixg5UMHosQrGjpeZphDuNQvo4aMVDB6tYOBouVk4Px19h8roO7yXvkMV9Bwoo2vfHn607qX/iID+s+yJf2/8dP2LTxItJ4ycWD6Wy1JpIjNpUSZO+HL8Z46cec2RC++4UWnpxU0rL27scjdzosYlkDv2vtxyCuKeSzD17iE0ugXS7BFAm2cAMr8gpL5CxM7etDp5s3h5D8snSqi18+GOWxj3nXxpdfN7wglPgZETTyVaFKERZk50J6YwmJ5FT1IqPUmpdCWkoE5Mojstg/7MfDQJ2bSLkpGGZlDpFUZbbhFTlZeZrL6G4f4FFmsvM3P/Mx6aOKGrqmT4ykeM3/yUOfFdFttr0bXcw9BezZT4DnPSGhbkdcwrG5/hxOMvpyNtVTyQ1zGtFjPX3Yahu51JTTuGvg4MfSoWBjv5cmKAldl+vuppJ+3lNzn9Y1+a3QPoiQlnOjcNQ1EGc8VpLJalM78nnYWSDOaL8xhLSaMjOJLr1j4UbrImaZUVUd+zJvT5HQQ/9zZB332dpA07uSLKxNDYwEqflP/eq0GnaGSw9hr/LKlhZG8ZB35sR9BzP8djrSXCzY5EvLDzGU4kbXUg+RUnYjfbEr3Jmoj1VojW7SRqgzXJmxyIX+tI8Bpbgl/cxRFbEfIcIyc6cvNpTs9CU15s5MSJUoZOlho5se9bAf3t+stYqywsLPh4uxuXd3pxcZsbn25357KlKxfedOLT151ocPJmOCby3xbQ6dF0hUVwx96PI39vx+lXHTn/lqs5s/BYQN+19+WmtSd37HyotA/gloMxG13vEoDYzZ8mTz/kPkIUnoG0eAdw29MLtNcYy46hYZc3NW4i6ux9aHLwQOojROEfQquHP21eAYg9/JAGhdEqCKIzKo7e+GR64pLoS0mnPzWD0ew8+lLS6YiKpS8zk4HsXCThcdT5i5CEJXI3JIqxE6eYPP8h0zcvYGi4zuytDxm5fIqpOxd41HSP0VuX0H58isX6O+hqbjAnvotOfJdFeR0P6iuZk9Yw22o8JPXSOha0bUxK63jYXms+IB/bf02rxSb3gjZmuuTMdMmZH9Aw169maaSbf5of5X/O9rHfTUj5j9yosfek798Q0BMZWahCIrlq7U3OJitin7MkYrUdgc9vx+v7b7H9/32bc2mlrPTL+WJcwqjiOg8kNcz2tmN4oEQ/0cbMYCOBa97CZ7Ul7s/tImSDI5EbrEj7oTNJWx1I+6ELUS/tNHZVr7ci/mUHwl+yRLRuJ4k/cCL5FVeCVlkRtNaWoneEiFNKGNyzj96SIlS5RXSXVTB8Yi8PPij/9wjoP8ueOPm6LZe2u1Bp5U6Nix91bk/8oOtd/c0iusHZgwZnN1o8vM3OAOrAIDoDA9EKhc9MRXtaRHcGG5sLe8NF9AaHMxQUwlhoKCPREUgE/nT4h6HwDULs7ovEL4i2oDBaA8NQRiTQIUqgWRhBa1g0zeHRyOLjUSQmMlhQYPapHcjPZ2j3bgYLChjIz0eTlsZYSQkj+8oYOryHB2ePcDc7jc/bxTyov8JCSxWP2mqYrL3JVP1dDM11DNy+zKJczFRLFVPSehbUYhaUjWbIP/6bXjB5Q0/LG5hVNpldBAwaCfpOOTqNjNmOVvQq4xW1TiNjVt2OQdnGvEbORJ/CWGbRK+Fh5SnmSxP5Mi+WyaMlPOitYqzxUx7W32RBVseisgG9osHoXKBoYqa9Dp3M+KxXN/FlZytDH51i6NheDNfPIc5OpO/4AcZvf8w/D6hxe/FnhK/1JHytLZHr7QnfYEfkVmeit7oQ/0NnYja7kLzFjWtBWfSXVNBTvJvOPUUMH97H+PGDRgF9opSx42WMHN/H8Il9DB6rMMfTmWdj9rmU/sMV9B4sp+dAGb0Hy+neX0r3/tL/iID+z15/kIB+tC+V5WM53yygTZy4be/Lkb+3572f2fPJmy5c2+HB9R0eZk7csfMx2p7a+VBpL+CmiRN1zgKaXI2ZaJm3ELlnIC1eAu54efO/VVcYz46hwdqbGtdwak2caPcO/G1OCMNo8ReiiYylJy6J7thE+lLS6UtJZyQrl54ko5VdT3oG/Zk5tIliqfULozkknnuhMYwcP8GDj88aOVF/jRkTJyZvX2Ch4Q6jty7Rc/F95utuM1tdiaHpDnrxXRaktUw03MDQXs1s6z30bVXopXXMd0p42F5r3lM6lZj5XilTqiamVE3ouyTotRIzJ8zJluEufjk3zG9mnnCi1sGT/tgIpnKeFdALpWlmTjxIz6QjOILLO73I2WRFzCpLIp63RfD8NrxWvcOu72zn46xyPu+X8/lYK2PySibaatH1GTkx91DK7EAjwrXv4LPaEs/nrQle70DkBitSf+BE0lYHUl5xInqdFbEbrIncsIu4rfaErd1h5kTiyy4ErbJC+KINJduCaE4tZqCkgp7iIjpyC+kuLWf4RAXjZ8sYOlH6l8aJb9e360kJxyVLT6OA3ubGhXccuPimM1ffcafOwYuhaNG/KaCnkiNQB4Vy08abwz+x5dRP7fn4DWeubnPn2nZ388F4Zbszd+x8uGbpyiUrb27a+1PjIqTWyZ9GFz9qvHyReQagdBVwx8GF+tQ4flP/HhMZMbRa+1FlF0SLowC1TwgSTwEK/xBkvkEoBaFI/YNRhEagDItEJYqmKyYBbXQ8A2mZqGPikQSH0ZOUykBaJj3p6bSJohAHR3LHPZDOxFwefnyO3tNH+LL+FsNXTzF8/SRT18/y4Nr7PLjxEeoPTzBx7xqG2pvoqyoZv/kpuvpbzEuqedhwE0N7NTrJfabEt5luvsOMpJoHkmqGm+6Yr7vnNK1MKOqZ75Uy2dHIbGcLs52tzHYrMPSpmNbK0PUoMfSpWB7X8o+z3RiaZeT8yJFqOw/6o3+/gJ7MyqEjOILPdnqQtskS0XM7EHzPEp/n38X7hbeRHq/kqwENs1336K+6xK+7+pib6eZLXT+/Ngzwv5YH+c1iL/sExbittsfv+86ErnMgcusukl5xIHqdFckvOxK9zoqY9cZDMWqjNVEbjYdkwiuOxGx2wneVFVE/cOPTkBz69xzgYXk56pxiugr3MnzoMGOnyxk7t/svVkCfe92Bi285Umnlzl0HL+47elLjbHTjaHQPeEpAe9Po4k6zuxcSL19z/b4mMBBNQABqgQCtUIhWKEQjDDL7QXeapqV1h4fRExbIYEgAGoEHK4X5tHr4I/cLR+YZSKunPzJBCO3CcNoDI1AIo1AExxitt0KiUMSn0JGUijIpia7MTKRxcfTm5NCbk8NocTHDhYXmaZsjRUX0FuShf/8ULbl5TF+/wbT4Lnp5DQbJLWaabvCwthKduIrx+zdZlDbxsOE2Ew03mJPWPAlNK2Mt95mU1jEjlzCtaGVWKTY7dJhrpNWtzMgbmGirMdf/6zrETCqbmZa1MtHWxEh7IxPyFiZlLQzJpMyrGtB9eIThgnxWOhTMSWsYr6/kkUbMo+5WZlX1jEnuopM1MCutNwpneSPzHc3M9UhYVDTSc+Ig6uMV6D/9gIb0JHTnPqH/kzP861gvnltew2eVLUEb7Yna4kzkZidEa22IWmtLyhYP4rYKSN3qRG1IAcPFh9DmFqAtLuLBiSOMHN7H6AmjaB577yDDptdDx/f+lojuPbSHgaPlpp976dq3xyygtXtL6Nq357+0gF45ls2j49ksnMg2CuijOSyVJjKZLEIdFMJNay8O/8SWkz+146PXnbiyzZ2rT3Hi+k5X7th6c93Slau7vLll70+NSyC1Tv40OPtR6+mL1FOA0i2AOw6uiLPi+U3DaR5kxSC29qHKLogmR3+UPsG0evijMPXTKAWhSAXBKEIjUYRGmDgRjzbGyAlNbALSsEi08Un0p2WgTU6m3cSJW24BqBNyePDhWfrPHGWlppKRK+8xduM0E1fPMHH9LCNXztL1ySke3L6EofYmM/euMXH7ErP1t5hrqWKy8Rb6tmc5Md1axXhrNcNNd5lVNqPraGZOI2FSUY+hq41pVRMzmmYTJ+ToezuY0cqMzOhVsTym5auZbqYaJWT/rR1Vth70R4Uz8zgDXZJuzECXprNQks58SS4Ps7JRCMO5uMOdtM07CHtuB4Lv7cTnuW34r99B28krfDWgYVJxm6Haa/yiW8viZBdf6fr4tb6ff300wH9f6KVCUIjbagf8n3MhdJ0dEZt3kfiKvbnEL3qdlZEVm+2I3GBN5AZrojbakPCKE9GbnPB7zoqYv3HncmgOfXv2MVK6B1VOIV1F5QwfOsjYe+WMvl/I8MmnBPS3Gehv11/IMvpAv+vMpZ1eXLX05qaVLzdsPbi+051r21wQu/owEBXEzG7jIJXPT2SxdDLLZJCfxfKRTBb3xfMgIwxtsJCbO1w4+sNdnPyxNWdfteezHe5ct/HitrUr9+09uWvrTpWDF3dt3bln58F9e88nI5Jd/ZG7Cmjw96TeTUC1nR8rN/fyv+7uZSAtgnoHf+ocQrjt6I3YW0CTsxdqoYhmN1/kfsF0CKNo8g5BLYpHGx1Pb3wC0qAQmgMiaPANpj81g7HcHLTxsWhE4UgCI7jlHkJXTgkzp04yd+08ussfMfPZB4ycO87w2WOs1N5g6MJ7DF88zfSN84xdOou+rpKp6utM11Sib7jNbN1NputuoRNXMy+pZ7rhHg9rbzN89zrTMjEGlYRZRQv6DglzaqOH7rS8wSgmpHXoVS3MqNqZ7mhDp5GZr7yXBrV8qRth6UEf56JiuLrLh+HwKKYzkpkvz8Ww12j5tVCeysLedHTFGQylJiILDuXSdmdi/9tP8P2rd7D6zjuI3vZlpqWDLwc6eNB0j4fi+ywPdbDysIvPRxT8YlzFL8ZV/PN0N/86P4Ty9h2cX3LFf5U7YWu3E7HBioStDuYa6KiXdhK51pKYTQ7ma/An9W2OxGxy4KxHPLLd++g/cIiOogJURQUMHqxg7HgFYyeeZPLGjpcxcnQPnXv/Ig5GY1nTOy588nM7Knd5cHuXB3XWHtQ5eFPv6k+1qSa6zsWPOmdfGl28aHbzpcnFG4mnsblJ6ReAyt+fDoEApXkoUDCa4CA6Ao1+0Z2hIfSEhjAWGcNwaAgjUcH8cl8JCt8AmlwENLv40OAZiDw4GokgHGVoLMqQGORBUUgCRUiCI9HEJiCPiESZlERPdjY92dnmwQ8Te0rNQ4G6MjPRZmQwkJ+PKisdeVkZ03evMdd8n8W2KqYbrzHdeJ2Zppv037jIiryBubZqZlvuMi+rRd9WxUzLXWYl9xgTVzHW0oBB1c6MvImFjhYeKcXm7LNB08pKr4Lee1fMf+uPQ98hxqAQM6loZVLWwkNJEyP1VYw3VDNee4PB2mvMtTSgr7vNI8VN5tU3eSirYq5LzIK2manWu8y0VzGnbDQL6DmlmIWOZhY1Lay036ftSAkPPz2HsqKQ8bPH0ZYcpv/9MxgG6vBc/xaBz9sTsH4nkS/aEPmCNZGrrYneYEPMZhuEa21J/qETrQm7GS4tpjs/j97SMoZP7GP89CGzcB49deAZAf349fCJfQwcLafPVAfde2gP/UfKGDy6j/7De80ZaO3eEjavWf1fTkC/snoVj/Yl8fnxTJZOZrJwKoulY5ksH8kwciI9FG1woIkT1pz4O2vOvmrHp9vduWZt5MQ9Ow/u2rqbeXHPzoN7dh7m8ql6Fz9krv40+HnQ4BFAlZ0Pi9dK+f/u7mUgTUSdgx+19sHcdvpmTigCIxD7hKASxdEVnUB3bDzS4FBaAiNp8g+lJymNkexMtPGxqMPDaQ0QcdsjhM7sIqZOnGDu6ifMXvqQqYtnGT57jOGzx1isusrwxdMMXzzN5PWPGbt0lpnqq0xVX2eq+jr6htvM1N5gysSJudY6purvMlF7i9Hqm0xJm9B3SJhRNKNTtqJXSZiS1ZtvdSaldeg7ms2cmFVL0WlkGLQKHg128sXsMEvjvXwUG8dlK28GQyKZykhiriwHQ0UWC+UZzJenMl+RxmxROoMpCUiDgrn4jgOxf/33+P7Vu1h/dxvR2wMYq5fwRZ+SkdobjDfeYXmwg5UJLSsjCr4cV/HlWAe/murif84N0nblKk5rnfD7vitha7cZObHZnuSXHYndYG3mRNQGO8JetP4aJxyI2ezAOc8EZIX76dt/kI7CfBMnyk0lU6Wm+IvjxLfr22Xygd7hxlVrXyp3+XLb2p/r1m5ctXTlyjtO3yigV97LYel0Dp9/bZCKNljILUtXTv+9I+dec+Lcaw5GAW3txT07D6odvc1NWFUOXmYB/djVQOwpROUpRBIioF0gosben//TdY3/XllMR5Qf96w8qHMIpcpdQIOHMdsn9wum1t4NhX8IqpBwOkQieuISUYREoRYl0egVgiwsnt6kLLTxSchE4Whio5F4hVDnEUp3XgW68x8yfvEYM5+dY+TccYbeP8rQ+0fRXf6I7vcP8+DKB8zdu8zMzQsMfHKSyXuXWGi+z2zdTR7cvczD+1eZqr3FdMM9HlTfZPTedRbaGpiX1KNrrULfVm3M9EmqWTSJjMe1o4+twea6lGbh/Pjae04jxzCqZX6il3/sVHPwLRu6hKFMpiU8I6Af7c1gcV8GM4Wp9CfF0eIv4Oyb9oR+/x3s/upN0t0TmNGoWOpvo+XsMcZa77M8ruGLUQ1LPTKWBqUsDUqZ62lhZVjO/zAMYOiS4bDWGsFz7oS9aEXEOifiTAdjzPpdxkPxpZ34f/ct87TBxFfcid/qStRaJ4pfFSLJKmbkcAW9ewrR5BfRv7+C8eOHGDlaxsixpx0N9vwlHYxGH2hLV86/6cT1He7ctfLkvpUbdfYe1Lv6c8/OwzzWu8bJh1oHD5pcvGl09qLJxei1LfUyTtV8POjh8WRNdVAQmiAhXaasdHew0bVjNCyC/mABD+IjaPHyp8kjgCbvIBQhMUiFkUiFkciDo+mMTKYlIJaWwGgUokQ0sQmoY+LoyshAm55Bl8luqz8rm6HcPDRpaWbP2v6cXDoS82nIzmKl+iZj1z9CX3uF6XufoK/5lEfiu4xc+4T5prsYxHcxtFaxqKhnsukWekk1cy11TNTcYrTqBjpZI/r2Wmaa7zFRf834e1kT88pmDK11aM+fY7LxHqP/P3vvGRyHeaXpsm7Nrdq912tZVKIo2fLsrGfH65HtsWVLTMggcs45kmAUI4icARIkiJxzzuhGIzRyzjk1Gt2NBtBIDCIp0WF27s7WzDz3RwMtcuzZmf218pRO1Vcg/3d/z9vne897egVsHiyL0Awl9rWw3tOOorOV9Y5WJKJ6VoRVSNsFzDeLULQKeDYoYqY8lb3hNvYnOtkfE7M70sZGv5DNfiE7w23qDZ9DYrZGOtib7OXp3BAvxA0MRwezmZfOWHQwC3eCaXe6xGNhJb9XDmPxzk+x+79O4XT8BF7vnsH7uJbGfuR9XAv7oyfx/ciQ3s9DkETGMRMYznz8LVZT4pBnJKoHXlPiWUmOYTUtjrW0u0iS414T0a92o5eTYg680dEaAT1/N4rZhDBm4v+3MqH/j38n/i1n4473gYC+zhepr+wLSLzGbpQfsquuTDo7UHvAicyPDTScqDyjFsyHnDgc2n1VQB9yYtTcgV5nW7ptXGg7a88/jpbw36tCGfW2pfG0Ka16LghN7GgztVKndVg70apvyrCNMyNObox5eDDjd54RNx9GXM/RZe12wIlrTPoHMOTpzri3N70WzrSauTJ9K5LN/CzWCh+wUZyp4cRK5gM2SrKZy7rPWlkW2w0lbNQUsFSQgqKhhL3OJjZbapA1liFvKkfZWoeyrVHDib3eNnZ6WjScUHY2ouoVsj8sRjnUprFDHeZEH/JhZ2pYw4mdiSF2JJPsyuZ4NjJE0glDphxdUVw+z27U1wL6cfRVHsV+zkbwFRYu+NNpbUvaz3Rw+c4n6H/nV9y2ucLmxBiPZrvpy01B0tXEE+kEzyTjPJ4Z4PFiP48X+9mZ6dJwQjHcheG7Oti+YYLrISeO63LhB+rXSs+3T+D1zknsvvNL3N7Wwvu4Aec/MlEnNr1jSPjPnOi9HspKQhSzYcGM31FzQvogAUli5EHazTeSE9/Wt6W+GItO6lOrbUy9ril1OiY06hnToGVKwykTus+asOLt8JqAfpZ2i6fpt3iWcovnSTd5FHuOrUBf9SZCHUtSf6xN5se6FPzKkAotM6p1zKg7Y0SDtglNumYI9S0QGVgh0jWmzcCMLhNrukys1U9t1laMWbogNrKl1kqPf1go46uMq8yfc6bmpBHNes50mDmpt8MZOyDQM2XQ3pV+OzvGXD2Y8wlgwM6FUWdP+m2dmfD0ZfKyD5PnvZny8WbJ7wIjtq40mdmylXCXlbgwnlZmspobzVryPaZiwtgtzmE1+yGreSls1xWjqi9mtSSD9ao8HjVXsi4oQ9pQilxQjlxYwX63EEl1AZLyPFTN1aja6njU38JmZxM7fW1s97ai6mlB1lrP3oCY/dFu5H0itse7eTTZx/aAuju31iPUWD12xrvZnR5mY26E9fkRHi1MMFZUQKu3MxvnPfjqznl2Yi/wOOoaT8Mu8ijMh63bHsydc6fB1I47PzLE5kNdquKjeSnt5fFgMyNZqSgGBDxbHODpfB/PFgfYnehge0Q9ELY/P8iT1XF+o1rkbyVTGL3xaxzfOIvnu6fw+8iIcx/q4fLGJ7gf/RSf907jfvRTzn2gxbkPdPB9Twf/9w1w/542F9/Xp8n5Oisx91iKjmYqKIq5sLusPYzSdBJe7Sh8wy7G7x45coR6HUMKPzGi9FdnqTtpilDLHJG2+kegUN+CNmNbTYdMpGdBq74ZIkMbxMZ2dBpb0Wtqw6C1PQNWtvSYW2m2po3Zq/3RE/b2mmHCKUdH5hydWXL3YNrZlS5TazrN7ei0dGTA0YsuaxeGXXzptnFlyNmHFnMXuh18GfO+xLjvBUb9zjF2PkCz8OFw6cPCjZsMX7jEzI1AJs/7M+J/nla/cyhLsthtLeNxVyWbgmLWmyrZaKljqTSHvbZ6dlprUbXXs9cjZKu9kb2eNnZ71OJZLqrjUb+Yza4Gdvqa2e1vR9XTwla3CHmXgP2RTp53tLGSnYmspQpldwPrPc3IuwRs9rei6BYiaatD2t6IrL0BWYtakM+VFzCRn8lUSwlPJ1uYLk5jo1vE9mgXOyPtKHubkHfVo+huQDUoYn+sQyMsDpNtnswOIqsqZCklham7oQzfukaBnj3ic6E86qzlN2t96L7xF9i/qYvfMQN8j2vj8d4pnN78Fb4f6uB9XAuH7+lw7iMbeq8FsxgeylRQJJN3w5Fm30WemchqRiyy7ARW0qKRpMcgTU1gNSWepQfRf1RAH/5/ITFS05k+TOb49ymgvTQd6Fc58ezBDR7FnGPjljfTLo4ItMxJ+SsdMv5ah7xfGlB+xpQqbdPXOCHQM0ekb0mzrjGt+qZ0GlvRaWKltjhZWDFs6UTbWRsEdib8/WwxL7OvMevvRM0pNSfEpo60m9jSZmSHUM+UAVtnBuzsGXN1Z9b7HIMOroy6eNJn48y4py+Tl3yYPO/DpLc3C74BDNq4IDS3ZyM2ntWESB6VpSPNjUWafJeZ+Ai2CrOQ5iQjzU9FVVfMVl2RhhP7wgqUgjKkDSXIBRXIBeXsdDQiqS5kuSyPTWEVqrZ6HvW1sN0jZLu3he1e9fdI1lrHbn8beyNdKPpaUI138Wiqj82+VpSD7ch6RahGD4fSu9mZGkI5N8z6wgiPFyYYzc+lxdMZZYAHL+6cZyfmAo8iP+dJ2EUehfuydduTOX936o2sufMjQ5z+4iw18fG8WOljv1/IeF46igEBXyz083S+jy8W+tmZEKMa6US2la6AAAAgAElEQVQ1pt48+mR1jN+oFnk2M4jRm59i/58M8Hz3NL4/MML/A90/4ITf+6fxO66N7zEd/I7p4/aGFpeOG9LofJ2l6LssRkUydSeCuXD1nMHqg0hWH0RozjeQE9/Wt6W+GEtOG1Cva0qDnhn1uqb/ZgH9PDWQFw9v8SQ+QCOghTqWpP9El+yf6b8moIX6FogMrRDqW3ydZqBvqrkYDwc8XhXQ3b4O/MNQBs9TL9HnYIxQz4pmPWdEhupORN1pE8ZcfOizcWLE2ZlxN0+GHNzos3Fi3NWbMRcvpjz9WLgQwOLFS8z6XUBs4YjIxB5pVCjrd2P4oiCT+dgQ5uJDkafeZ7cwm5HIINZyU9ivK0Feno28Igd5RQ6btYXsNJairC9BXlvMen0pyoZyJBV5zBVmsNdSx05rHfKmcra7mtjta0HV08JmVzMbnUJ2+9tRdgrZ6G/l8UAHCmEto8VZyHua1atbB9tem8LeGu9na3yAzYkBdqdHeLE6x7qgjMkrvjwJ9Gc7wodHUQE8jr7Mo4gL7F/1Zt7ZlYJfnyXV2J31zn6eTAwgaa9iqq6Yp5PDvFwd5dFMN49ne9ib6kQ11sbumNqb/XhJnUP91eY8X82PYHr0BO7vWOB7XBu/j4wJ+IH+ayu73d78Nf7H1V63c8f1sfsPn2D9Z78k8aQb00FxrMTcZyYkkqngEDYe3tcI6Fcvw8OzfC+U8ahb34SL8btHjhyhzcSUshOm5P1Mj4pfGFP9qQmN2pYIDNRpHA3aJmorkq56MLbprD0CQzuaDWzoNLahx9iaQSsH+q1sGbJ1YMDaTrNyeMrJiQl7e03U3WEnesXTkwELCzpNLOg0t6Pf1pNuG1fGPc7TY+tGj60b/Q6edNl60uPsw5CvHwPePprlD4cr6acuXWb68hUkgXcYuXSdwQtX6Xbzp8nem/l7d5krSuKRoIgdYTGbTSXstdWzVFXIhrCaraZKtlpq2GypYbu9nnVhJYrWejbFAiSNlTwZEPN4oJXdfvXnerOrGYW4ib0BMVs9LTwZFjOWn8xaUxnrHXVIW6uQdzay1tGIqq+V3XYhksZKlgSVSJuqkNSWsVpTxkxhNsOF6bwcFLFakcVmey17w63sDDezNVDLWkct8q56NvuFqAZF7I60sTncpsnNfbI8xN5kK2MF91lIjmYhIoTsvzGk+LQto2Hh/G6lmzVxE4ZHP8bxnbN4HTPA70N1KoDPsdN4fXAKn4+McHnXhGt/acfwzTCWIm4wGRzE0r0o1jPvsZoRy2pGLNLMOCTpMWoRnRr7dVf6FRvHqyL6n/ujZxPCmL8XwUx8KKORgf9uBPS8px0bgZ48jr3Is6RXOJFy+2tO3PZRC2gdC9J/okvWz/TI/0QtoKt11KL58Edqs4ElLYZWtOiZ0KpnQqexFd2mNvSZ2zFkZcWohTNiI1v6zznzP0cyeZF+mX4HYwR6ljTrOSEyUFs+6k4bM+LkTZ+NI0OOToy7eTBo70qfjRNjLl6MOnsy5enL3IXzLFy4xIzfBdrNHWgxdWA1MoT1uzE8yU1nIS6UufhQFGn32c7PZDw2jLXcFHZri17jxEZNgboTXV+q5kSdOsFpuTyXucIMtptr2G6pRdZUjqqzkZ1e0Wuc2OlrQ9kpUHOivwO5oIaxkhzkPc2sD7RqlgZtjXSo13+P97E13s/meD87U8M8X5lFKSxn6qofjwP9UIX7sB8VwKPoS+yHn2fvqg8zTi7kf2pEto0/CnEvj8f7kbRXMV1fwtPJIb5cGWZ/uovHsz3sTnagGm1jZ6ybnQNOPJVO8NXmPI9GuzE9egLXo6b4vq+N70fGnP++mhMeb32m4YTf+6cJ+L4e/u/rYfcfPsHm//6EB6fdmAqKZSnqHtPB4UwFh7L+8N6BgI74o5xYuhvCWOTNb8J34tv6ttQXY5nWWRr1zWkysKBR3/zfLKC/TLvDy9Q7PLt36TUBnfmxPrl/Y/iagNZ0ng2tNE9x7YbmtBxcjH0W9upUjVcE9JP0eP5pNBtFhDM9toYIdC2pO2WDUN+SLgtHBmy96LJwoNPchlZjY8ZcPRCbWjPnE8Ckuy+z3ueZ8zrHiJ0bww6e9Dr4ILJwZfVOLGtJocgeRDATegtJbDSyuLtIHsQzlxDFo/J81nJTkBdlsFldoOkoyMqzWSvLYrOmiPWKQjarS5hOf4CivABlTSmrFflsi2pYF1YiF1Wx0dHIVrcIZYeAnb42dvra2OxtYXOonaftIhbT0pA3VLHWL1KnFox3oxpVD2NtDotZH+5ma7CHvb4ediaHUSyNoVwdYbcyF9UtXx5F+6AKd0cV6s/2rfPI/NwY8PdnurKKnbU5ZON1rIlrULQLebowze7iBE/melGNtfFoppuNYRGbIy3sTfSyP9XHFytjfLE2yQvlLGviBmyP6+D0hhEe75zE7ZgOFz4y1Kzt9nrnJJ5vn8DjrV+rvW7vaGH1Zz/n0g8saA+IYiU2luWoB0wERrASH8Ha/RCNgH517fGrF+NoxI1vwsX43SNHjtBvY0X9r43J+2/65P/UgMrTFhSfOEu5tgkN2l9HMjbp2yAwsKXRwJams/Y0G9rQbmyL2MyBbovXVw0P2TowbOfIlJPza+kcM87OzLq4sOjmRre5BWJTazrMHOi2cKXb2pU+ew/6HTwRWzjSbuOszoT29mHQx5dhP3/Gzgcwf+06SzdvMR5wAUngHVZuB7Jw/QYj584zEOBHi7037Revs1lbwXZ7LarGAiSlyciqc1mtyme5NJs9YSUKQQX7XQL1k3NjOfKmch73t7JSns9Oa53az3kA/e3eVja7m1F0CNgZ72F3rBt5Uzmy+lKULdVIGktZFVWw0lbHRo8IVWsj61VlyGvKWWuoZF1Qw2pVOZL8QoaSE3k21s5KUwHKLiEbA+1sj7Sy1dOIQlzHek8jiu4Gtgaa2RttZ29MzO5oJ6qRLrame9iZ6+F3C71MpcczFhVE0i/0KD/hQK2JD7LSEh5Pt1NzJxiPH+ph/11DvN83xuttbfze1cPrrRP4fv80F35kjN+fWxP0M08mroewEBrB2O0brCREsJ5+l9X0WI2IXs2IZSUtGmlG/B8K6JQYFh9EaTrTr57F+1Ga4cKZ+FCmYoP/3QjoZS97NgK9eBx7kS+SrvEs9SZP02/yPC2Qr1ICeXbvIpu3fQ44YUHmx/rk/NzgNQH9h5ywoc3ADJGusfpl5yCKbsjKilFLZ9rP2rCdEs0/DmchD3emx/YsAl1Lak9ZI9SzosPMgX4bT7osHOgws6bNxIQRZzc6zGyY8TrHhJsPM17nmPHwY9jOjSEHT3odvGmxcmP5TiSyB2GsJYYzGxbIcnQksrh7Gk7sleaylpeKrCiDjap81qvy2GkqZa0sC2lpJhvVhaxXFqKsLGQ6/QHy8nzWa0qQVhagElWjEFQgb65E2dHAZlczyg4Bqt5WDSdUQ+3stzQxn56KrKESaZ+QjYMmy9ZIh9oGONzO+nAXWwPd7PZ1szMxhGJxlM2VIXYqs9m67cvjKG+2w9zZCvVDdes8Un8PBi8EMF1ZhUoyxdpoPdL2ahTtQp7MT7GzMMbj2R5UY23sTXWyMaLmxO54D3tTfTzVcGKGhaYKbI7r4vBdQzUn3tPh/A8MOP/h65zweuczfN/XwvOt01j/2c+5/JEl7QGRLEfHsBR1/4AT4Ujvh2oE9KucWEkMYyUxjMWE4G8KJ76tb0t9MVZpGyPUt9Ackb4ZwtOmtJw2Z9DEApmPEzvB59iPuszTB9f5IvU6z7Ju8DzzJl+m3+TZ/QuoAr1YdHeiTcec9P+qRfZPdCj+xJCKE8bUaZtqugoa7+iBhUOofZZ2Q3NNF1psZcOgkRN1uuY8qn7I3zWHsXLJkUknB1r1bWjSs0VgZE+HhaPGV91h5sCosy99Nq6MOHkw6e7LtKc/w47u9Nq6MOAVgNjSiR4HFxbv3GDjYRzr0WFIwoKZvXOHxYgo5iNjWIwOR5WVymZ+BpvluSgr81jOfchqQSqy0kwUdQVIa3JR1heiLM9hJfMByvIcpPUFbIjKkVbnstlUwkZjMdvN5axW57PV1sRGuwBlp5D9sR52RzpRNlUwmvsQuaiK9Y46NvsEKHtFbA20sdnfyvaBZ1Q50oN8qIu1gU4Uwz3Ih7p5NDHEy/luFmID+NsgT14Gu7B904flW5+jqCjk8WQ/z2Z7kIhKWW2tQ9nfyqPZAfYWhtia7NZcvoddbtVoJ6qpDh7Nj/B0aZKvZGP8RtlPV3I2dj8ww+YtAzw+PI3XOwZ4v63LueOGeBw9g8fRM7h97xQexz7D8/0zuB89hedbJ8gw9GY2JJG1qATmw8KYiwhh9UEUaymxrP2R7vNKYhhLd0O+SRfjd48cOcKEmz0dBqbk/9KUtL/WIe+TsxR9akL5GXMqT6vTAhp0rTRb05r0bTTwV6/3tqPTwokeC9vXxPOogzMTji6vCecZV1cmnJ3os7NDbGam3shp40KvlTv9tp6MOvnSb+tOr70H/S4+dDt7MeyrXvJw2H0+3LC5FhzCzJWr6vit6zcY8r7IsOcN6m282MjKYTkvlRf9jUjr0pEUp6CqL2YxPxlldT6S4jQ2mivZ62xiv0uAQljBdnsDS2U5yGuKedolZF1QibSplI22GlTtQrbEQlSdQh53N7MjqGS1IJ0NQSXTZbmsiWqRdTYh72lG0dqAvLYCeUkRq8UFrBTkoaquRlJRwVDKfXZ7GlkXl6MU5rI10Mr+UOtBXm49Wz1NbPUK2OhtYnNAxM5Yl8bmtDXaxfZ0H4/n+3k+1oEkKZ5cQ2PSTuhSdNKCtgs32W6t4vl0DRd/cgLH//Rr/I7pc+64IZ5vaeHx5hk83vyMCx/pEfAX+vh+YEj4J15M3ghmMSSCqeA7rN6NQpl+F1lmHGtZ8Ugz45Bmxh0I6DgkKXFIUmJZSY1mJU19lh5GIUmO+6Oe6OWkGObuhjObEMZ03L8fAb3m7Yjqjh97UZd4cv8aX6Re41nWdTUn0m7w7P4FtgI9WXR3pE3HnIz/qk32T3Qo+qUBFSeMqNMypVn/n3PCkmYdI4TaZ2kzUM8adJvaILa0YcDIkVpdc7bLH/B3oghWLjsy4eRAq4E1TXo2CIzsaTO103wvxab2DDt602vtwrCjO5Puvkx5+Kk5YedCv8d5xFaO9Di6sBB4A+WDGJQxYayEBjEXdIeF8EjmI2NYiApnKzNFw4n1ilxWcpNZLUhFWpyBojYfaU0uipp8DSfWDzihbC5jrTqXjcZilI3FqIRlSKsL2GxtVHOiq5m90W52hztQNlUwlpes4cRGbxPKXhGb/a0aTmwPqRst8sEu1vo7kA91Ix/qZn9ikC9nOlmMu8jv73jyZZAL2zd8WL59DXlFIY8m+3g63YVEVHbAiRb2Z/rZnR9k849youM1TnwpG+U3yj6E8Q+xOm6M3btn8fjga074v2+A+5uncX/z9AEnTuB57DTub57C6+2TZBv5MhtyD2lkPPOhYcxFhrB6P4q15Jg/+kq5fC+UxYRgFuKDvimc+La+rX9dQI+a27Du78qj8IvsR13mefItXqTf5EXOLb7Muc3LzNu8SLrETrAPC26OiM6YaAR0xQlTqk+bUqtlqpmqflVAN+sYqZ/nXrFxiEzN6dWzo/KMMYzU8/umYJS3vJj3dEN81p5WYyeExg60mdhRd8aIbktnWs6qO3ZtxjaMu3oz6uzJgJ0LvdaOTLr702HlSr/3OVbDw1kJvYMiMgRpWCBLwYEo4uPpOn+B1YREtlKTmI+NYKc4h/XSLBZzHyLLSWE1K4nF9ER2aovYbShhOeUui0lx7NWXIC3JQFGWzUZFLk+aK1GUZ6Moz0FelsV2YymrNfk87mhgR1jBZm0Rioo8lspz2e1oZL2lGmlLJYvCUhTdQmSdTWz2tyLvEiDvEqDobkPZI2bjIKlA1tnKQmc7W2PdSDJjeBR0ie2QC6zcj+JldzNPpltY7SlnQ1SBrKGCnek+nhysPN4Z6VSL8oPJ7kMBsjPeze5sN48XRnm2Ms1L+ThfKXq4bWKDzYcmeHxkjfcPtPA9ZoTfMQO83tbG9Y2TeL6lhedbWlz4vgEXPtTj+g+NiPu5JcOfh7ESEctSSBRzoaGsJsSwlhTDyoPIPykBPe/vyJi1LUWfmPPwR9pk/8yQgk+MKT1pRrW21ddb0vSsERraqYX0wY/EdhO7g2EnO3osbBmwtmPQxl7TjR47sHFMOjsz6eLMuJMjiz7edJmZIjYzo9fWgT4bZ3qsHOi3dWbI1oN+GzeGHL3pcfCgz9WbUS8/hv38mbp0WWPfGPbzZ9jvnHrD5tUbjPpdocvZn1YnH8bCItgsy2NfUIYkJ4mNoiyetFSzkPeQPUE5W3VFyCty2BFVsdZYhryhFGl1Icr6MhYKMlitLEBWU8xeWw2q5nK2m8tZKs1GXl/CE3EditIs5CVZrNeVstnWqB6UaqljWVTNakcjiw3lrNVWIGmoRN5UjaykiLWMTGbTU9gUVCBtyme9Nh9VXyOPJsXsDohY76hDIa5F1StQ/8h8xfOsEdDj3ahm+nk524okJ4EiYxvyPrOm5FeG1Fq6s1FQyrYwi2x7D1y/dwK3753SCGjf9/Rwf/MUzkd/jv8PtPB8Twuv93QI+7UNE0FRzAWGMX7rNquJscgz41nLjkWSEfO1fSP963//8yNJi/kXY+5WHsaykBjJ8t0IVmLD6Lh+6U9eQDfqG6Hwc2EvNIC9qEs8e3iL5+k3eZF9kxfZt/gq4xYvki6xHezNvJsDojMmZPyVWkCXf2ZC1alXOHHQGHlVQB9y4lBAt5ia03PAib/vr+a3jcEob3sx5+GK2MieViMnBMb2tBhZU69lTKe5IyJDK8Sm9rSZ2DDq7KWZk+mzcWLC1ZdOKzf6vfyRhIexEhqILCKI1dDbLAUHIouNpTvgIqsJ99hMecBifBTbhVkoStScWMtOZjUzieXM+2zXFrFdV8xy6j0WH8azW1uEtCQDeWkWyopcHgkqkJdlIy/PQVaWxVZdEdKafB6J69kWlLNRW4S8PI/lijy2xfUoRFVIRRUsCkpRdAmQdTax0dfyNSe6WlnvFqPsESNpFbDW0cJCRxtbY51IMmPZD7rEduhFVpJi+LJbyJMpEavdZWy0lCNrrGR7upfHc4PsT/WxPdzJ9h/lRBc7M908Xhjhi+UpvpKP85W8l9umtlgfN8btBxZ4f18L3/fO4vueAZ5vaeHy3RMaTgR8qE/Ah3pc+6ERCb+wYujzUJYjYjSckCREs5YUzcqDP5yNeVVAf4M48W19W+qLsVrHRDP53KRrhtDAgkbtswi09BiyNEXi7chOmB9f3L3IFw+v8mXmTb7KC+TL7EB+l32HF0mX2AvxZdHdiXYdCzJ/rEPux/rUnLGk+rQZNWfUAv0woqhJ1wyBrhlCbTPaDaxo1TelzdCETmMzRMYmtJ62p0TfgH+aL+Z51TX2w66w6ONJr7ktLfqWiI0caTOwp9PIiQ4je0S6FgzauNBvYceimxe9JtbMuvmzcu46vdbuDHr4sRYShiTkNoqIO8xcOc/C9etsxsbS5++PIj4eWUI8C/dj2CvOYf5uNGtp99nITkVWkI68IJ3H1UVI0+6zcDcaafZDNspyUJRlIyvNYrumEEVJOoqyNNarcpGW57BWVYiitpSNhjK2GsuZyLjPZl0piqpC1oW1TJflIm2uQdHVxKq4AdVgO5sdAva7WpAKa1gSVSPvFCBta0AmbmJJWI20rYHlzlpWWqt43NlMf1wsuy2tfDk3hKS1DFVHDar2Wvb72/hiapBHk72ohsXsjnSyNdDG7nAH26Pt7Ex0sDPdxdZkBxsTYrametifH+KZdIzfbk7we9U4F35ui8v3jXD7wIBzf26I13tn8H9fH8+3tHB/8zS+7+nhcfQMnu9qcen7poT9xIkam2ushMWyEBbMRHAQ89HhSB/EaJ7kpEkxrCRGIbn/9Tm8FL9BF+N3jxw5wsoFJ5acHWk6YUbqjw1I+2+65P/SmJITplTrWNOgp+4+Cwxsv+5C61kiMrBBZGCn/lFnbku3pS39VrYaAT1oY8+YowuTLq5Mubow7uSozob2cGPIxp5+W2e6LR3osVKfXmtHBm3d6DF3QmxhR4+dE6Pu3vTYOzN6/jzjAReQBgUzdfEycxevMHXxEpMXLzH/+U26XHxoMHNk6lIg6wWZqMpy2SrNYTn9PuuFGSzmJKGszmelKA1paSY7jaVsN5ahqCtFXlXEZm0pY0nx7IprkAlLkFblsFGvFtqrRens1BSibCxmp7mG6dxklkvVn3tpbSkKYQ2bHQLknQ0oBBXIqorYqK1krboMWU05ipIixqNimapMRtaUibwqne3OSh5PCtjrKkPSXM5aew3r3Q0oe5vYGmhmc7jt6yHbsW4eD3WzM97Dk0khC3kJ5JlYkadlRaGePoV6jkzHJvKlOI//PtqG6X/8Kxy/o4f3uzqc/8CQgO/rq4dfj53B6/hn+H6gg/+HVvh9YEH0p/aMXoti5k4U/VdvsPwgnrWcRFby4lhKi0KSHvOaleNVES1Ji2Y19WDD5sM/Pli4+CCapcQolhMiWIoJZSEy6E9eQA+aH3AixFfNiaSrvMi4wZe5t/ky+za/PeDEbogvC+6OtGiZkfljHXL+Wo+qU+ZUnzal+rQ66vRVTjTpmiHUMqVN34IWPTUnOg45ccaOUj1D/mGulOfV19kLv8yCtzs9Zja06FnSbuRIu6EDHUaOiA3tEOlZ0G/tTL+FHbPO7vSZ2TLt4seS31V6bdwYdPdnLSQUSUggsvBAZq6cZ/HmDRSRUfT5+yGLjUUWH8fS/Vh2CrJYuBeDNP0+69kpyPJTkeensVdRgDT9a04oS7OQl2YhK81CVVWAvDgdeWk6isocZBW5SCsK2KgvQ9lQymZDKdPZSWzUFqOoKkIhqGGmPA+JoBJZZyOr4nq2+tvY7BCw2ylCKqxhWVSNTCxA2tqIrL2JJcEBJzpqkbRV8UjcxFBCPLsiEc9m+pG0lrHVXslOex27va08nRpkb7IH1bD61XOrX80J1Wgb2+NidqY62ZwQoxxvY2uym735Ib5YHePl+hi/VY7i/1MLnD80wvW4AX4f6eF9TBu/9/U1L5Q+7+ricfQMXu9qc+kHpoT9tRO1ttdYDo1hPvRVTqgj61buRyB9EM3yvUhWEiOR3Ff//QZy4tv6ttQXY6WWEc0Glpr8TdFZa4QGJrQZnmXIyoRlLwdUId58cTeA5ylX+SrrJi/z7/BlTiC/ywl6TUCL9SzJ/LEOeT/Vp/AX+lScMKJeR51W8GqmZ5OOGc3aFrTqWdKip97m1mFsgsjYmOaT9tRbW/FPC7k8r7rGk6grrF7wZNDWCvFZc3pMHeg0ckKkbUO/hRt95s6M2rsx5eTOmJ0Dk86ezHiep8PCmT5HHzYiYli5HYgiPIjFm5dZvn2FiYALTF25iiQ0hMWQYOTxsWxkJDMXF8FSYiyLD+JQ5qaxW5nPdlkuy6n3mIwNQ1WQyU5FPuulWUhyk9koyzk4mSgKHyLJS2a9Io9tQQ1fdIpYqypEVl2Esr4MaWUB63VlqNoFyEV1SEW1rHU0IusWIm+tZ0vUgLyyFEVDFRJBFVJhDauCauQt9SzWlbFQW8pss5BlUQsbrQJeDIrYG6xC0V3JencDu0OtPJno5NFoO3vDYs264+2hg8zcEfXQ4M6EmJ2RNnaGW1B0N7I90cujuUG+lIzyW/kIv1eOYfXWGWzeOo3ze9rYv/EJft/XIeDDs3i+pYXrGyfxf9+Ac8cNCfjIjGv/xYIsowCGr8awGhHLXEgQUxGhX2c+a7I8Yw8EdLTmLN0N0ZxvyHDId48cOcLyZUdWPR0ZMDAn+6emPPxLbXJ+fpbiz8yo1LKk4UA4H4rnOm0LBAa2CPVsDwS0Le0m1nRb2tFnZavpPh9G2o3YO2vE87SbFzNuvgzZuNJr7ciQgxu91o70WjvSZWFHn40TvQ7OdFjZMejszoibF1M+5xj1PcfC5c+ZPn8R6c1AFq9cY8zbn5nLV+j19KLf/Tx1lm7IE+6zV56PqiyX5Yz7an9/fhr79SXsNJSyUpSGvCKH9ao8NmsL2aopZqehjOX0RDYqcpGUZyKvzOWpqJr18hy157OhjK3mGvZa6g4+16WsVuar/1YXIasqRNZcwUZLNes1JayU57GYmc5cZhqK0hJW8vKYz83iubgBVVk2G4IStofqUXWWImkqQtJWpRka3OwXsj3Uws5wO8phMU+mB9ma6EY52832WDuz8XfIPm1I8Rk7Sk9bUWfkxviVEH5Tn8nLjiLGHj7A8uhf4frGCc59oKPZkHb+Q13c3vw1Xu9+hs8HWrgd08HruAmxn7nSfzmYzovXab9yDWl6CpKcOJZzY1jJintNPGsGC9NjWEuPZTU1GmlaDJKUKI2APoy5OxTQ8/fVmwoXE8JZiA5hKTrkT15AD1gas+xljyrYm6cJ53mefIUvM2/w8qDR8tucAwEdfNhoMSfzx7rkfqzmRPlnRtRqmdKgbfIHnBD+ASeMEZ01RnDSjkZbG/5xPpcX1dd5GnuV1QBPBm0saTc0p9vUHrGhg4YTvWbqhVsTjq6M2Tkw4eTB9CEnnHxQhEYiCbyDIjyYxZuXWbp1hYkLF5m8fIWV4GCWQkOQxcegTH+o5sS9GBYfxLGek8puRR6q0hyWU+4yGRfOVkEm2+V5KIozWc1LRlmazUZZDsrSDOQHnFCU56ES1PCkXajhhKJW7ZFery9jq60JmagOaXMNUnEDsi4B8tZ6NoX1KKrKkNdXImmqQiqoZrWpCpmolsXaUuZrSphpFrLc3Mxmq4BnA83sDlax3l2FoquBnaEWHk90sD/azu5Bg2V7SKxZTrQ9Iv6aE6OtbA+J1JwY7+HR7CAvJCP8RjbMV9JBLN86hfXRU3xZvewAACAASURBVDi/p4XD936FzwfanP/AQCOgDzlx/iMzrv3IgmyjAIY/j0ESHsPsK5xYfRCFNOkwdSPmQECrWbGSqG60fMNeKr+tb+sw89ZAkyxQd8aIRl0zGnXP0nb2awG9ccedp3fP81X6dX6Tc5vfFYXwVc6d/6WALvnVWapOmdCoa4FAz1wTT/SqgG7WNqNV34xOE3M6jE0Qnj1L06c2dHl78k/zOfytIIiNQA/Wr3mx6OfCjIcbveY2dBk70GPihtjQjhFbD0S6xozYOzPq4sKIqycDLl6I7dxZvhmK5HYw0qBgJi76o4y8w/QVfxauXWfx1m1WQoKRRkWyGBbCangYs+HBrKcnsVmSjawkk/X0JGQp95mKC1d373IfsluaiywjiZ2ibFQFmShzUtkvzWYz/yHKgjQUBZkoSvKRlRWgElShqC1hpSyX9bpSFoqykDZUImuuRSluYrmlhlVxA2v1lSgqS1EUqz2i8sYq1hurWaksZrmiiPmSPCZy05kSFrA11MR2Zw3z5WmstZQg76tjc7SV/ZluHs32IB8QsN7frPFSb/a3sjXQxt54DxvjbexOiHk21slaTRHbTVXsDXfxdKKPl/ND/G55gJn6bCyPnsbqzZO4HtPB49gZPN49ic+7Oni+pYX3OzoEfGiE//sGuHxPh8hPXOj6PJzFqBgWgsKYCQplIS4a2cN7/6qAPhwO+QbFE333yJEjSK47IPV3ZMjCkoKfGZH8lzpk/dSQwl+ZUn7aglodGxp0rWjUs9Z0okVGDggOBbShOq+2w8yGTjNrTQf6MA96wtmNKVdnRh3smPfyYcrFix4ze7pN7ei2tGfIwY0hBze6LOwYsHOh09qeQWd3Rt29GXHzYtLLjynf80yfv8j8patIbwYy7Omj3qbm5cSImxcNxo5M3ghjIz8dZXkqi+mJTMaGs12agyQriaeN5cjLsjVDsorKXCbzH7Banav2/eenISvNRF6axW5JLsqyDKTFySjKs5GV57FVV4miqhiVoAqVoIq54kzWGkpRCivZaCxnrTyfjZI8tkrykZXnI8nJQJqdzUpmBkN3I/ldfyOLxTGs15fxfLyBre4KFK1lKNvq2OgUsN7TyPZQC6pBETvDrewdAn+ik/WZNr6c72Ei5DZpvzhDwQlTcj+zpN7ci4XAcHZTY3lW9pB/GGzG7D/+F5zfOIn3W6fxO3aK8x/qcvEjA/yPa+N77AweRz/F571f4P6eLhd+5EDcKU8Gb4TSeekKrQFXkaTGIcmJZCU3iuXcuD8YJFxKiWQlNYrV1GgkKVEaIb2cGqHxQb8qoOcS1QkcCwnhLMeFsRQTSqmP+5+sgE769a8ZtDRm2dOBzUB3niSc46u0a7zMuc1vC4P5KufOP+tAq2dlsn6sS+7HehR/YkjlSWPqD4YIX+tA65jRrPM1JzqMzdScMDxL02c2dPt4849zOfy+KYjtUB81J3xdmHZ3pcfcmm4TR7qNXWk3sGPYxk29M8DOiVEXF4Zc3Ol39qTdzp2lGyGs3FJzYvKiP+sRgUxf8Wfm8lVWAu+wFByEJDKChbBgJOFhzIUHo0hPYqM4i7WSTBTpSciSE5lJiGSzJJvlnIdsH3BCVZCFqiCT9ZwUDSfW81OR52egKM5jrayAraZKFLUlrFbko6gtYbE4W8OJdXETS6IaJOIGpHUVKCpKkRcVIikuQNZQhaKxmpXKIpYqipgvzv2aE8MCNsXVLFZmIG8rRdZbx9ZYG/sz3ezPdCMfEKDob0Y12M72kFjDid2xLjbGW9mdEPPFiBhpTRFbGk708nJ+iN8u9TNU+hCLN09i+b0TuLynjft7h5zQxvPoGbze1tZwwvWoLhG/dKbzahiLUdEsBIUydSf4gBN3NZz4lwT0ISdWEsOYiL79TfhOfFvf1oGAPm2CwMCWJn21KGjSN6VJx5ymM2b0mVgg9XNGFerJF/cC+DLtGl9l3+JFzi1e5N7hNwUhPE+5wmaQN0s+rrTqmpP3U0NyP9an7FPjg7QC89fiiYT6Fgj1LDTetnZDc1r1TRGftaBdz5KGz2yYCb/G38+k8LvqYJRBvixfckPxuR+LXi6M29jQb26BUMuEfnNPekw86DK2Y8rFhwFrDzotHOlxcGH5xucsXv+c1TtBzFy5ijQomPGAC/R7ebMUdIOV4DvII6PYiLnL6IVrzN64wUpkOMq0JHZKc1jNS2EmIZKpmDAel+azV5TDRnYqcykxrJeksVaQzFZlNlsVWcjzU1HmpaEqymLxYTzKvDTkuemsVxaxWprLQmm2OqGgoRRZVREyUSXyzjoUzZUoqoqQV5cja6pmvrqYpdICJDnZrNXWsVRcwkpePlO5aWz2CfiqX4i0IguFoIyNrmZUw93sjnezPyZmf0yMalDEek+jZlObpqswJGZnpJO9yW6eTHQirS9gMTcRZUkae71iVIM97M8183SmmXtOl7D4f0/g/I4OLu+cweeYFv7HzhDwQ2Pc3tbC8z1dvI7p4ffhWWzf+IwMkwCWQhKRh8exfCeMlegopEmxrD2MQ5oUqzlrSbGviWf1+cble373yJEjyINcUF51YdbZnsaTRmT8xIiMvzY4ENCWVGpZUqdjQZO+DXXa6r9tps406dnQrG+HyMCOdhM7xKZWdFvaMWBtx4i9OpXjsAs96ezCiIMtK/5+jNg703nGHvHZs3RZ2GosHH02TvTZOjNg78KouzcDTm6Me/oy63+BGb8A1m7dYdI/gC4HFxauXGHhykUmvL3osXJCbOOD7G4yu+VZrGbHIEtJ5FFxLoOht9gqyWYl5yGrhWls1xaxWpTGSnEaj9tq2KovYjEhmp3SXNYOBLSiNAvlwSvLWl4ya7lpSHIzUeZnoKwsYrU4h7nsFCSluUjL8lDUlaBqrERZUYgkP4OlrFRkeVnMP0xjMvEez1pqkJY8YKu5ng1xBY+H6lG0lrPeWsuWuJmtDhEbfQK2BprZHmphe6iFrYFmVH0NPJ5u5/FkM6Pxt8jQNqZE25Xck7YU6FsxF3wLVUowO9nhPG1+iKQgHff3T+D0XV283tLC99gv8T+urdmo6XvsDK7f+xUXPtTF/wMTzv1nexJOuyC+fBNRgB/tF28wExep9j/nRiHJVPuepZlxGgF9aOFYTo5kMSWcxdQIllOjWU6NZfkV+8ZCYgTT8beYjr/NVFwIs/GhzMeGshQTymL0vzpM+H/8O/EvnaYzZvSaWLDq64Qq2JOndwN4kfo5X2Xf4nn2TZ7nBvIyP5hnyZfZvOPFoo8LrTpmGk6U/tqIWi0LjYA+tBOqOWGOUOfsa5xoNzRHbGBFw6dWTIZc5X/MpPDbqiBUYeeQXPZAfsWHBU9nJmys6TExQ6RjSp+ZJ11GbnQZ2zHp7P3POHGVpRvXWA0MYvbq50gC7zAecIE+T68DTgQii4hCGX3AiZs3WI4IQ5Fyn+3ibCS5yUwnRDAdG85+cS57hdlsZKk5oShORVrwkK3KbDYrspDnp2g4sZScwPoBJxQVhayU5rBQlo2ssQxZfan6FUdUgbyjFrmwAnllEbKqMtYaq5ivLma5tABJbg5rtXUsFhUzl5nJVF46yp5Gnvc0slaRhaypjM2uZrYOOLE32s7eaDuqQRGK7gZ2httf44RqsJ3t4Q52J7p4MtGBpC6PhZy7rBenstfTjmqgm0fzIp7PtXHX8SLm3/kMp7e1cX37DN7vqTlx/gdnNVsHvY7p4fuBIfZHT5JpcoHlkPvIw2JZuhPG8gEn1CfmNVa8zoiobyInvq1vS30xlmuZUatlTp22xcGztDFNOuY061hoBPROuDfP71/kZcYNjYB+nnObL3Pv8PThRbZD/VjycUWkZaK5GCtPmlGrZUHNGWPNxfjHBHSrviltBma06psiPG1E7ScWTId9zv+YTuarikB+lxbI84TPUd7wRBbgyqyzNb1mJnQZ29N0yoIuYzcGLF2YdPGmw9iBbisn5LeCmP/8EovXP2fxxk32796jx92DPk8vpEHBrEUEsRwUiDQsAklwBIu3w1DdT2Q2KJC50CBk9+KYCw9BnvaARyV5rKXeR5mVovZFZyaympbAVn4Km3kpyDITkWbcZ/FhPJK0RLYKM5FnJyPLTmUxI5nV/ExkZflIynLZElSqPaYVBWzUlCCvLGSlIg9ZSZHaG1pfyUp+Lht5+awWFjCceh9pQwnPx9qYr8lkrbkKVY+IrV4BuyOt7I6K2BwQoOxt0hz1prZXLsQh9TPd7lg3myPtPO0Ssph6j+nEMOSlKcjyUlkpLeDpcD3/32I/pu/+EvujOvj/uTlOb53G7wNdfN45hcubJ3E5ehr3d7RxfvMUV35kxZ2fmdF5IZSVsBhWQkKZC4tkJSH+T15Ar4e4sX3LjWVvBzoMTcn5mRmpf6VLzs/PUnrCnEotS6rOqL8vhwJa7YO2plnfliYdK8QmjrQZW9BpYUGflY3GxvH1caTDyo6XcYEMW1jQoeNCl6kb7WbWdJrb0mPpQI+ZLf2WDrQZmNFj50SfgwuDzu5MevuzcOE8o15+iG3cGPbwZ/7iVQY93Bhyd6Pb1BV5ZDRbyYnIkmOYiw1GmZ7EalICGzlpbBRnqe0YZdmsZCWxnPkASfZDVJX5zKffQ5afiqqmEEl+CrKCNLZKstkrzUWVn8xOcRZrmUnIs5ORZz9kMe0+q1mpKIvzkBXlsJSVwmpuBpK8DJYzU1nLSkORlc5C4l2G7t9F0ZKPoioJZV02j3saedxTx25vA6quBrZ6mtjoalCfAwGtGhSxPdTCZn8T22PN7E53oBSUkW/nRqGuE+X6FtTZ2rGecJunySF8kRXNRn4k/3O8Ac///Ascjp7B5U19zh3X5twHOlz8yICLHxngfvRTvN89pV43/O5pPN7XI+CHxiQbeNFzI5S2gGuIL95mISGB1ZR7rKXFs5Yew1p6DLLsBFYzYllMjmDpYTiSlHAWUyJYTI5iMTmO2cRolpLvsZiUwFxCFHN3I5lNCGc6PpSp2FDGom4zkxDGTFQISzFhzEfeIdHO6k9OQN/6yS9p1rag11gtoHdCvXiWeOFrTmTf4lnObb7MUXNCFerLkrcLzVom5H1sSO7HelScUPPnVU78MQF9yIpWPVOaz5hQ+ysLJkKu8HdTD/mq4jYvk2/yNPYyyhuerAW4MOtkRa+ZKZ1GNjSdsqTb2I1+C2cmnb3pMFFzYu1GIAufX2bh2hUWb9xEFRNLr4cnvR6eSIOCkIbfYTnoNtKwcFaCwlm4HcpW4j1mgwJZCAth7W4ss+EhrKXcZ784F1naA5RZKSizUpBl3GM1LYHN/BQ28pJZy0xkNT1Rw4nNggzk2clIM5NZzEhGkp/JWmkekrJcNpsqUdSVIC8vYLO6BFllIcvleciKC5FVlyGrq2A5L4f17BxW8vMYSXuArKmMJ0PNLNXnIBdVstUtZKtXyM5wCzsjIjb61ZxY72lE2dvERp/gf8mJxx1NLKbeZToxDEVpCtKcZJZLC3g8VMfLyQ6sPzyJ/VFt/H5ohvNbp/E9roPP2yc1nHB7W0vDieC/saDzQgjLoTEsh4QyHxbJ8gEn/tj5VkB/W38KpelAN+haUXNGnW9bp32WRm0zWnSt6DdVC+i9CB9ePLjMy8ybfJl9iy+zb/E86xbPs2/zJOkiu+Hn1AJa25Tcjw3I++lhZ8GcRl11LNFhEsfhEWqfRaRrjOhg01SrvimNn+lT+StTFmNv8aIrnN9WBvLi4WUex51n47YHqwGOyAPcGLOzoV3fnPrPjGjVtWXE3oseC0f6bb2QXg1k8fLnLN+4ymTAOdaCQhnw9KHHzZ3ZK1dYCwpCFh7CYuAtFm4HshoWiTwqjolbN5BGRrAaGspycBBrcTFsZaWwlZXCalICkod3kaU9YCs7ia3sJFYSo1Gk3mMnL5XlpFiU2Skoc1JZeBDHRHwYkvQkZLmZKApykBXlsJKfwVJeOluNFWyVF6HIzUJamMVKWS4rGelICnJRVJaxkpPDaFQsMzn3edLTwJqwiOnKFFRt6ins/Yk+tofbUA0JUfbUIO+qYa2jFlln3UFXoZWd4XY2B9tQHXSe98d72J/oYXe0nemMB8zEhrNblMlqdiK9n59nLT+d/a4qBtKTsH1XC4v/51M83zfg8l9a4f+BPk7f+eX/z95bBld+nfm6+1bNrTt3cuIkthvcbTtxMomT2I5jajeImZmZYYt5k7YYtpjVjGpQixlaUneLmRm73eQGx3FgHDgzz/2w1XI7duacM1VT47nlVbVqC3ZJX/Rfz6N3rfV7cd11BLe96ji+oIr3fj0SP3Cn0iWUKVkSC/EyxuNiGU1IYDY782sF+m8Xxqdbc0/TOL4hW3PPCQQCNmTuPIzzYsXHiZuWVpw5YELRG3qUvq3HyQPGVKiYcfmIGRdVjL7IgtayoErLgjodG+q0LWjQM6dR35RWY1M6zc2VlWcb5fnnQXs3rlvY02HryF/P59NpoUm9uhUNeh60G1jQYWTJdQt7rlvY02Vqww1LBzot7ehz8WHQzZdBd2/6XDy46eRJl4MXk8JIOu2dmPYX0mftQqu9M+tpyaxlp7CWk8GkLJ6FtAxmUhK4VV7I2rECNs4fZepoDsuluayW5vPR+eMs5CsYT0tg82QJ8yU5bBwr4t6ZY9w6VcrC8RwWSrKZyUtnpSxvRwCmc9NZKC9iqjiP1RNlzBXlslSYz0JBHjPZChZycxmTJDGdUchwTj5PWs8xVp7Bg+vN3O9t4lZ7BRsdV7ndXcdGRxVrbZWst1/lo5561rtqWe9qYKO7jnuDjWz0VLJ+9SKXvOJo9VFw1T6cbh9fttJDuVco416umIdHk/m4Oo/lK1k4fO8d7L/7Li7Pf4jXXlXcXjyE8EfKPHOffeo4ff8DPHYfUX78oi4+r+pTYuZFZ6SYRu8wWgPDGU1JYCRZxpQinolMMZMKMWOZMiYyEpnIkDOeHs94upSRVBn9SRIGU+LpSZBwM1lOb4qcPpmMXomUGyIRN8SxXJeK6RFLuC4W0R0bQ3dMFN0xkVyLCP9vJ9BX1Y2o1zCja7sCfUfiwWOFkN8URfCkNIonJVE82p4PsgO5LfNh6ikn3tShfJsTylhI5S7ls2egazSNqVHTpU5Dn3pNgx2Jrjmiw/kDRowlRfGb9ng+PRfJk9wgHqQGsB7txkKAPcv+zvRZWdCsbczVg/rUa1py09qddmNbeqw9mAuKYlIYwnR4MMOBviyLpPS4edHh6MxYUDALsbEsbnNiPDKSOUk8S/JkhqKjWIiPZ178BSfWC7PZLM5lKTeD+Zx0FvMVbJRmsVmiYFaRyFJuGrfK85jNSmatJI/V0lwmFMmMZCQwW5DFYnkRy8dKWD5ZxuxRJSc2rp5j89wJlsuKWDhRysyZcmaKCpk7Vs7K+TNMl5TQn5zG6LEs7rZfZqH6GJMXC9loPMNaZy13+ju5daORrZ4a1joustR28UuceHqvYKOnic0bLdzqbeNOfwd3Bjv56GYjw4UZjKbGc+dUCTOFqVwLC2DxeBH3Oi7SkJKI+QuHMf/OQVz3ahP4E1O892lh/933cXnxIG571XB4yon33ah0DmZSmsCCTMp4XIySE1npX8uJ+aykLzFiJkO+0zPgG8SJb8e3Y7sT4REDKo4YblcBjLmirscVVUPqNcy4YWrJoo8j9yUePM4M5FFROI/Ko/i05IvF8WGOkI9kPkx7OtGibU7pG1oce1uX84eMdhbGZ29Vf3E55IutuaeLY/WH6hz9UJtHZ/P4U1s8n1+K5eNsP+6m+rAh8mAxyI3bkUKuGRrQoWtAm57yski9jiUtZg4sRkkZDwhlPDCYAW9vFqNiaDRzoNnCgfmIaOYiwpgMFrIskjASEspUXCyTojiu+fuylJTAZkoKI2FhTMdLWMlTMJ+Uw6QshZXsbLaO5inPOOZmMJuhfOiXclOYz0rmTlkhQ+IY5rNSWS7MZio/nYWSPBbLilgsL2LtRBkTeQqWjxYzW17I0olSVk8fY7okn+WTZczkFzBfUsJEUT79uQruN1Rxt/4UMyczuV17mtvtl/loqIH7Ay3cvdHI1rWaLyp1ndWsdFxlo7uWzZ46Pupt4qM+ZdD+045V90a6eTjaw2b1abrSxCyeKGS+IJPWMCHLeYXMnyvh4UAb/gf0sHpOFYcfHMFllzo+r+jj+LwKTi+o4rn7EO4vqeOwW4Ow1y0oVPNkMFrGYkoi07GxTEnEjKfJmc1N/TuVBOV8+nXlOTfpN7IT4VaCP48kXmwJnRlztKdex5zyXxlT8nMtTr9nxIUjZlzUsOCKptnOZULl8SdLqrWVTRzqdZUC3WxkQpupGZ0mVspmQVaOO3LcambJX5tOMOBqQ5WmDdXGTjRpmtKiY8J1C+Wlp+sW9vSY2zHo4EW7hRPjvkLGfYXccPCiw9yVfl8fen1cmA0JZswrgAsq+kyEx7KaJ2chQ8Z4XByT8QkMxorZyMtmNi2JtRJlRWn9WCFr5QVsnitnqTyPgWQJ04WZrJwpYfVoPiunCpg/ls366UI2TxWyUJjJQlEWy6W5TCqSmc5NY7k8n9miXFbLilkuyGO9uJDNsmIWS/OYzs5kJi2dJUU+nbFxPG4+y0qRiK2ak6w1X9iuPF9mo+0Kt7pq2bpWw2rrFdbaKtnoqGK1o571aw1s9jRw60Yts01nyDZ3pcw2hg5pKWMZ2Wzlx/AwX8j9Ain3C6TcuyDlL9dO4fSDl3DcFmiffeoEvKqN90uqBLyqgd/LWnjtVcXhufdw33VYeZTjBzp479fjmLk/N6ISaBOG0R0Ww0RaMoMJEkbSpAylSBlIljGUHM9QYgKD8gQG5DIGEiQMJEq4kSTjeoKEbrmY3hQ5PQkSemUJ3JDIuSaRck0qpUsm45pUSqdETpc0kbYYMe3RYpoiZf/tBPqKqgF16qZcN7FgwduBe2IPHmUEfJUTxZE8zBFyW6rcqWzWNqP0DS2O/kqHcwcNuahipLxs/hVOGFGjrku9psFOQ5UGLUOqD2py9IA2W+Vp/Kktnj9WRPMg2487Kd6sx7mzIHRlKyyALiMjOnQNaNUxpt3IWskJc0fmw0VMBIZtc8KH+YgoWiydabVyYjY8itlwJScW48SMhIYxGRPNWGwM3YH+LCUmsJacxFhEBNMyKcu5mcwnZzMpS2VZoWCzPJe5/EQWc9KYTU/e4cRCVjK3S/IZkcQyn5XKYkEW0/npzBfnsFBayFJ5EWvHy5jMy2KpvIjZ8kIWj5eycqpceQTqhJITc8XK+Mfhwmzu1l3hTt0JZk8puFV7ilvtl/losIH7/S3cud7AZmf1zj+k651VLLdXst5Vs71L2cit3hbWbzR/iROPRrpYv3qS7jQJSycKmc5Noz0ihKW8AubPlfB4sJ2AA/pYfVdlhxPeL+vh+Lzyc4/dh3Dbq4bjbk3CXregSN2b/igJC8kJ25wQKTnxjDh/HSfms5K2BTp+R6C/QZz4dnw7/tcCPWBl958m0E8rCw1ahtSoKRfJqx+oUfhrFf7nzVr+2CTmjxXRfFYSxq0kTx6lBTPhZcN6iC8Tzs4MWdvRqmtMrboh3RZuTAWEMB0WzERQMKN+wYz6hdNh68GQdwhzYXHMhkWyFBPFTFgIU+ERjIaG0RsYwHhsDHMJ8cyFRdEbJGQuPZmlrHRWUlOYS0pkVZHFmCyJidRsptILmE09xbLiKJslmWyWpjCTnsRkUiJTSfFsluQxrUhhoSSb9aNFzGUr2CwtZrWwgKW8XBbzcpjNzWYqK5OlonwWC/OZzc1mXJHPiELB4skiPmmvYPZsOrevnGG95gx3r1fz0fWL3L12jpXmC6y0XGal5TJrbZVKkb6m3Jrbul6/c8bto96WnciveyPdfDx+g4eD1xjLSGSxKJvZ/Az6EkUsleQykZzDysUz/H5iENN97+C8yxSXXeq479XC6QVVvPbr4vi8Cn779HDdrYPbfn2i3rCgxjmaSXkSs3IZE1FRzMnjmVGkMKn4ooKgrB4o59cJ9HxWPLOZ0m/SwvicQCBgM0XIY7kvH4W7MOVmzTV9I069a0re65qUvmfAKVVzzutYcVnLcluavzxrtMyp07agXseCJgMLWowslJnQ5nZct7Cn28yWa4aW9Ohb8teeEhbCfWlSMaNez5lWbSv6zexpN7TghqUD3Wa29Nk4c9PKkWFPdwY83Bhy8+KGrTM37VwY8fZm0t+fPid3uuw9abRwZiE1ka3UBKbjopiXxzMUHcO4LJGlzAw2SvJYKsxiIj2Rmew0Vo8Vcvt4CWvFuUxkJvHgwkk2ywqZK8pgrjidpeJM7pwsYqssl5WCdBYVqcxnprCQk85CYRYrxwpYLytis7iIqfRkVgqzWMrNZFCWwERBAZNZJXREinhQWcpCoZzJU/nc6arakee15gtstV9ho6OKjY4q1tuvKhtHtF1lraOWtc4G1rprWe+8Qpa5CwmHPSi2iOSoUzjd8Rks5+RyN1vKo/x4Hp1M4vPmcs67OGH7vXcwf0EXp++/T8CrGgh/pInvfhUCf6iB/yuaeL+khsvzH+Lw3Hv47tfA7YXDeL2kxVFzP26K5HSEBtEbG81EjpzRzDhGMsSMpMsYTktgOCWBsWQFw8nJys/T5AylSrmZLOVmcjzXE6VcT5TSI5fSHa+U5h65nBuJiVxPSOCaVEq7REaXTEZ7nIT2uHhaouLxVtX5byPQ7j95nSuqBtRrmNJvacuityP3RO5fEujf7HDibwRay2ybE08F2vhrBbpK3Yhq1S8q0DVqOtRrGlB1QI2id1T5TcMZ/tAo5g8VUfy2OIxbSR58nBzEpLcda8FKTgxa2dKqY0ytphHXLFyY9N/mhDCIUf9gRnzD6LTzYMAziJmQGObCo1iMjmQmLJjJsAiGg0O4GeDPWGw0s3IZs+GR9AUJmUlNYFGRxnJKErNJiawoshiPT2YyJZvx1Fym+PZkgAAAIABJREFUko6zlFnORnEm68XJzKQn7nBioziXmaxU5ouzWC0vZC47i/WSIlYK8nc4MZObxVRWJgsFeSwU5DGbm82YIo8RRSZLp4p52HKO2bMZbF0+xXrNWe70VPHR9Qrudp5ltfk8K82Xdjix2fn0iF/VF908+5q51dv8FU583Ne2zYksZvLSGUiWsFCUw3hSFquXzvFk8Dpm+9/F6QVjnF9Ux22PJs4vquH5kjbOL6ji+5IeLru1cXtZn+g3Lal1jWEyPpGZeKmyki+XMa1IYepLnIjfnvK/EejE7a/JdroSfkM48e34dnwh0JUaZlRpWXBF3ZQqdX0aNcxo07Ji2MqOZS8HtuI9eJAVyOOicB6XRfHoaBQPyyJ4VBrKw9wAbkt9WfTzoUnTYqeycPZDpZhfUf9iS+7pMY46HTPq1I2pUzemRtWQRi0zqlUMqDmoT967qvzrZD2fdor4rFbGv1xO5pPSaO6kBLAR48EDcQBrgd5cN7akQc2Qaya2LIUGMennw7hvKH1+wYyHx9Bq5cSAsy+LUbFMCENYiRUzHxHNYlQcvd6BdDp7Mh8jZVmcwEKsjJEgGSuJSWwo5Mwmi1lIy2A8IYup9FLGMk8xkFVBk/wkVwOzqfaXct7FiTovN5bTC9nKKmIrN4vV7HQWs1JYzEtjKkPOSnYWC4o0VoqymS/IYKYgjZmcLDbyipiSpbKYVcgNWRLXT2Ryp/E4dyoLWDyTz3pdJbc6z/Cwv5JbnRdYbT7LfM1J5hovsNh6mZWOq6x2VrHeVcNaTwPrN5rZ7G3dCb6/1dfOZl87m6Od3Jnu4u5wExMVpUzlFzGZk8JMloyRmGia7LyZScvhtwttVCrSMfx/P8T8+xo47tXA7RVdXF/Wwe0VXfx+aorHjw7hvlcXrx9YkndIyGhcCrMyKVNiCePSOBYy45nLkjKrkH4pAP/fm8++7xuyMD4nEAi4nRbMo3Q/PhI5s+Bnw4ClORWHjMl5S4eSdw04ddCUC2oWVKiZf61AV2laUKNpqax4GVnTZmJFh7k11y3suWHlQI+5HZ0mVlzS0effhipZi/ejTcWQ6iNW1Ovb02BpQ4ueKf22LlwzsabTxIpOE0v6HF0YcPLgpp3yddDZk1E3H/qsnblu506zsSVDAf4sJYlZlouYk8YwL5fRExjIemY661mZzOekM5YsYy47jbUTRSydLmb9aCHdseHcOVnG7eMlrJfms1yYzUZpDpulOcwpkplKlbOSl8F6XjaD4hi2SgtYLsphNjeZyYx4FpOT2MzJZjYpi1qfeDL1InHcr8sZrzT6c7LZPH+MvpxM7nY1c7enhtudlWy0XmS9pYK15gustSlh/7SBylpbJRvdNay2VvJwsIkYHX3iDjtxJkBBkW0g57ylnHCTMZyUz0KKiAeFYn5Xn8/WUQW+u36Jwwsf4vKCFp57DuG19xABr6oT+s+6hPxEh6DXlDnQbi8ewu1FZbyd0/c/wO9VbU7bhzEkkdIeEM0NkYypgkSm8+OZzJExniVnLFPOcHocw+lyxjITmMhOZDxLxniWmLEsGYMZMm6miOhNkdGbIqc3OZGbSUn0JifTl5LMzaREeuQJdMlkdMfH0ymR0R4XT2tMPM2R8f9tBPqqmj4NGqa0aVkyZGnLkpcDW1IPHigCeFwYpuREeRQPS8N5VBLKw9xAbkt9WPD1plHTgtI3tHcuEV44rORE1d9yQsuUGjUjatWMqFE1pEHTlGoVfao/1Cf/XTV+33uRz65J+Kwunj9cTORJadQ2Jzy5G+vHir8XN0ysaFAzpMPYmsUQIRN+Poz5htDvF8xoaBRtNi70O/syHxHNhDCEpeg45iOimY+MUXLCxZPZKDFLIjnzsTJGhBKWE5NYzZAxmyJhLiWdMXkmk2nFjGWcYCDzPE2yY9QG51IbKKPC1ZVGXy+W0wvYUOSzmZvJyjYnFnLTmM5MZCVLwYIijeUCBXMFGcwUpDOTo2A1t4ApeSpzmfn0JqRw84SC2w3HuHU5j8WzBazVXmar8ywf91Wy1XGelSYlJ2YbzrHQconlL3Gi/hlOtHO7v52t3jY2e9vZGOnko6ku7o+2MHa+mIm8PCayk5nKkDAQEUGTvQ+TqQo+mW6mIiUJ4386iMUPtjmxzQjXl3WUnPjhEdz36OD9giX5h5WcmJFJmRSLlZzIkDGrkDDzdzkh/sp8msAxkyH5psSdfju+HcqF8ayqEZUaX2xF12ga0qxlQYeOzb8r0I/LI3lSHs7jfCFbEm9mPN2pOWK0E5B/4l1tKo4YUq1tviPQV1T1qVQzoErDaEeg6zVMaNI2p07dmMvvapLz6yP860wT/zqSwb92ZvLoZCRLSY7cz/Dj08xgNsKdeBAbwKC1JbUqOky5BzPi7sO4tz99rr5MRsRSZW7DgJeQucAolqLjmBCGMOovZCo4jGsOzgwFhDIeEsVYcCRz0RIG/IKZigliKTGeeVkWTW5izhqHcsIijGJDP85ah9EVnMJgdDZDiWkMJ5XSHFiEQtOTqdwsZnNkbBZnsZibw/W4RAYSCphKK+fj4qOsZeYxGZ/BgCiNWr9w5sqKGElKZjErn/bIWJZPnOZx8xkmjqezXnOSW80VfNxTx63OCrY6LrLSeJaVhotstFSx1HqZ1c4qNrprdy5Zbdz4aoe2W/3tbA52cnu8mwfjXTy+WU9/rpyxDBEjsTEUvKPOCS0HmjzjWDpbzu9XenD91RGs/1EF4+++i+tuDTz2auOySx2XF5VbdO4va+O935CY1+2pcRKzmJrOlETElFjCXLL8PyTQT+c3KN9TeYQjTciTzCDuJ3iwFmrPmJM1LbrmlP7KiPxfaFL8lhanDxlzXtWUyu0ouyotC+r0bKjVtaZO15pqDQtqtSxp0LOixdCWDmNbOkys6TG3o9fElmYtIy5ZWvA/pyr5bUksN+3taNayp1HPiRojS1qNLegytaFG05Aea0du2Nkx4KwU5zYTK0bdfZn0DmTY1Zs2e3eu2XvQ7ebFrFTCnCSayRAh01GR3PDxZU4iYUYqYVYuYzUtlblEOYuZqWwcLeT22XIGkiRslBVw61gxSwVZzGansViQxVpxKgvZqcxnJXH7qILF7DQmkpLZzM9mVZHOYnY6k+k5TGedZkKWxlTqCRpDC8nQiyT81+54/tQem30aPLraSY8sgYfttWwO1HK7s5LNtkust1Sw2XaJlcZzLDeeV4pzSwXLLedZ7rjISk8ld7suku/oSJ6+P3G/tqXIyp8OSR4n3EWc8Unkkq+UqcR0fn8snz9U5SL+qQpO31PF7vkDOD1/EI8XNbarzmr4v6JG0GtahPxEF++XVPHaq4rz8wfw3a+Bw/cO4rZbl7MOwQxJYugKCmZAmsB8aTILJck7DVSmcuOfSd9IYK4wkbnCRCaypUzmyBjNiWc4K57hrESGMpMZTE9hKCOeYUUiI9kpDKal0J+ays2kFAbT0+hNTqFLmkinOJHWaDmHf/qL/xYCXa1hSJOWOe3aNgxZ2u0I9P2/EehHz3JC7M20pzs1h5WNVErf0OTEu9pcOGxIlZYZVZpGX+FE7TYn6tSNadQyo1bNiMvvaZL7jgq/v3mBPw2m8afWVJ6cjGYtzY17Gb48SglgM8KZezF+DG1zYtJNyOgznBgPi6HG0o4+jwBm/CN2Ci3jgcFMBoXS5ejKoH/IDidmIkUM+is5sZggY06qoNlNzHnTcE5ZRVBqHMA56zA6g1LojVDQJ01mKLGERv8CcnV9mMhSMJMtY6NIwWJuNjfiEulPyGcipYh7BaWsZOQxKc+kNzaFWr8IZooLGElKYT4zl87oOJaOn+Bh4ykmT2TscOJBd802JypYaTyn5ERzFUutV3aO9X3BicavcGKrr53NgU5uj3XxYPwaD3pqGcxLZDxDQl9oKMUfaHNcy54mrzhWK07w2WI37r9Ww+r/OYLJc+8pkzb2aOHyojrOTzmxXwvvfQZE/8yOGmcRCylpTIlFTInF25yQMav43+fEs70CptJE9MrCvwnPxLfj26FcGM+rm+ykCVRpWVCnbUyrjhXX9Oz+fYE+GsVvjkXySWEw95OELPh6U6tiQtHP1Sn55dMWrYZcVjP8SgW6/pkKdIOmKfUaJtSpG3PpHQ2y3z7Mv07W8depXD5vTeXJqTA+PR7MJ/n+rERZsRVlzxOZHxPOFow6ujPsEMCQcwAj7gFM+IXRbO9Ct6cfN938mBdGMx0SzmRQKCuxYlqt7Rj1D2LAL5iZSBETodH0egeyIklkWZbISnwhZ7QDaXVPZjSukBHfOG64RlFtGYziQydSPnBjJLGYtdJyZoqzqQqTUmqXyRnHdMqM3eiMSmEiu5ypouO0i9M44xTLBY9k+lJqqfA7RtzhUGRq7kznnKU9IpKHteVs1KaxkBvN3ZqT3L7WyP2+Fu52XeRWx2VudVzlzrUGNlvr2GptYLWjeuf82tOIr63eFm71t/PRYOcXAj3QwdZIF3cnengyco3Rkkz6E0UUaBhw9NemnH3XimorT1aOF/HHmU7mO8+j908/w/Ef1HF65TDee7Tw3q2F6/dV8NqlScB+fVz3GuP7iglph50YiE1hQhbDuCiaaYmUVUXaf0ign3aXmkiJ5aY07JuwMD4nEAhYSQngk8xg7qf4shnrzoSnHV3G5pw5YEn2P6tR/o4+pz40plLNgiuq5jsJNk8vFNbp2VCla8dVPQfaLd1p1LelxcCaZiNLWk2t6TGxosfCnWptY/7SX8yfzkvpdbPk6hFDGrWcaDSwo93UlstHDOgwU7b1vungRJe1FR1mNty0c2HQ2ZMhFy+uWdgx6OxDi6kDi9JEZsUxrMhiGA/zZy4qhl5fPyajo5kSi9jISGcoJILJ2Bhm5TJWsjKYTZYzLRWzWpTLVnEuS4o0NkpzWC5OYyw5iYX0MjaKclnMlbCcqWAju4iNvCRW81JZLSynMyaF4ZxiuqNzOGoeS9gvrbF5UROzF/Qw2WXERWkM8yfzGc3M4m5DLRstp1lvPc1G60VWm84r5bnhLAu1p1hvOMdGy0WWm86x2nmJpa7LDJ4pw+b7PyfsJ/oUGYVRahlOhqoz1eEyTnnHUeEvp0OSzEpBDjeCPUh9QwObf1DB+jlVbH/wHm4vHsFn3xGCf6yN8EeahP1Uj9B/1sV910GcfnAA9/0f4vcjNZxfVMXpeU2OW4cyII2iXehOryyGuZI05rYj62YLEpnKjWcmP4GZ/AQWS1JZKk1jqTSNmfwEJnNkDCskDCkkjGTGM6aIZzhdonxVJDCSlcRIVhrDmRn0psi5kRhPd3w8HSIZHSI5LVEyzviEfuMF+vgRA2q1TGjRtqRT15phS1slJ2RfrUA/Lo/iN0cj+aQgmPsJAcz7eFGnYkLhz9Up/oU6pz/Q58JhAy6rGe403NqpQGsrhblO3Yh6DWPq1JWV6EvvaZL39hF+13WWfxlK5w8tyTw5HcYnR4U8zvFjPdae27FOPJL6Kjnh4MaAnS+DTv4Mufkz7hdGs50rna7eDHgGshAcxXRIOBPCEGbDIumwc2TYN5ABv2CmI+IYD4miz0fIkkjOkjSBRUkeZ3T8aXVNZCgqh0FfEV0uEVyxCCL7kAupH3owEF/ISkkZM4W5VIXKKLPP5JRjBsct/WgJTWI4tYSJnKO0x6Rz0V1GhXsS1yQVnHEvJO5gEPHqnkxmnaI9KoqPa8pYr0plviCO21XHud1Zz72bTdy5VsFWu5ITtzvr2GipZbO1nrVtTjyNf1RyolnJie1Onrf7O9jqV3Li3ngXj/tbmCpVcFMaQ6G2IaVvG3HuAxuqrD1ZOVHCZ5NtDFSWof8/foHD/62O477DeOxWx3OXBq7fP4LHLnX89+vhsscAn5eNyDjswkBMspITcdFMSySsZKSykClj7u8KtHhbmp+dYqbS4r5pnPh2fDu+qEA/exGqVs+GZm0LbuiZMGljzkawCx/LvPgkK4gnJZE8ORbDZ2UxfFqi7ET4SU4QD+L9mfd0oUHdmMI3NMn7uQpH39PmrIohF9QMdzpM1WqbUq1pTL2u+U4Kx9Oz0NWqOlw8rM3J1zX5155G/jiSw+cd6fylS8EfL8ZxN8mTmUArHqaE85sUIUv+DnQaGtFn60GXlQtjfsFcNrKm1caLEe8I5oPCmQsWMuIXyKi/kA47R0b9hQz7BjDgF8xkWAw3PP2Zi5YwFR7LlEhOvUMAM3EFjIYraHEJ45SeExXm/sS/ZU7YT83xetmURlE+47nnGUm5QKOwjNqQs5z2P02qpYI4jWjS9WMJf8se6fuuiN91QvgzC+x2aWK7Ww/Pn9pj+D9U6M04xsO6y4zlpzCWk8ZK4znu9dRwq+MKd7qq2Gi9yEZH1U4ywd9Gez3Nxv2ot4nbfa3c7mvn1lAnm0MdbAx28NFoB/eH67jXdpbBNBFnja0p/ECHwoMaHDtgxHldZ4Yzc3nc38afV4cw/8mvMHjuAI7Pa+H3kg4uuw/jvOsQHvvUcH9JFa+XNbDfrUHgj3SpdYhiRpzOWKyEIVEsE8kJzCtSWMhOYCEnnoVs+ddeDpnJkDOVJvu7sy/+GxFPpBTodCGPs6P4OD2I2zJPlkJcGbKzo0bTiry39Sl8W5dTH5pQcdiMS0dMdwS6SsuCWl1ranSsuKJtRYWmNVV6ttTqWtOoZ0WDrjk3Da1osTKhzdyeRi0b/ue18/y+MZ51qTdVmnrUaTnQoGNPva4pjXrWdFm60GFmR5WGEb32nnSY2XPNwo4BJw86zW0ZcvFi0NmbFntnFkUSbqekMBkhZDU+huueytjGObGIpfgElmTJDIdEcTs7iwlRLGMx0cyI4tgqL2Q+I4NJSRqL6TksZecxIMugL66A9tBirnpHkKFizVXPGCZzFVyXJlDlEcJVbzFnbGVkqPkQ9bYLPq8Z47BHD4PvqmP0gi7R6h48riik1seD37U0cKvuDPOVZazV1LDeUsFyw9kdeV6sO81qwzk2mytYaT7PRscl1mqOUWppQMIvtTlrEsQJewkZesEU6Yeg0HSkKiiNCwFJ1EemMZ6RR3doGDm/0sTj+2rYvaCGw4vqeOxSwWffEfxfUds5Ax38Y228X1LB6cUDuOz5AK9XDuH0wmG8XjLmqmcsIxIZnWHBDCSImC1KZTxXznTeF3MmP2FHqJ/Ngp7OkzOaKWY0U8ZopmxHoEcypIzlJDGancZIVhr9aYncTFamdXSIxbTGxtESI6U2PJ7qsK/NhP4vfyaenVc1zKnRtaZJy5wbuiZMWJuxHuTMA6knTxRCnhRH8ORoDL8ti+HTYmUr709ygrgf77fNCaMdTpS/q8WZIwY7nLiqbkiNlvLeTL2O2Vc4UaWqTcVBLU68rsnv6ir4w1AOn3em86f2NP5wIZb7qd7MB9lwVy7kodyPRT97Og2N6LX1oNvalRGfIK6Y2NBi48WQVzhzwnBmggIZ8VNOpTwHMOSj5MREaDQ3vQKYjRIzGRbDpCieRichk9E5jIRl0uQUwhl9Z86b+iJ/y5zwn1ni80NLGmPzGc05x0jyBRqF5VQFnuS493FSzDOJVYtEYSQi5h0X5B+6I35PyQmHPdrY7tbD7Sc2mHxPjZsZR3lQfVHJidwMVhrOcre7mlsdyujH9RZlgs2trtovJdisX1NeFNy6Xr/TiOh2bwu3+trZGuxgc7Cd9YF2bg238mCwlttNp+hPjuOMkTVFB3QpOqjBsYPGXNB3YViRx8P+Vj6bvY716+9h+NyHOD6vhc9eLZx3HcLpxYO47D6M+0uqeO5Xx26XOsLX9KhzjGJalM5orJhBUSwTyfJtTsi3G2v9n3NiMlX6TeHEt+PboVwYKzTNqNOz+eIIh641rbpWDBpb/m8L9MOEQJZ83GnWNP1agX4qzzsL4zMCXauup8yAVtfjqroBZ97Q4X5JJp8NZPKX7iz+rTeHTyqi2UhwZcrLlHFnY1ZDPGk21KPLyoU2Mxf6PHypNrGlwdqTHncfZkJDmfYPZspfWX1ut3Vg1F/IgJcvU8HhjAVH0u7oznhIFDORIibDYqg0D6TbJ46BYDltrnGc0Q6gwSGGEjU3apxTOWoqJ0NDzHEHBcc9srgSc44sm3TC3vHH7TVnvN/ypdSjDOEHQXi84Yn3L12xfF4di+c1sX7JGPM9xli9bMqp0GjuXqqlRypnoeIMWzcauddTw0fXru6cCf1bgV5tvaLMyP0bgd7oruVWVxX3hptYHann3nQHnw61cu/ySep9XSjVNaJUzYRjqqaUHtDh/GFjTuvZMZKZzUetF/nNdAPngiLx+GcdLL6rgfNuPbxf1sBtrwpue1XwelkDz/3quO45gul3DiF735rBSDFz8RKGIqMZlclYylGwkJX6/y+BzhDyKDeKh4pw7iR6sx7lyYSbG81aZpQdsCDvTW3K3zfk9IfGXDpiyiUVZZbt07sEl9VMqFAx5KyaBVVaJjTqW9BkYEWzoTW9JvbcsLWmzc6GHgtP7p2S87uWBO7KvWgxMaBG05KrqtbU6ZjRZmJHo74FDXoWtBrb0mXpTJ2OOcMuXvQ7uDHl4suEeyDtZk6MBYWxIpEzHRnJkNCHFZmYNidnZkSRzIhiWElIZDIqjo1kBX2hoWymp7EkljASEc5CejILKSkspmWyma+gPz6LzpQzNETkMJqaz0hyGX2yY1z0FXPGM5fj7iWUe5UjN0ig3OsYdq/ZE6clwnG/EeYvHEbrB++h+R1dxopOUxvkxWRRMVu1J5m/ksNS9UnW6s+wUHuKqSvlzFw9xsSlUmUFuqWC203VrHVUsdp0nkd153h4qphBpyDOqzmQ954NydoenPSQIX7bAtH7tlz0U3A1JIv+xHzGRHKOabvgt/cQrns0cdithfteDXxeUsf/FTUCXlXfqUB77jmI04uHcN71AZ4vH8ZtjzaOL3zIOccQBuMkdIaGMhAfx3xRBrMlcmYKlFXnqVzleeip3Pidj58e35jOkzOeJWE0U7Ij0aMZ8YykJzGckcRQZgpDGcn0psi5niSlK15MU5ycukgxjTEyKoPDuZYowvjAO99YgVbd87Jyt0XHmlZdSwaMLJm0+RuBLongybGvCvTH8gAWvd1o0jTZ5sSRLwRa1eBL8qwUaPOdFI4aNV3lhXN1PSrV9Dn9C21uF6Xz+4Es/tyVyV97FDypiGYryZ1pb1PGXUxYD/WmxUifa5bOtJm70OvuS7WJHXWWHvS4+zAdEsKUfzBTfmFMCEO+xInJoFBGhOF0OHkwERrNdEQcE6ExVFkGcs0rhoHgBFpcYjinG0idfTRl6h5UOyVTaiwlXT2OU87ZnPDM5nLUaRTWaYS9E4Dbj53xfSeAQucihB8E4/mmF16/cMHqeY0dTpjtMcL2h2acDIpk69wVrsvkLFacZut6/VfuDig5oRTop5dvNzqqWHuGE1vX67c5Uc3doSZWh+u5O9nO474mts6WUO/jSpmuMaWqJhxVMaHsgDbnVUw4Z+TISGYWt1sreDJZzwn/YFx/pIHFcxo479LDc5+SC657juCxTw2PfWq47D6MyXcOkXDAhoFIEbMyMYOR0YzIZCzlZCoFOkvOQo7sP8aJVCl9sm9j7L4d34zxnEAg4JKmEU0GVtTpmCnbqGqZcN3YhptahkxbW7Lu7cwDuS9P8kJ4fCyaB0e3OxGWxvCkLIbHecHclfuz4OdOvboRpW9oUfamJqfe1+WiijFX1I2/1Ma7VtuUeh1zGjRNd861Pb1MWKVpwLmfG1BjacNfxsv5y2Aej+qiuH8lnN+WxTBlY0yTiREDAR50WJsz5OFJl40rnZYetJk6MOziwpwwlHH/EAZ9QpgIVl4mHPQSMuYfxnRwNH3u/txw9WZWGMJsQBgTgRKumAlp8ImgMzCFSksJlaZx3PRK55hFDJc9MsjSDiHqTUfi3vYg4pd+nHA+itw4lUi1OAJ+5kO6djwStQhiVUMJfM8H4aEALPeZ4P6aHrovvoXKP5pi9IIxsyeKWc2Jo08ay9aFizzsauVWVxW3Oq7snAndaL24szA+TSZYabmsXCA76nZive70NbLeXclafzOb/c38driOiVwZ583MKXxfg5OH9Tlx2JBzahYc+9CYi3outAXKGc2P51FnEZ/faEB+xBCn7x3G8blDeO3RwuclHTx2aeC7VwevvUfwekUFnx8bYvu8Lpbf1eWUrZDFlAym4pIZlUQynSlmPi+Vhfw05vNSmc1J3nmdfaYLm7ITm/wrczxdtjNvyL9BAp0u5H5uJB9nRPEgNYhbYh9mfd3pMbHl1BFLFL/UouQdPU5tC/TFwyY7OeoXVYy4qmlKjZbxl/5hbNS3VEqwiQN95lbcNHGgXs+cKZE/f+nKZkFswzUbXZr0LKlUN6VGz4ZafXOaDa1p1LekWtOYaxZO9FjYM2bnSK+5FcPOHgy6+VJrZMNslISZyFgGAwJZiBPR6uDIeGgYC/Ei5iQxDIWEMCMWMSGJYz0znUWZjIHQEBYyUpjPSGYpOZERaSojSSV0xeTTHZ7OlLSMSw5RrBYdYya7jEHRWZrCTpNtnIzwYDTR6rHIdeIIO+BPqGowjq/ZYvJdLcx26ZFjK+T2hWJ6g+Vs1Vew1nCOhavHWbh6nJXa0yxUnWDqSjnTlUeZrT7G2JVSltsustRayUztWZaqTvOks4p7tadYLcul19GPKx9YkPOOJe4vHybgdUPSVL0QfeDIlYBMGkNTmMrI5ry1G97P/xrX3So4v6SDz35NQl5VyvPTi4Thr+vjs+8ILrsP4Lz7Q7xf1sXue0fweVWbKr9keqNFtAcFM5wgYiZfznSRlKkC2Y4wjyskTG7P0UwR41mSHamezJEpBVoRy2imiOE0KcNp8QylyhlIT2IgPYkeeTzXJHI6RHIaIiVcDYnhSlAYXUkyxkuSuHU17Rsr0LXbnKjSNKbb0Jqb2kZMWZmz5u3MA5kPj3OCeXT0WU6XZYYCAAAgAElEQVRE80npU074seDrRr2GESVvaFL6hpITFSpGXFYz+hInnh71e3p0o0HTZJsTBlzV0Ofczw1osnPk85FSPu/L4ZNGEQ+rY3hSGMaEjREdlsYMC7257mBLn7M7XbZudFp50Gxsy4CTC7PCEMb9gxnyCWHEP5w2aycGPQMZ8Q1hShip5ISLNzPCUGaFEUwGSaixEtLgGcG1gGSqrCVcMY3humc6pyxjqXBJJlsnjOg3nYl5y4PYt4UUWOSQaJZOpFosoW8KSdeRIdOIJPJQEP7veBF4wA/7H1nh+qo2Os//CpV/NMZ8jwVjpUUsZIvok8WxdvoMD7ta2Oq++iVOPGXFenvlzg7ls5xYu1bPRnc9H/U1sNFzlY3+ZrYGmng8UMNQlpgLZpYUvqfO8UN6nDhsxFk1C04cNOGingvtgTLG8xN51FbO4+aLJGuaYP/dAzh+7yAeuzXx3quN+4vq+OzRwmuvCh77j+D1I31sf6CD9XO6nLETMpeYymRcAiPiSKYzJSzkpbGQl8ZcTgqzOUnKNvfZ223uFYlMKxKZUiQo2ZARvzMnMuIZT5NtTyk34r8V6G/H148MgUAwKxAIPhMIBPcEAsElgUDw8t+85xWBQNAkEAh+JxAIHgkEgmKBQPAPf/OeIIFAsCUQCP4gEAjGBQKB6t/5fc8JBAKuaJvQqG9JrbapMsRey4ROPXNuahvtCPQ9mTcPs4N4WB757wp0g4YxZW9qU/JL9f+QQF9S0ab6PWvKD6vxb3fq+P31DD5tjOXP1zO4mxXIjJ0pC6HBrMhiWIuJoNvOnlYze2p1beh38mXK25t5YSiTgWEM+YbSZOVMv0cAQ95BjPqFMuwTTJ+7P+MBYcwKQ5kPiqDRzJ0qy2Am/MT0e6dw3kTEFbccsk1jSFbxQ/hjM/xeNSPghzb4v2pL9PtB5FhkcNLzKMkGcsSq0cQdDuOC/3Fcf2qH79seuL/lisvrjhh+RwfzPXp4/tKY+WNnuZkYTU1gMJ/W13Gv/gIr1eUsN5V8aVFcb6lgqf4Ma23KPNy1tkpWv0agN6/XsN5dyZ2btdxtv8rlkEBytYw5rePMGXUnyg5ZckzFkmpzTwYCxUzHJfDkYhGfth7nsxs1+Lx+CO99Jrj8QEW5GL6kg+8+XdxeUMPle0dwe/Eg3q+q4vsTIxx2GRL5Czu6w6VMykSMihIYSYpjNk/OUmEG83mp/1kC/V/yTCynBnE3N5KPM6N5nBXF3YQAlkM8GbBzolLLkqw3tZVV6Hf1OfuhMRcOGnFJ9Yvzm892VKva/ptv1jenw9CCThNrblqY02/mSJu+Dd3ujvzbzWN8pHBn2NGSXmtHGnVtqDewo9bQijZTexp1LLlp4U63mQO91k4M2Dox7uFBr5MrbdYODPn5Mh0RwqJIzHhoGGMhobQ6ODIVEcGaTMpURCSTkVGMRUYyKRYxLoplJiScaZGY1Uw5CynxTEpzOGEWylHjAM7oe1NhGkLqhx5Ev+NBR1Iew4oKGmNPU+SYTfivAwn6hSup+mLkunHY/tACy1dNSbNNwfC5g5i+YMjKsWoavQNYP1fBnbYalqpPMnflKItVJ1mpPc1s5QlmLpQwXVHK/NXTTFw5xVJjJSuV57l16RwfN1Ty285aPuuq4knLBR4XJDNsakfTYQdEP1PHfs9hfPZrkfShCxFvWdItL2e68BidcSL89x4i8DUDrL53GM9XdAjcp0rQD9UR/kgT4U/0CHndBJ9XtfDYp4r7vg8JeM0Ahx+o4fuqHvVuIm5GiGkXBtMvjWU+P4npQikT+XFMZcuYzpYxlSXdEeixTBFjCjGT2VKmtr83pZAwqohjNFPESLqEwRQp/ckybiRJ6EtJ4HqCnLY4Ea0xEurDYrkaLKInRcpUeSIbl9K5X5/17wn0f8kz8XTWapvurOedumbc1DZkytKCNW9n7km9eZgl5ONtTjwuVQr0F5x4KtDGlL6h5MTJ93SoUDHiiroRlV8n0Nvi/JQX1aoGXFLRpuo9K06qafPXtSv87kYmv2+X8eeedD7K9GPG3oz5ECGLkihWosLosXfc4USfow+TXl7MbXNi0CeYVls3+tz9GfQS7nCi192fsYBQZoUhzAsjaDL3oNY6lDFf0Q4nLrlmkW0STbKaP0H/bIHvK6b4/9Aav1dsiT0QSrZ5Osfdy0jRlyNVj0WiGskJ9yI8XnfA51fuePzKFbdfOGP0HW3Mduvg8ytzZstP0xMfSUNIGI9rqrhbd4GV6jKWG0vZaLv4FU6stn6RXrO6nV6zuh3/uNFdz+b1Gja2ObHVeInK8GBytYw5pe3IKTUHSg9acEzFkhpLL/oDRUyLEnh0oYBPW47zm64q/H6ugscewx1OeO/VxuclnW1OHMbtxYN4vaqKz48NcdhlQNQv7egOlzApFTES9/c5MZeb8hVO7Aj0M3MiI/6bWGj5dnwDR5pAIHhHoFzonhMIBBcFAsHUM9//vwTKhfOMQCD4jkC5SM4IBIL8Z95jKxAIPhUIBCrbP0coEAh+LxAI9n/N73tOIBBQqWNKg57FTofAai0TWjSN6NX5QqDvSDz5OCuQB6Xh/0uBLn9Lh6Kfq/2HBLpa04DaD2zJ/fX7fD5SwucDufz5egp/7k7jVpoPt3xdmArwYzIikI24SAbc3KnVM6fT0oMp33CmvL0Z9/Zn2DuQFmsXej2F9HsEMOIbwohvCO02LowHhDMXFsukXyBjXgGcOWJCvzCN/uBYzpoGkPK+D2E/c0N2MJLkIyFE/tIV732W+OyzRfgjV65EnKfIUYH4gwBsn9fB7XVbEgxERHwQQLxuLK6vO2CwWxfd5w+j+g9vEnYggJVzp+mI9mEgMo31ylPcbjzJ8tUilq+eYq2mjvWWip0LVTuz5dJO5vPXCfStG3XMNJ7mXHAE5RYhtAVkcdHYn0uG1pzTM6DW0Y2BiFBWMiTcypfwUYmUxxX5/Km7GpGmNlYvvI3rru2K8z5d/Pbr4bdfD+fvH8H5ucN4v6RC8Ot6eL9mgOerlpwwDmFaHs+MPJJBkZQhRQKLpemslmT9Zwr0f8kzsZKiFOgH2dE8yo7hYUIgd6N9mPX2pMXYmsJ3TMj4mSqFb2lx/H19zqoYc1HVaAf8tdrKZ6pOx4y67U6bbQbmdBpbKTsLmlvSb2FHh64tpbqa/NtsLbeKXVkOdGPUxZV6LUsadK1p07enVdeeOjULesxc6TSyo9PYihuW9tywdqHbypVWMxtWRSIG/b0ZDQ5mSSyh2caeUX8h06EhTAYLmY2MZjo6hm4fb2YkYhYkcgb8YlmUxbOelsZgaCrnTcLoD8/hpmsYlTbBpH5gR/BPzIl804vLfsUU2CRR7ltGnJ4UqZqE8x4nSdGXEvq+H3EaEaj902Hy3Qswe82aUsdIxhIT6BT5c7e1gts91cxXHmP60lFmr55mruoMc1VnGD1VwtipMpaqLjJbeZ65ytOs11bwoO4qDxureNRcyZO2Kzxpu8jD8znciYvmhqYxxb/Wwu3F9/H4njqxPzRA/q4TySrujGeeZPXYacqNfXB7/iCBPzPH9zUTfPZr4fUjbXxe1cLnVS2CfmqI214VPPap4brnfXx+qIHdLk0CXjOl1lNMf5SItoBg+sVxLOYlsZSbwEJ2EtNZ8UxvS/SEQsJkppjJdDETGaIdoZ7IFDOeIWJEEcd4RhyT6VKGU6T0Jkm5kSimJ0FCl0xCU1Q0jeEi6kJjuZ4mZfFUOluVmdyrz+B+QwZH3vrx3xPo/5JnQiAQ8KvnX9xhhJIThvRqGykF2seZO2JPHigCuF8S/mWB3q5A34n3+xInCn+uqhTo7bjTp3dlnr1E+PSC+bMCXa1pSO0HNuS98wG/7yvgX/pz+Lw7ic87k7mV7sOmrwtTAb5MRwezFhNBv6uSEx0W7kx4h+5wYtArgFZrF256BNDn7r/DiQ5bV8b8Q5kLi2HSN5AxzwDOqZnTH5jGTWEs50wDSX7fm7DX3ZEdiiThkJCIn7vguccc7302BP/YnTP+Ryl0yEB8IBC7F/Tw+IUD8XpxRB8MQqYdjdNPbbF41QzjlzRR+//Ye8/oKK80UbfuvWvOudNtNyZnnAPgtrExQTmWVJJKGeVUKpVyDqWcc0BIIJQlUEY5Z0DkJEBIIIEAZ5soglN3T6d5zo+Sytjj7uk5694ZnzXea+1V+qoK6Q97P8/3fu9+3396h3AVX6arKhiRe3EmIoPbzVV82lPJjdZ9zLZUcau9kw/7FZxYODsw21MzX++5idmFus/DPxToT493MtFZSY1fCJXWIQz75NIg9qFRZKXghKOCE7MZMXyyJ4bP98fxsLGAb4ebSRAaYbXkXZyX6ik4sVqI11ohnmv05zmhgscqdfxeFz7DiQCuJMQxmRDGmeg4zs9z4mZRDtN70pTivPA6lZfybwT6claC8lUh0HHzM55jP49Uv1/G/wHjXYFA8FeBQLBo/lpLIBD8USAQLH7mO2YCxcb3T/PXYwKBIP9Hv2dCIBDE/cTv/41AIOCQvildhhZ0iyzpEJrRLjSjV9eIY/pGXLay4Lavm1Kg7z4j0E/2y/lqv5wn+QHcT/Rh1lPCoNCC/Hd02fO2FiVbdKjdYUCzpjHNGobK/LZWLSPatb+vAd2jY6qsxNGnb0yriiFl76hxK1fOn0/k8G1/FN+0yrlfGsyHqd6cdLfkQXostyLCaNMTM2TmwgV3P64Hh3FJ5sdFaSiDpq5ccPfnooc3F6UhnHHx54xHEEedvbgcIOeahz/TvnImAxKo0bXnpHcyeVpheG6wwP8Ne8ocsrFfZ4zzcl2ka0U4LNfHdrkhZY75lNtkkqDig8NqE8wW6VMtrcB9owvxeqFYLdfEbIkmcv0Y0u13k2Hiza3Ccno93LmUm8fc8FE+6W9gtqOaq4dKme2o5lbXQa53HWC6o4ob3Yqfr3cd4PYzFQlmhxu4NdbCnRO9fHqklRtDjVQE+hO5TUyZdQRldlGMxhUxnpLHZXkgt1IC+XRPNHfzY3i4L5EvihP57GAaT0cOEK2mj+0LH+D8ggaSZWr4vqiPzwY9ZGu0kK3RQrpKA+eV2/DYoIl0nTauKzXxe8WcYVkIU3FJjMdEcz4ugpsF6czsS2V6fs4UpXG1MJnpwjSuF2YqJXphXpkX5is5SfOvyVzOVMxLGUmMxUX+Ixvjf8qauJXmz53dYXy5O4w7uRHMZQRxJ0rGVakTRyxsqNpmTM4rmux5S4t9b+twQMWEBk1T5Q3iws1ot9CcHn0TZQviw2JrRk2sGDaxZNjMisN6NtRpi/jXM2182xHLZ3EyJj1cGbMwp1vXkMPiXfTrmzEotKNPz5rDJk4MGSok+ryjJ126Zpx39WImJIKpsCAu+nlxySeMIWsnLvsFMR0Wyg15GBd8/RiTeHDWO5BbscmKCjTBoUxGhXI1KodqPW9O+2dwzDuSAwaOVBm6U2bgR7NTHgnbAsnQjCJuu5wMcSY5VrnEaISTJk4g3SieVMMY3F42wui5nSSZpRCgKuWToiK6PFy409LIh/2H+Giwmps99Uy31ygFerK5kvGDJUzUlTHdUs10YyUfddRzb6Cd+z0dPOzr4MlgG18PtvPVYBtfDTQzV5LHTYmMVlUjkjca4PDrbdgu3ol0rT6R79pS5xLFeM4+On3CiXnbFK9V2rivFOL9kgmerwjxe01E0FtivF8WItugi9tqDWTr1PF+URvbxbq4rjGk0VnO8dBwBn0DORMr50Z+Mtfz47mWk8hUdiKTuXGKR9K5CVzJiGYyM4aL8wI9mRfPpcxoJjKiuZIexWR6JBdT5ZxLieJkcjRjCVEciY9lKDKWgYhY+sLkHEmI5EZ1Op91JHO3N537/Znc78/gfn/G3xLo/5I1IRAI6DIwp8vQgnZ9U9qFpvToGjGmZ8QlK3Nu+7jxeYxkXqCDlQL9ZH8ET4sieJIfwL1Eb254utGvb07+O3oKTryrTc0OIYc0vudEu46JIp1Q25jO+cob3driH3CiRcWQsndUmckM588nc/luMIbv2qN5UB7ChynenJRa8kViONdDgugQmjJo6sx5iS/TgcFc8vRn3D2EQVNXzkv8uCD1Ytw9hNMu/pyWBig44S/nqtSPaZ8IJv0TqNN35Lh3EjkaIfi8ZIX/m/bstU7F6SVTXFboIV1jiP0yPWyXG1Jqn0e5bRbxOxWcsFwqoty1BNlmCfH6Ydis1MF0sQYRetFEGieSaerDjfxiBr09uZSbx4PBUT7uq2e2o+oZThxgprOaa+2VSkbMdFYrONHfoODEUAM3x5r54li34qa1r5bKwACid5hRYhlGmV0kQ9F7OZ+Uw0RkILdT5zmxO5p7hfF8XpzI5zXpPBk+QKSKLraLvueEzwY9vNfr4rFaE4/VmrivVFdwYr0m0nVauK7UJPB1C0ZkIUzGJnE+OpLzcRHM7kmbZ0QK1/alKDlxrSCVmYIMpUQvvC4EViae5UXG9/Mf5MQv45chiBQIBB8/cx0kEAhu/Og7qwUCwb8KBIK356+fCAQCux99p1wgELT/xO//dwX6ooUZN71d/rcEunK7AfUqoh8IdJe+mTJKtyDQC7NPz5wBQyO6tEyp2WZAi405f7lQz1fD8XzbF8+fh3bzxd4IHhWl8HFCKIdtrDls7cw510CueIdw2cuXKz5BtOpYcNzOh7OuPpxxlnDJPZijdl702Hhy1DuGg6YSaoSunHILYzIgkUoDDxJVPPDb5EjEBx4kqvkjWSPGebkhAa9a4rhEC4fl+vhudKJOVkr0B57YL9PDeZ0Z9Z4VpBgkkm2chNVyET7ve6O9SIe60CrKXGL4omgfbVInJvam8UV/PZ8faVU+yl7IBb3RXsVkSxkTh0qYbCljqrWc2Z6aHwj0zdEmZo8c4vPRJjrjIpCripC+qstBWQ4FFiEUWQfRJ0/nal4Gn+4O4s5uPz7fHc2dgjjuV6TxaUMmfzzbRrbYBuvF27B9XhvXJZrIVqvgsVoTnw16+L6or9gUl+zAeeUHeKwzQLpajHStPll6TlyOSWEiOoHzUZFMpcVzqzCDmb3/uEBP/IRAX0xPVM5/cGP8T1kTt9P8ubs7jC/zw/giN4yHOWHcS/LiRqATFxxsaVMXUfCWPvve1mf/O/pU7RBRr2WifATda2hJl74ZvYaWDIis6dE1okvbkH6hWBmJ7jIRM6pvRbOaEX8+U89fz+/mu4ooPgn35rK7HWfsrTnr4MgJC2v69EX0aJvSq7OLw8YujJk5cGqXI6NiB66HxHLey4dT7lKuhYbSLrJkzNGDW1HxXA+XczU4jMmgcE5IfbgYEMZ532DOegdyMzaZqegYzoXEcSYgjYuhuVTquDLgmECNyIcTIaXk6gXjud4U35dsSNaLYZ9tLkkaIexarI9cPQT3TW4kGcox/LUq+ou0cdpsT1NwISe9/TgSE83d0Q4+Hj3Eh7213GyvZfJQJVeaq5htq+FqbRmzTdVcOVjM1MESrh0o4WF/O98e7uVRfwuP+5p5OtTOt0d7+PZ4H9+c6ONx70Ge7M7igpUVLdsNCV+lwa5fbcPin9/DbZUO8nfMubK7honicsqMZchWquHwaxW8Npjgvl4Pjxd1CHjDmIA3jJUHoFxXquO1Wg/HpfpI1+hQa+vP0fAoBvwCOR8fz3RuIjO7FU1/FurRTqRHKevSTmXFciU7lomMaC6lyplIj1KWZ5xMj2Q8KYwzCXJOJ8RyMjaOoYgohiLj6Y+I5GhiNNfLMvm0PYsHA5nc60vnbm+aUqAXP//PP5s18fw//RNdhhZKgW5bEGh9EePmZsx6OfN5tIR7Ob5KgVZw4u8LdMU2A+pUDDmkYaTkxEK1pg5dMZ0/4kSvrhkDBkZ0aoo5uM2ANlsL/nSulm8OJ/FdfyJ/7M/hi70RPCxM5KO4EMbsbRmxdOSsSwBXvIO57OXLZS9/2nQtOWbrzRkXb047S7goCeKInRe9Np4c8YqmzlxKjYErJ1xCuOKfSLWhjEQVKb6bHAh73524nb5I1opxWmaA3ysWOCxw4i0nDkiKiNjijv1yfVzWm1MjLSHVMIlMUQLWK4zw2iJD8zlNyrz3Uekax8d78unydOVSQQqf99fz+WgL19sqlZyY7ajmRnsVV5pLmThUojx8O9t98AcCfXOkiRuHm/hsuJGWqFCi1IyRva7PAWk2BRah7N8VRG9EGlO5GXy2O4Q7uwMUnNgTy/2KVD5vyub3J1tJN7LG6oUPsHlOC5fFmshW71RywmeDHpIVakpOSNcKcVtphPsaPXKELlyKTuZyVJySEzcLM5h+hhPT8yUhFwR6Ki/l7wr0RHYS42kJ/1FO/DL+mw99gSJiIHzmvXiBQHDuR9/7fwWKjVF1/vovAoHA8EffyRYIBKM/8TcUhwj1xXQZWtBpYE6H0IwOPVP69Yw5LDTinLmYWQ9H7sS48yjPn4f7Q7lfEsrjolCeFEUoBfpegje3vKUM6FmwZ5MeBZu0qfjAkIMqRjRomCjLE7VoipQRhi4tEZ1ahnRpiejWMaZf35ReEyF9OmZ0qlizf6cK3x0u4+npPP5yPJ8nVZHM7Y/kTkksk+H+tOmLOC/x4ZSzjHNuHoxL/egSOXDeNYxzLiGcdfTjuJ2MM57RHLeXMePlx+2AIC67e3NQHESTRTAp71iQvEOK90ZnAre4Eanijf8mR1zXmhD+jht+r9sg/p/bcV9vSuwOXwI2OeP9kiXeL1lQZJmOfJsfRbZ78H7DAdmbTqRa56P6vDajmTWcSMqh1dGZa8V7eXCkiw+H6vlwsJZrrdVMHqpgqrmS6bYDXG2p4tqhUqYOlTDZUsrFQ/u5OVjPpz1NfDLQzLXug3x0uInbfQfYbeWI+XOvs1cYQNJ2R+q946iShNPoncYB9zgupBYwmx7Fw4JYvtwTy1xdIo/bs/huoIZCEzFWz72D3Qsq2D2vgscqbdxXKgTae72uMvrsukwFj7UfIFmri+sqE7w2GNDmGs7l6FTOhcUwHhvL9dxUbu9LZ6ZIIc4zRWnKjXG6MI3pPek/yHG7ujtV+XhuYZOcyE5SRp8vpidyNObfPRzyn7Ymbqf5czcvjC/zQ7mTF8L97BDupnnxYYQLE1I7hgxMKH3XhD1valL0jjZVOwxo0BbTrKNI3+jSN6NbaK6Y+uZ064ro0jakT9+EfqGYEWNL+k1M6NGxoH6bmIcN+fz+eDrfNkTwebQHt4JdmZQ5csXNgbPWFgwZ6DNmbkfDViH17xtwYpeEXtEujjrImAqKYMI/iPOe/pxy8+eovYyZUDkXff2VTYRG7Zw44eHDlZBIbsenKhsJTUUl0G3vy9nAZE76xtFo7McRlzTqnFMJ3WiNbJ0Yv5ft8VhtQ61nJWXOubhtMGfXcmOa/OsI2OJDvGowosUGmL/ijOPbNpzKKqVF6s2djgY+GWlmdrCR2c4mbjYfYPZQNdcbKrlSvZ+rNaVcqy3jem05E8V7eNjVxFdD7Xx1uIvHI+08Hmnn6dEuvj7Rx+/PDPH7M0N8d7Kf33XU8mV0OGM6Yva9YYD3Ii3Mn9uG/SINIl63JFvbhaniKuocA/BZrYLbEnX8XjbF9zUR0hfVCd5oSsQ7VkjWaOKwdAeuq9TxflWI+wYdJKs1qbAM4HhkMgP+AZyNjWUmL4np3ASlQF+ZF+XLaZFMpEdxOS1SOSfSo7iUKudKRjQT6dFcSIvkQloUpxMiOR4TyYmYGEbD5PSHxzEUFclURSIftqdwbziXB4NZ3O/PUAh0Xwb3+3Ioj3L+2ayJiHe3/YgTYvr0jDmsL+KsuQk3pA58Ge3OXK4fD/aHcK8klEfznFAKdII3N73cGdAzZ89mPfZs0qJ8qyEHd4poUDdW8qFFUzQfgTahU8uQDk1DOrVEdGkb0ae3wAlTOnZaUqyixtcjJXx9Np8/Hs3lUZWch0Vy7hTHMiUPoF1oxGlnD045eXBOIuOC1JdeY0fOOgcrpqMvx2xlnJTKObHACf9gLkl9OWASQI2RD5lbrUneIcF7ozNB77sh3+mN71v2uK41IewdV3xfs8b0f+5Ass6UeFV/gt52RbbeDM8N5uSbJCD/wI99u/Lxet0Br40uxIuz0FoqZDSzhmMJmbQ5u3JtfyH3Rzv5cLCB2wO1XG2pYvJQOVdbKpluq+ZaSyVXm0qZfJYTA3V80tPExwOHmO6p4cORRm50VbDbyhHrRW9RKPQneacztZ6xVEsiqPdMpkYaz4XUPdxMj2auII4vC2J5WJvIk45sHneUsdfUTMGJRTuxe14V6Sot3FeqIFujqYxAu69Ux3WZCtK1HyBZo4vLSmN8XjSkzSWUS1EpnA2LZjw2hpncFG7tS2Om6KcE+ntO/FigJ7ITn0n7U3DiYnoi42kJ/wgnfhn/zYdYoMhPM/vR+38vsrB5/vo/HFkwefFVLF55A/OXXyfhfRW6dE3p0zViQFfIaTNjrrvZcTdawuM8fx7uC+FhaRhP94fx9KcEWteCwo36FGzUpvQ9A6p3GlGvIf6+q9R8ZKFVSxGR69I2VJazGzAwpc/EkAE9U/q0rCjfrkGbmwV/vVbDH08W8oe2dD4pCORRbQofp8fQayJmNlTOJZk/p51lDJnbMmbrzDmJL2fd/Tjh6stRJy/GbDyY9grlvLMfw7YB1Iv9KFB1JuJVI2K3OBG82YlY1SCidnoje30XTutMsFkhpNm3DKP/sYNdL+gQ8rYLPq/ZIFlniu/LlgS/aUf4u1IcV5mRqheP9gs6NCZ1oLlYSJxuMP3Bu+nwCOb2wTLujbTz8WgzHw7Wc7v7INc765Q5oDMdtVxtqeZCZQGTDWVca63mUnM5s4NN3Bhs4fpwC7P9DXzeeYDp3SnkbNNnv44bUW9bUGIZQaaOC/3h2VS7x1HiGMWZxAKup0VxpyCSB9Vp/K57H1/WF+Kx7jXsnnsL2+few3WZCpIVargtV8V7vS5+L5otNQgAACAASURBVAnxfVEft+WquK9Ux/GFbXis3oHTSm3cN5gR+74tw94xHAuK4khAGBeTE5kpzGC2JJ3popR/szHO7E3/QU70j/OhF36eyE6kWOqCk9pOHNV2Yr1t69/bGP9T14RU5R28NLfgpfUeTV6WzOWFcT/Tl09iJdzwd+GUlTWNKsYUbtKmeIseFduE1GoY06htQo+BBZ16pvQaWiolukvXmB5dEb16CoHuE4oYFBnRLTSidbslI1IJfz67l4f1IXyR7MPNMHc+kXsy6+fMtIcdU5JdDBmI6dUW0qtjxLDYlkFjO26ERTIZFMB5L0+mwqIZtHbitKOMm5ExTPgHMRUUynlPH064unPeJ5DzvsGc8wliWh7HVFg0l4IiaTYNZMwvjVarODocM6iwTyJeVUaqqi+Slaa4LjfFeZ0l9R5lZOuFYbNUj+AtUjKMEqj3rcV2mZCcXRmYbLAhVieYRkkifZFZfDhQxezwQW4OH2S2p5LrjcVcLC9guq6cmfpyZmrLOF9SwGxlMZ/VlvGoo4G53kM8GW7n66PdPD7axdOxbr492c93pwYUEn12mMdj7XxXUcgNqTv97xmQ/boQxxUa2LygjuNzamSquTASk82t6jpy1KyJedsMn/Ui/F41JnCTEf6vf5/G4b5WC9dV6nis18HjJV28XtSn0iqUExEpDHmHcTIqkOncBKZzE5Rd0RaizD+W54spEVzJiOJyZhwXM+I4nxrNmSQ5Z5LCOREXxrGocIZDQxmJiKIvOJ7x3el82ZXLw+FM5o7mcn8oi8c9KTTHO+Ntpoa3hQbupuo/mzVh8uKrmL/8uoIT76nQqSumV9eIfl0hp8yMmHGz5U6khMe5/jzcF8yDkjCeFC1wIoInuwO4m+DNLS93+nXNKdwopGCjFqXvGVC1Q0SduskPUv3atI1p1TSi80ec6BeK6TM2ZEDXlF5NS8q3a9AhseQvUzX8y6m9/K41jU8LgpirSeZ2ipweYzHTQaFckvlx2lnGsLkdR22cOevmw1l3P467+nDE0ZsxGxlTsmAuuPozYhdIk6k/+Tsdkb9mTOy7jvOcCCRyhxey13fhsMYIu1WGNHjux/h/7sR6kTbBm50Je8cN51VGeG8wx//VXYRsdsVljQXJ2jFov6BDbVwLBqvExOuF0hecR7tHMLcOlHJnuI2PRg9xe6Ce213zbGg9wNXWA4rUp2c4cbWlikst5dwYaOTGQDPXh5q50VfPZx3VXMtLIm+HIYUaTsS8a02RWSjZuq50B6dTLY2j2F7O6cQ9XE+L5k5BFA+q0viuu4gPK3LwevEt7J/fiM2vt/yAE17rdJSpfm7LVZGsUPueEysUnIjbasuwVxTHAqM4HBDKeHIC0wUZ3Cj+aU4sBFqe5cSz+dBTeSnKoMt+dxcc1XbiqLrj3+PEL+O/+XASKDZF/Z/4TFMgEPyL4Kdz2/7H/PWYQCDY/aN/d1nwd3LbWg0t6DPZpYwudOma0q1tSLeGNifFIqZdbPhC7spcti/3C4N4VB7B1yUKef4pgd632YCCjTo/EOhD6gbKToQLhwkXBHohMjckMmdYaMqgyIx+kRXtuhZUvS/kRnUEf56o4H53Ko/a0vlDZz4jriZ8FBXGcQdHrvpFcMLehzErGWccfTgjCeeERzzD7kn0uibTYxvDKUk851wiOeMWT6+NnCqRL9k7nInYZEP0BzJSdeS4vWSO2SJNjH6lQqyaH3utUrBapI39MiFh77gRuNERi+c0CH7TDskqEV6v2OC8xoI0/QRM11hR4ldNg28Jte4ZlLpGMVXbxu2BKm6N1HN9sIHZriZutdQz1VLNRFMFUy3VTLVUM15XwqWqMq411TDd2sBkWz0zvS182FLHbPNBPuquZ26wibt1xYy7BVPwtgEFIj+yjYIoEPpTYetPa0gSNbJERsMyuZmRytOaLP58tJKTUSG4LnoD69/sxGqpPg6LPkC2RgvfF/WVm6LnWm1ka7RwWboT6SoN3Jar4rveAMlaY4I2OVEg8uZ4SBQDPsH0BQRzrSCP66U5XCvPYHLv9w0l/ncE+kp2qjIK/XciC//pa+KjZG8e5ofyoDCUe4VhzOVHMJcXyt00Lz6JlHLJ1YE+fVNKtogoflef8vf0ObhdqKjEoaOA/0IUukvfjA5tE7q0TOnVNaNXz4QBQxOGjIzpMNClQ8WcMjUt/nqtkUc9UXy1L4zP4jz4NMadj8JcmA2QMOsjZUhowKiBEYNCE7p1TThh48EFdw/Oufpw3ieYUz6BDDm4cdpJxrXgMGVntSMOzlzw8uWSXxAXA8IYdXLnmjyOCz5hDDhGcMI3jlMeiXTZJrFPFIvfm26UWOTg9aIYyUohbuvEOK+3oNxxD/5v2uG0SkSheQph73qSZZiMyVJDUj324LDZiYGog0So2jOaX85nXQeYaSlhsr2cqbYqLlUVcal0L5PVZVxtb+FCbTnn9mTxaWUR95qqedhWx9OBVh4OHuLB4RYeHWnn6Vg3350a4LtTA/zu9CB/ODfCtxMDfH28gc9yI7lkbU/bTjHRr+hg8qvtOL2gjXS9CYG/FfFhbQMjgSkEvKiJ33oDwjZZI3tZH8+XdQl4w1jZ+EGyRhPZi3q4rTTEabE6lZbenJQnciQwlAsJ0czkJTKZGaPsmLbQEe1SqpyLKXIup8q5mBbNxYw4LqbHcjEjjvH0WM6lRHE6MYLjscEci4vgSIycI9HRDISEczgmko9qs3g8kMXjw+k8Gsrk4UA6j3qSediXyoPBLO4d3sPt/tyfzZpoNbSg19hawQmhOV26Yrq1DOnW0OKE2JBp5118HuHKwywf7hcGMVcezlcLnJiPQN+N9+Kmtzt9Ombs22zAno3alGxZEGjjH3CiTdtYkQOtbaDkRK+eMYOGZgwJxQwamtJnaEGbjgXV7wu5VhbKny6X87A3nbm2dH7fvpvDElNuhPpz3MGRSZ9wjtt7c9RKxmkHH05LwhSckCbR55pMr20MZyTxnHORc9I1lm7rcCoMvMne4YJ8ky3RWxWccH3RDLNFmpg8p0a0qg8FFklY/UYLu6V6hPzWlZC3XbBepE3g6za4rTREut4Ct3VWpOjGYbrGiv3eldT5FHPANY19DuFMHDjErf5Kbo7Uc32ggdnORm4+w4nJ5iomm6u4UPs9J64tcKKnhdvNddw4dICPuup4ONDEnbpizrsGsudtA/aIfMkxDqZA6E+lQwAtwYkc9EhgNDyT2xlpPKnJ5F8OlzEWHoB02Sasn9+J5RJdHBZ9gMdqLeXZGJ8NekpOOC/ZgftKddyWq+Kz3gDJGiMCNzlRKPLmWLCcfp8g+gKCubonl5mSHK6Wpf80Jwr/LSd+LNDKKHRWyn/kSeUv47/pCBAoNkW1v/H5/yUQCCYFAsEBgUDwnEAg2CBQnL5+9nT1LoEiuqAuUBwY8RUoShn9zdPV7YaWylqz3UJz2vWMaNcW06Ep5oiRKVclNnwRK+NBXhAPy6K5VxbFo+IonpRE86QsiseFQdxL8WPWV8qg4S4KN+qz5y1t9r+jR9UOEQdVjGnRENOubU6blhnt2ua0a5krW3l3a4vp17dg0MCKIwZWjBmbMWIkolNfRMNOEXUGevx1vIWnR3P4riWJ7zr3cVRmyXV/GUd3OXHMwZtOU1tOOHtz1i2EU+7hDDmG0Grhx7BbAmNehbTZJNNsl0yxKITo31qR874vSe/KiN/mTZp+OL7vuSJdb43bGgt2LRKSpBpCqkY4tos0Sdwuw22lEMkqA2TrjEn8wJNsjVDSNMJJUAslUiUcz3c8SBUnU+JaSL5dPNfqerjd2cYXAzVc6yzh9vBBZjtKudVcwo3GKq43VDLbVK14hN1QyURdKVcPVXGzo46ZlgPMttdyp7OFe92tPOhr4eloK192VTOdnESntg37t+4iy8SXLJEnaWp2tPtn0iXPoyM4nusF+dwtzqJESxfn53dgt1QFh+U7cVuqj2TFDnw2aM13YlPF/2VdvNbp4LFaE6fF25VRaMk6XWTrDYnYZE6rWxgjwf70egVyTB7JzL4UrpUkMVWaytUfPZqb3peq7Mr2g1mQokzpeLYyx5WcJOWJ62M/Xd/zv2RN3Irz4OHuEB4WhnN/bzgPCyN4nC/nUU4AX8TKmPF1ZUxsRs0HJhRv1qX0t7rU7hTRqG5Ms6aigkCLpkh5s6i4YTSlS0vMgIE5vXpG9MzLwIiBHXXbTfhutIonR5L5Q0Mcc/l+fLU3hE/jPLju78rHQV7MeEiZcHThiMiShq1aTHr5cj3Ij3GJD5f9wui1c+aYzIeZoFAm/b0Y9/bjlMSDsx5enPVQXJ+W+XHFJ4BrvkFcD46ny9KH49I4TnjHUmbghWyDGYXWKYgXaeKyVAfnZTrYL9MjZrsvserBuK0ywnWFAVFbpDisMCHPOBXLJSZkOO5nr10e9f5VNIQWcGpvCR+1HODKwWJmOuq5dKiSC0V5TJQUcH5/MbNN9dyuLGE2O41HpQXcb6xgrqeeuf5G5oYPMXe4hcdjHXx9rEch0KcH+MP5EX5/8TC/Pz/K704P8LT/ADfl/gxqiSl+Q4jzC+9j/5wqdi9oE7PDkUN+kUzll3HA0h335R/gsVaHkM3m+LwuJOgtMdJ12jgu3YHbctX5g1HGWP9qG0XGEs7GJXEkOJCziTFM5yZwNTuOqaxYrmbHcSUjmospEVxMkXMhNUaZx3kxI45zKVGcT43mQloMZ5OiOZ0QxYmECMbiwhmLk9MfEkxPQBCT+bnc7UviyWg2Tw/n8Gg4k4eD6dzvT+b+YDIPRvJ5cKSEj4aKfzZrot3Qkj6R1fec0BXRriWmQ8OEwyJTpiQ2fB4t5X5uIA9Ko7hbFslccSRPiqN4UhrJ48Ig7qb4csPXnX6h1TwntOY5YchBFWOa1U1o0zKjVdOUNm0z2rXM6NRaaOWt4MSA0JLDBpY/4ET9DhGNIkP+dLaJp0ey+a41iW/a93LU04rr/jKOWDsyNs+J405enHUL4aQkjCGHYFotfBl2S+SobA+tu5JpsUuhWBRM9G+tyNriQ/IWGYk7fEkTRuD3nhvu66xwXW2O9W/0SVEPI0k1BJtFGsRtdVfccK4UIltnTPxWDzLVg0lRCyVONZQo1XB83vMi3TSVMkkRhY5JXK5qY7b1EF/013Kto4RbQweYbS/l5qFirjdUcr2hitlGBSdmGiqYqC3halMls+21zDQrOPHlAid6m3ky0srnnVVcT0mmU8uGovetyTbxIdPQk1Q1W1p8U+kIy6YjJJ6Zgnw+25tKiaYuzs/vxHbJThyW7cR1iS6SFTvwXq+J/8u6eKxWxe8lBSekqzR+yIm1Ck7IN5nTKgllKNCPbs8AjkVGKg4NliQyVZrC1WfYsDAVXPjR3JP8A5G+kpM0H4VOUuZFj8WH/yLQv4yfHP8qUJye/mZ+fjv/+uxGuV4gEPTPfzYnEAj2Cr4/Wb0w/AQCwacCgeB3AkV9T/W/8fd+UqC7DMS0aYlpVRMxYmjMpKs1n0W7cy8ngPsl8v9fBXrMaBfHxRYcEZvQb2xOi4YpFe+r85fjLfxhqpI/DWfy+/YsbscHcsLGhjOOfvQYu9FjJuG0eyhn3cMZtfFk0FzCFZ9IJr0jGbFw44iLD0OekWRoSgl5W4r/i9ZEbHLB52VrsnTCCd7khPs6K6ye10O63hrf1xzJ1osh7gMP3OY3Rccl2jgt1cFxpTau64XYLtXCcYWI4I1uxG0PQvqWhL0eBVSF5dKXns7txnKuHCzi8qFSrnYe4EpdCZPV+5g8UMxMfQWTB4qZrivnak0pM3XlXKnez7WaMr7oaeZefzv3etp40NvO3EAbj4ebeTzcxJODBYw7uNO41QL5WyLyTQPI1JYQsNmElqBcBiLzmMzJp8/dhfz3DbH8v3ey6wU17JZsx2WxFp5rFW2Ng14T4vuiNj4btPFer4vbclUcX9iGdJUGsjVaOC0zQLbBgHyhM6Oh8Qz4BdMpDeB0XDyzxen/nwv0lZy/KdD/JWtiJsqVudxg5grCeLBXIdFPC6N4uieMO6lSPgpx4ZKDLV0aYva9pUXxZm3qVRTdCOvVDJTluBYaoLTrmNCpI6Z7vqTdgIEpffPVObo1jGjZZsaxEBl/HEjkd4fCuJfvwyfJbtxP92MmwJErUnsexPgzLXHnrLU9je+rMyEJ5KyTjHMuXpz3CmRwlzdn3IKY8lXUOJ8MDOGwvZOiq5pfGONeQZx092HCO4gZ/2DOu/lQq2XNeHAO5SZpeG6wIH6nL5J1pjgtMyBsoz2Wv9qOzQs6ZOqGk6YVgt0SPbzWmeK2UoTtUgPkW/0I3xmKy+uOxOpEcSCoiuKgDM6UFvHFoSJmW2v4pLuJ6YYKzhflcbYgm/Gq/dxuq+VSajwP8nL4snIfH3dU8rC7jgc9dYr/60faeHKsg2/Guvl2rJdvjvfy3elBvj03xHfnRvnT8WPMnW7mfm0e445Scl7VwWPFdmx/tQXrf1bF82UxDsvfZa6+k/GEXGLeMcR1qQoR71jj+Yo+YW+J8VitidtyVWRrtOZvIrVxXKzGHj0XzoYncjoynNMJcq7lJSqjz1ez4xTR57QozqVEcSkznstZCc8IdDTjaQlcSI3nbFIMp+IjOREbwVhcGKNRwXQFhzAQF8T1mlQeDWfxzdhunh7O4fFIFnNDmcwNZfNweDdzR4t4dLaKj4+W/mzWRLuBxQ85IRTTpmVCi6qIEQMjrrhY82mkO/ey/blXLOdeaRRzxVEKgS6LnOeEL7O+7gwIrSjcKFQKdOV2xXmZBYH+nhNmdP6IEwNCS46KdnFMbMFhExP6jcxo0RBTuVWD3x2u5/dXKvjjUAa/a8viVkIAJ23tOOPoS7eRK92mbpySBHNGEsqojSdDFhIue8uZ8JQzbO7GYRdvBSc03Al+252Al6wJ2+hEwOt2Sk5I11uza5EQ93VW+L/hTJpmBHHbPJCsMsBluZ6SEw4rtXFZL8RmqRZOK40I3exOws4QvDbLKHDfQ1VYLkNZ2dxa4ERTKVMd1UzUFXOlei9XqvczXVeu5MRUTSnTdWXz7y9wou0ZTrTyeL7k4+MDe7hgL6FhqwXhbxqSIZSRrSMl7D1LBSfkOUxk7WbAw43cLUKs/x8Vdi1SxW7JdlyXaiNbo4ZsjRoBr+gpOeG1TgfXZSo4LPoA95XqyNZoKjlRYODCSEgs/b6BdHkEcDoujhv7FziR8pOc+DeMKExm6kcC/SwnfhHoX8bPbcwLtBV9Imt6RVZ0Cy3oMjSjVUtM0w4DhoRGXHGx4pNICXcy/bm3P4L7pZE8Kon8kUD7ctPPg0GDXRS8pceet7Qpflef6p1GPxDoZ+dPCrSxDSfMrTlqasqImTWdOhbUbzWEiyM8nSzjTydz+FNbOsedzRl3lXLE0oMjuwI5JYlg2MaXAUsvjjv4cjs4lhmvQC66+NJpFkK7mSclGlbkbXEm4VUJHi+aY/uCDi4rRERsciXkNXsi3/fG+1V7nFea4rzKjP0WmZTbpmO/RBvbReq4LNfFaZk2bi8bYr58J5ZLVPFYJ6LVOY8c1TBCtwYwvG+Is/WdXKoq5KP6/cw0VnOzu4nLTZWcr9ireIR9oJTphipmmqq5WLGX6doyrpYVcqO6hMd97Xw13M3XIz086Glnrq+dx4PtPB1p5cnwIe4dSOempwejartI2WSE42o1Ck2CidnhRKNPHj0huZxPyuJ0iJzgZR/gvliM9W/UsV28DefF6vi9pIP3ek2812sS8Ioega8Kka7SQLJCDYdFHyjz3lxWmBLwhjENLoEcDouiRxbMSGAkExkZXC9K51pxElPF/6BAFyRzdU/KT9aGfjYC/TPZGH8jEAiYCnfkYVYAD/NDeFgYxoOiUOaKwniyN4zHu/35Il7KVXc7hnVFlL4tZP8mbcrf1aN2pyGN6kYc0hApSzYu1IXu1DWlS9uQHl0jZVm7Xj1j+rWENKoZUSES8ZeTpfy+M4I/1EXzdVEIX2T6cD8rgGu+Nlz1tOSO3ItxewvO2zlxylrKMUtXTjvKaDOzY8jOg4nAUCb8ApiQhXLW3Zcj9pIfNIc46uDOtZAoLsl8uOwdQ6OhE8d80gh4wxqfN22J2emD10uWuK02YZ9lCpbPa2LxnAZJagEEvOWA1fOahG9yIl0lgBS1EHzfcCJoszv5BgnkGqRT4VdBZ3YFX7ZVcaOlho/6W/mk9xATB/Zzrng340W7uVhewJW96XycnsL9gjw+rdzLveZK5jpredTXyMOBRh6PtvDoaBuPj3Tw9WgnXx/t5usTfTw91cNX5/v584khvj3dxlxjHpdcJCSu3YHXGg0kz/0Wu9+oYrNUm+DNYo5EpnM5LZ9qS098N+jgsUoL+WYLAl4RIlujhesyFVyXqSBbq62oyLHWgEKRJ2cikzgZ5se5hGAuZ0crI9DP5jyfTZYznh7LhbQYzqdGz88YzqfEcS45ltMJUZyMk3MsVs5IeCgj8ij6wsM4mRPFp+2pzI2k8mQ0m0cjSTweTeXxSCZPD+fx6Hghj86W8Wi8mttHSn42a6LdwIpekTW9hlZ0C83pNDClVctEwQl9ERMuVnwsd1NwoiiCe6Vy5koieVISxeNnItA3/TzoF1pRMB+BLn5Xfz7QYkSLhvh7eZ6fzwp0n565QqCNd3HCzIojYlOGTa3o1DGn7gNDfn+qh6eTpfzxVC5/bEnjuLMFF5ylHNvlyaiVLydcwxja5c2AhYwTDr7MBkQx7RnAuLMv7eIgWkyk7FezJvc9Z+Jfc0O63hTbxTq4rTYm8rfuBL/ugPw9T7xes0Oy3gq3tZYUGKdQZpOG/VJt7Bdr4rJcB4dlWrhsEGKxTAXzF1TwesmEQ/YZ5OwMIkollN7d3Zw+2MzEgX3cbihmurGa2e5GLjdWcL68kEule7lSXcp0QzXTTdVcKN/L9MFSrpYWcvNAKXM9rXw11MXT4S4e9LQx19vGo4E2ngy38nioifsHM7np6cGIqpWi3OMqVbJ0vYjcake9VzbdIdlcSMzkuH8Yoat24rpIpOSEyxL1+cCKpjIKHfCKvjK9z/43W+c5oY7LchOC3jSh0SWQ0ZBIuj2CGQ6Uczkjnev70ri2P4mp/Slc3Zfy0xHoZ+eeJKbyk/6mQC/UhP6ZcOKX8cuYr8KhZ0Gn0JoekS0d+la06JlySMuU2m1C+vSNuSKx43a0B19mBjO3N5JHJXIeVch5UjG/Me4N5m6yL7f8ZYqN8S09CjbqUL5VRI2amDp1Ma2aporNUNdSMXUs6dYWK2evrhmDBlacsHLgpLUjY+a2DInM6ReKaVA34l/6DvCn6VL+Ml7IrXgf+oQGnLJ15pitC8cdPRlz9qXbxJGT9v5MeMq55BHKOTc/hq1cqdKzxX+VGtKV+iRr+OL8kginVXrYLdPGaaUhiSpBBG2UELXTE/+3nXDdYInkRVtkr7pQISsnSj0Mm0UG2C8WsmuxDtYvaGHyz1txWadBs1sC1SIvOmwjOJxYz1BBBx8eauST1iqmWhv4tL+Fm601TFQVcaYgi0v79zBeWsaNlkYuVBZxNj+Tm+X7+KK+grn2ep4MtPLVaCdPRjt41N/Ck8E2vhru4NvRLr4abmeutYLPI8MZVjMgY7M2tku34bZMnbit9mQb+NLpn8bFlCxGvcPwWbENyWptbJdp47RMA/cVasr0Db+XdAh6TUjgq0I8VmvivETxKHuhCofrcl2Sd+xiNCSBsdBo+jwCOBEdyeXMFCayk5kpTOX63hSuFSYzU5TGtb0pTO5JZHJPIlcLkpguSGa6IJnre1OZLkjm6u6knxTohY3yUmb8z2Vj/I1AIOBKsAN3U/24mxXEgz0hPCoO42FxKI+L5HxbFMb9NE8+CnbjtIUF9dtN2PeWFuXv6lGzQ0SdiogW7flSjfpmdOmbKQRaz5RObUO6dUR0ahnQo2tEn74JHer6dGiIKFLR5S/n2vlmMJpvupL4ui6BOwW+PNkbzOMcX77N8udxig8fB1hz2sqIo+a2XHDz57iLO7V61vRYuzEZpOiuNhEYSY+FAyddvbjiH864VxBD1o5c9fJh0lXGRUkANyPSOS6NInWHC06v7CJCxZuwrVJcNpiya7k+jd4lWC3SxnaJHoEbHZFtMMVjjQjvF8W4rxXhsEoPmyWaJG73osU+iz1q3lR672Mwv4HbDTXcai7nw4FmbnbUcalqHxfKC5iq3M90yV4+jInhYUYm9/flc6ekgEe1ZTxtq+FxXyOPB5qYGz7Eg5FmHh5u4elIG1+PdfDNiW6eHuvgm5M9/MupHu4PlHE5M4AmkR15G7U5+L6Q4JXbkCxRw2GJHj6viwl4XZW7Bw7R7hVGlqYjfi8ZEPuuDcGvi/Bcp43Tsp24rdZQlrRzXqNBpp4zZ2JSOCEP42RcNNP5GUxmxTCVFauU6EtpkYynxzCeHst4euwzAh3N2aRoziTFciIhjrHYKI7GRHI0KoqBoDCGIuRcK8vgXm8mD4dyeDSawKPRRB6NJPN4JIOvj+bz9HQxTy428uhCPbdHfz4C/WNONOuZ0jTPiV49YybcbLkVKeWLjCDmCiMVjbbK5Twuj5znRBB3kn246SejX9+SgrcUTyrL3jdUcqLl33DCgq75RioLnBgQWnLcUtGR86iZDUMic/r0TWhQE/FdVwV/vFbKn8cLuZ3kS7/QgJM2ThyzceGYoydjTj50mzhyws6PCVnEPCd8GbF2pVLXloBVqnis1CdB1RPXl4xwXKmH3VItnFYaEr8jgOCNEiJ3eOK32RGX9Ra4bbDB41UXyj3KiNYIw36xCPvFQqwXa2M1zwm39Zocco1TcMJOznB8LYN72rjd1MDHLVVcbWvik75mbrYcVHLiYpGCE9ebGxivLOJsfgY3y/byeV25ghP9LTwd6eDxSDtz85x4OtzON6NdfDXUzlxLBZ/JwxhSMyBtkxZ2KgxMjwAAIABJREFUS7chXaVF3FZ7ckV+dAWmczElm35pIL4rtyNZpY3tMi2clqnjvkJNKc4LnAh4RV/JCddlKkhXaeCyVAXXFTqkqNgwGhLH0ZAoJScuZSTPcyLlb3Jiak+ikhMzhSlc25P0dzmxEIX+mXDil/HLmG/lrW9Fr5EdHfpWtOla0CY0p1XXgoadov+wQA8Irdi7Sci+zXqUbBFSoyamUcviJwW6V9dMOfv1LRgxsmHE2JJjFnaMmdsybGTBsJEFraoGfFmZxV8mKvjr6XKGzc05bGjJiNiKw1YODFk602PuzAkXH047yzhmK+WMcwBHrLw46hBMhTgIl0XqBL5qQ/w2D+yWqWG/XBvHlXrYLNZBstaSuO2BeL9lQ9RObxxWmxD+vi8Oq6zwes+DIvs8ElUCkL/rivhX2zBZqo7Vsvc5GZ1Kj7sPHW4h3Cmv52j6Pmqii7nd2M5MbREfDrXwUU8Tk7WlnCvezbm9uYwX7WamtZYbFfu5mpnCJ/nZ3Cvfw/3mg8y11/Owp4knw+18daSLR0c6eTLWzVfHevjd6UFFHdyheh7lpnNSZMm+bSY4Pvce0l/vIP19R0I2mTEUXchkYRH1dm5IF7+L83J1HFbq4rpSG9kqTbzWaeC1TgPfF7UJfVOE93pNXJepKOs/LxwS8X3FgIN2gZyISWQ0OJCx4DAupaVwITWBC2lxXMyI4kpuLNcKk7m+P/2H0YXCZK7mJ3I1P/H/XIH2tOXTeB/upQfyqCCcx8XhPC4L50lxFN8Uy3mU48vnUVImnGwZ0DWleJMuJW/rcuADA5o0xByarwndpW+mjEK365jQrvW9PPcLxcqfW7dpUrxNl08bC/juZBpf98XwpC6Ozwvc+STTmQl/Y64F2vNZgh/fpAUzZGzIUWtX+s2dOCPzZUBsywVnZ6b9grjiF8IpN28OO3pw0tWLs25+THiGMOzgyRH/JKqN3DgodKbVwIFaoRNx22WEvCsjUSsIt5fMsVyiQ9AWVw5KCjD7lTpOS3UIeM1K+XjaebkuDi/pYLZ0B2aLVNgr8qfKwJML8nzO5h3kQFQxN+q7GS8r5Gp/I9fbapioKWaqsogbpUVMJKfwUXIyX+7O5l5xAXdKCnhQXcxcXTlz3XU8Hmji0egh7g7V8LC/hqcDjXw92My3w618M9LKt0fb+fpwIxPBoRTs0KPNyIEzdp407xSS/IoqIet1cHheHdtF6gS8qs10bgnj6XvI0bEj6DUjot62JPBVPbxf0sFpuQqSNZr4vGKA47KdOCzdQbqqKcejUjgSEcWJ2HAm8+KYzI5hMiuWyxmxSml+di5Eoc+lRHEmNZ5TSfEcj4/heHwMR2MiGZGHMxAYwbDcj5sHE3gwkMHTI9kKeR5NYG44kbmRFL46kc/X50p5fKGeJxcb+fho+c9mTXzPCUvadC1oFZrRomNOww7RvEDbcStSypcZQcwVyr8X6IofCvQtf0UEeu8mA/Zu1qVki5CDqmIatcx/UqB7dM3o0TFVcmJYtIthI0vGzG1/yAk1Az4rz+DPExX86WQJI5YWjBpYMCy2ZNTSnkFLZ3rNnTnm5MVpZxlHbdw57ejHESsvDtsFUiLyw2WROgGv7CLuA3fslqk+wwldJGstid0WgPdbNsi3e+K4RkzoFi/sV1ri+4EXRfa5xO/wI3SzI+Jfb8do0U52rdjKscgkuiU+dEnC+LykhiNp+6iLKeF2YxszNUXcHjjEh92NTNaWzHMih/Gi3Uy31HC9Yj9XM1P5OD+bu2UF3G8+wFx7HQ+7G3ky1KbgxOEOnhzt4umY4rzAN8f7eDxYx1x2KicMLdm71RjH597H43kV0t5zIOxtC4ZjC5kqLKJmlwseS7bgvEwd+xU6uK7QwmOVhpITPhu0CHnDEK91mrgs3YnbClWcl+yYl+nt+L1iwEH7II5HxTMSFMBYSBiXUpO5kBrP+dRYxjOimMiNVRwanBfo759MJik58Y8K9MWfDyd+Gb+M+Y1RaKZspNJpYE6znphmbXMaVYzo1TPiisSOz6I9uZsZwpf7IrhXJudJmZyvyqOYK47g6b4Q7qX4cctfxrCJHXlv61PwWz2K39Gjbocxh9QVOW3d+tbfb4y6lvRoW9GjY0mfngX9QkV+6CWZJ0Om5pxzcOak+S7GjMwZULPlsIczf51p5PFALqM21hy3cOSwhS2DJpZ06RtzWerD+P9i7z3DqjC3vP38r3f+MzkpRo29RE00idEkdgWk9957773XvTcb2PQOCigCgooFkaYoTZFelGY3do2dIpacNmdm7vfDRhLnnHPNfHv9kHVdz7U3fOZZ94/1rPVbdp60GDtTrutAwjp9dso4EbfCkJTNzrjPUSFZ1huXhTqYfqKEyyIt3Jbo4DhfHbs5Kvh+ZUzgKgu8V5gS+qMrAT+44v+DJ/bfOVLqmoPN59uwmbMVnY+3ovbhBhoDQjnr7sxZ11ju7Svhxs5IRtIKKY7aR2thJV2leVxrOMK1ilLOF++gvzCb3oJMhop3MFKYxkhsFE/TUni6K4dHR4p4Vl3GWP1BJlsqed50hNHTRxk/Xc3LtuO86TzJH7tP8efeJt6cPc7L0jwGrSyo2KSG+6yNmM7YiusSNSLXWdMm3M21glKOOPniMncbtvMUcV6qjdtCRXyXbJ9OisHfaBGwUh33xduxmSM1xHdbth2nRUpYzVQicp0Fp3wC6YuMot49lJ74WIayoulPiaAvKYq+xGh64qM5lxjDUPJUossQcyk7mks5Yi7kiBnJjuZibgyXd8ZxIUs8PXH9ztNcehwX0+K4nBxDr+i9WNE644MPPuCymxU/i70ZSwnmeWYAE/khvCgMZ2JXOK93R/Ei24+fxS5c97SjTdeQvRt1KVijTMkGjan19fpUqxpMLw6aPkq61ChqUKOoQa2iJnXKetQq6HJcQYfSzRoctDLlr+d38+e2GP69OYe/nIjjzwcimcz0Z8TVgF4LDa6429FmbkmnjSNtVg7UaVrQbOTEiKsbw24eDLl502BkS5+jO+ecfRh0DuSMtRf1lp5cDBJwwd2TfXoBpG2zI2K1KUFrrIna4oXf9w4Yf66MyWzpHECWVgzuy8wRbXTGZrbS9F2xmiePzRwVdD/chOsKBfqjM9mpasyzvSe5lpXOwchCTuXX07unkKvHy7l3po6+klwuFOfxU1oKN2KF3EoU8zg3g6f52TzZncvzknzG9u3ixZE9jFUXM3pqP6ONBxitK+HFsb1M1pbzuq6cPzYc5HXVXpod7ditZEa9qS8ndRzYu0WXpG9ViV2lTNACWexmyGL+iTziTdbkqFnwuPQIpVauFOh5EfadHsHfaOO1TB7bOTK4LFHCZYkSjgvlMf9sI0ly+rSECGgI9OesIIDLmWIup0nXCr912PhH561tXZc4nA6xkDZR1JSAFkqt6/xCaQ735WFFMhNNibw4E89YQzQTpwSMNsTwojWNF915vDxfwlj/fibOl3OvtfC9uRNvF27VahpRrW5IhYoeFUoGHJKRtiQNO1hwP9KNx0mBPNohbeF4URjOZGHEbzjhzU1fVxp1LMhcq072WhXyf1Bj/1YdDssZUKlgQK2qCbWqJtOcqFMy5riSEceVDTmhKp0bGHR1o8nAiC5zazoMpjix3YxWdwf+41I5o/WpNJua0G5oQ4uhOad0jKjT0OO8owfn7Dw4beJMubYtSev1yJNxJP4rQ5I3OeI2R5mkbV64L9HH7BNFnBZq4LpEG4epv32fL40IXGWB1woTgtY64r/WBa/vXHFc68QehzQsZm3GYuZmtD/agubHmzjlF0yrmwtt7jHcKS3ixk4BQ6mFFEeVcbawgu7SPK6cOMjVir3TnOgryGS4eAfDu9MYiRXwJC2FpwXZPDq8h6dTnHjRfPQdTry1e/xjt9Tu8U1rHZMlOxm0suTwJjXcZ23CfMZW3JaqE/GjJa1R+VzN28s+a3dc5slgO08RpyWauC5UxOc3nAhcpYH/V2q4LZTD+vOpBVtfyOG0UBGrmYoI1lvQ4BNET3gE9R4h9MTHMJQZTX+SlBO9CSJ64kX0J4gZTJIOBI5kRHMpK5qLOdFcyBYzkjXFiR1xXMyK4XKWdN33bxkxkh7LhdRYLiWL6RH+7sLxe7wf8U5irNEwpEpN/x0BXaesxQVnK+6Gu/A4OZAn+RE8LQxn8p8I6GY9K3LXa5O9VlpZOCirT4W8tKJQp2bKCQ1z6VE3nxbQx5UNqFHU4IZPED12DjToGdBmbEa3sQWd+qb0atlSpa/FX/oPMXosjQ5zY7qMrWg3t+WktiHt5rYMOHnQb+fBkHMIp4y9KFJyJH6DBTYzNuO5WA3zj7ewyygGs1lKWMzRIHSNNQ7z1HBeqInLIi2cFmjgsUQf96WGuC43Jd80jVzjdEwWKVLum4PGxxvR+NcNqH6wjjq3MAaFEhrdvXlYvJufyvK4tiudkYIyDscVM1x2kEuH93C9uYarlWUMluzkSkkBP+3J52JaMnejRTxLSeZxTjr3S3dyp7qE0boDjJ4o50XzUcam+j9ftNbyuqOeP3Y38EuXVECPt9XxS0Uxd329qdmqReQiJUz+sBGTjzcSssaUAiN/ehOzqXIPwmXuNhwWqmA9VwmnuXL4LZUmRZ/lygR/o4Xfl6o4zds6LaBdlspgP08eq5lKpKm40iWI5GygDy0BEQxnJnBxZxyD6QIG0sScSxbTlxhDnySOvthY+uKiOZ8QzWCyiKFUMUMZsYxkShhKj+ViTiIXs/7ezu5CehxDqTGMpMRwMTGabsF7UVmY8cEHH3DOxpgHAheeJrkznuXPi7xgXu2J5GVRFC93RfGyIITnqV7cCLKnz9KcQ9t02bVWhcKpNo7D8rpUKum9K56VdTmmrEu1ovY7/f/HlfU5JqvBoY2q5KyX528dNbzqSeXPLclMHItisiKSpzneXHTXo0NfnYHwAO5EBdPv4kSHrQO1mqY0GTpyydOXy74hDLqG0GToTL+TN70Ozpxz8KfT2pMRZ0/uBoTR6xZJmY4P+UpupG93JeBrU3IMYvD50RHXL8ywX2CA3Xx9fFbZkmeQSL5+NNYL1bCaq4zVTGXMZqqgN0MB7Rmb2GXiSrOXF+ejcrhUmsTdrHi6ssuoTi7mwp4CblYWc7ftBIMlBVzKTOd6XBz3k+N5kJnE84Jcnhfk8LQwm9GSXEZLchkr3cHY/nwmqkqYPHWAsdq9jB0rYvLEAZ7VljB+uIge3wAqlI1oNnRHskyG4PmbCFssQ/AiOUK/UMbv8414z1XA8hN5/Fbo4jB3Az/l7qc3Lo3oTTokytoSv80W98Uy2M7Zhu1cGWznyuC5Qh3buTLkaLvSGhZBg68P7eHBXM2I51KqeHoz2j8T0G9t6zqjQ2kXh9EVF0VbdBStAgFNoRHU+wcxkCzmUUUyr5oTmGwWM9EQw1hTHM+aExnvyOXluWImzpXxvL+Y0f5i7v3jIcL/J3fisJoeNRqG1GgYckxVT8oJRQMOyWhRq6TFiJMld8KkFegneRHThZbfCugnEu93OJG1RpmCH9Upl9Gb4oQRdWqmHFc3kx41M+qUTDiuZESdkj61Shpc8/Sn196RBn1D2ozN6DIyp0PPhG5Na6oNtPlj936eHk2hzcyQLqN3OXHe0Z1z9h4MOAZRb+hOoYI9cT+aYTdzq5QTn2xlp54Aq7mqWM7VJHi1FY7z1XFeqInzQk0c56vjvlgP96WGuK8wJ8cgiXTdREwWKrHXPQOtTzej+a8b0fw/G6l0CGJAKKHJ3Yefi3ZNc2Iov5TDkmKG9h7g0uE9/NRczZXKUgaKd3KlOJ9ru/O4kPqWE0k8yknn3t4d3K0u5nntfp6fKGeiuYKxlqOMtR7jRWvNO5z4U08jE211vDlSxB0fT6q3aBKxSBGTP2zE9JNNhKwxZZdxAOdSdlDlFoTbfFkcFqpgM08Zp7ly+P6GE0Ffa+K7QgXHue9ywm7udqxnKpGp5kZnlJQTpwMiGM6M5+KOWAbSBQykRdOfJKY3QUxvXOxvOCFiMFnEYEo0g+mxDGdKGEyP4WJ2AhczJdObCf9uTiZFzIVEEd1RIe/Dnfg9fo9fE2O1ugFVavpUqui+I6BPaegzaG/G7VAnHicH8mxX1P9Ygc5Zp0Xeek32bNDksJwBx5RMOKFhznF1s39Yga5T0qdJ24heSwdOm5hx1syCDlMLuo0t6DGyYMTAhgZTQ3oS/Pivnmr6rQzpMjSlQdeYfntXhly86LS057JXMO3GrtSrORC/TBnXRdtxX6OH0ccbcFyshkTZD7P5atguM8Bujgr+q0yxmLEdny+NcJyvTuAqC0w+2k7QWidSNWMQK0Qilg2jNqwG669tUfq3tRSZuzMQ6kSjnQfP9h7h6t5oHlQX81PZAS4drKAiLouR/GxuVhZxs/UUvWV5DBbvYCQng2GJhCuxEp5IJIzmZPIoP4tnxXm8OlzK+ImDPD9+gPHfOBC8nLLw+nNv0/Tny4Fm/nzyII/DQ2iQ1SdtpR4WH27CcuY2vL/UIfA7TQbT86lyCyLoKw1s5yri8oU2bouU8F0iHSL0XaFCyLfa+K5QwW72xncq0Oafbcb3K1OOucfSKQim0duezggB13clc3VX/FTFII6B1FjOJccxkJjC+fhU+mIldEdH0xsrpDtWQGesgL7EGPqTYrmQlcLFrOR3hPPbM5AczVBSNCPxQjqjgt+HxDjjgw8+4KyZDvcCnfg51omJTD8m80KY3BXG2K5QxgujmNwTybMML+4LXbngbMMJJW0Kf9Bg9/eqlG3W4qCcDhWKehz7bwK6Sll3yhP67ZH2d1bJq7N/iwJl36kwHBrG3waL+KUjif9q3clfutMZLQ/hXog9fXpa/CSM4G50OFcCfGi3tuO4lgW9Dp5cDwplyMOXKlVjzpp70OfoQ7+DJ/UWPrSaufKTdyinzbyoNgnmuHkUmVttiP3RCdFmT5LUwwn40QG3ZWZYz9XBfoEBoT+647zMmt32O9nns4/IrUFka4hxXqKN/swNqH+0nsG4GI4am/BzQTE39uVxtXgPVw8e5Fh8Ft35RVysOMDNE/sZzM3kYkIiDxJTeJiUxN3MeB7lpzFakst46c5pAf14VwbPdmXysnwXk7VljNWVMl6zl2fVRTyrKOBWRjzn3Hw4rmtL0Jz1eM/agOesTXjM3oLfIkV8FyvjMUce1wVKuM5Tx/FzZeznbOGATQj3i/aRrWdLorIjifKOBHylhv3czdjNk8Vunqy0Er1oG5JtJpwODKHZP4C2sGAupcQykihkOFXqAvAPq9AJQvolwunhwXZRKO3icM6KwjkdGUFjaCj1gX70Zwh4WpPKmzOJvGwWM9EQx/PGJMbasnjVv5tXA6WM9+/laW8Jz/v2cLf1H9rY/T+5E9OcUJ3ihIouRxSlFeiTGnoM2JlyK8SJR0mBPCuQcmKiMJzJwkjGdoXxYkpA3/B1pUnXktx1WuSt02DPBk0OyRlQqWg8LZzfrUC/FdAGNGoa0m1hR4uxKWdNLWg3MZ/mxKC+FQ0mBvTE+/LXzqP0WBvQZWhCo54xfXYuDDi602PtxIhrAO3GLpxQdUCyTBnXRfK4rdbF+OMNOCxUJUbBG8tFGth9YYDDPDV8Vhhi9Zk8XssNcJivRsBKc8w/VST4e2cSVAREy0cg3BpEZVAFNt/YovRva9hj4sZAqAdNDp48KSrn6l4x96uK+Wnffi4eOEylJIuh/GxuVBZzq7We/rI8BotyuZCTwbAkjisxsTyOl/A8O4NH+Vk8Lc7j5aG9jB8v5/nxA4w1HWHizDEmzlbxcqr6/JYTf+pp5OX5Jv5YX87DsGBOyeiR+pUO5h9uxPyzbfh8qUvURkOGM3dT6RZE8EpN7OYp4rxUC7eFivgslbb4+axQIfgbbXyWq2A7eyPWc7Ziv2ALbsvksfhsC74rjanyENMlCKbZx5nOyCiuFiRxpeAtJ2I5nxJLf1IM5xKSOS9Jpi82jm6xiJ5YIV0xv3KiLymG4cxkLmQmMZImZcNwWsz0GUgSMZgUzUjCe8OJ3+P3mGrhUNWb3p5Wo6rPQXlNDsnrUr5Val4/4mTJg2B3nieEMpov4mmhkNEiAePFQl4UCxjPD+JJoi/XAz1o0DZn5xoNdq5VpUzGgIOKRhyUN5juazuhYU6tqgl1aqbUq5hRr2rKCRXpEEi/tSNdRub0mFgyYGVPr6kVvaZWdBnbMmBkzllzDf69Po+zzro0aWly3saFK17BnHfyZ9AtjB5bHw5uN8ZvvgwuS7RJVY8i6AcHDD6Sw+AjOdyWGxMj64v1XA0CvrfCd4UhzrNVcFusjd1SLVwW6GI1UwXb+VpYLdQicL0T2h/J4f6DE8FKfgjkTLkYHc0pWzdup2ZxPTeZm2VZ/Fxbxt3qw1wq2U9FeAz9RaXcbajip9oy+ndkcjUjjZ/iJdxJjOVWophHOek8zc+W9n6W5PPiUAkvTh6WDk81HmH8dKV029qZOn5pO8GbzpP8acoD948DTbzuPMqD9Aj6NI0oWquD7RxZzGcp4PS5MuGr9blScIBmYQKhK1Vwm6eE8wIN3Jdr4f6lOq5LlXFfpor/N7q4faGC/Xw5bOdtxGWxKo4L1LCYuYWojUa0B4fTGRFBU4Av51OjubY79Z0J6pEsMcOZ0ZxPEXMuOZZzydJE2ZsQTZdERFuc9HTEi+lMiKE7IZZ+iZjziWKGUqIZSIriXGIY5xIFDCaKuJj0flWgWww0ue5uyx2BPaOpXoznBPCiIJTxglDGdoUxvjuCZzl+PIp350aAE+36RuzbrE/eaiWK12tQLqvDEQU9jir+Kpx/u2WtRlGXOmVtqhXUp5dEVGxX4fBmTQpWy/HHhj287ErjVXMyf2oR80tjHLdjnbjtYs2gizOXQ7y4FuRHo6EFTYb29Dv5csHbjyEPLxoMrOm1CaLHxmdqcMqbdkt/+p2F9NmG0mQfQ9xGCxJ/cEe41onAr63I0RQQ+b0TYd87E68ShOkcNYLWuaP5rwpYLzAhVieaWPVgLGdtxWbONnQ/kiPkeyMux6fRESDkwb4sHtRkce/YPm4cOERDQipHImK5fayKKwcKuZibwa2kNB6lZ/A4O5OHWRk8z9/Bs6JsXuzL51lRNs/3pvNzYQqjeem8KMph7MhuJur3M3G8jImavfy5+hA34mMo2KaN1ywZPOepsN8olHQZR/xmbMRp5kZcFyniO1sBm5mbcfhcEetPtpOh7InXCnWuFZbTKklFJGtKlqYnvitUcJq/CYc5ctjN3krIt7pYfbaWsDVaNPqFczowmPbwEK5kxHEhQ8RQuoChFDGDydH0x0f9Ojw4JZx7YwX0xETRKQqnQxDKWWEo7dECWiJCaQgJ5Li/D5cKREycSuFli5jJpljGTsYw0RjPeHs2r/t3MdlfxHhfEU97innWf4DbrcXvzZ2oUNWjTt2QahV9qlX0OLhdk4PyupRv0aBGSUPawhHkxrP4EJ7n/ZYTgmlOPE704XqgO6e0zX7lxDZ9yhUMKZf/tf/5bbGlTs2UEypm1KuYTHOiz8qBTiMzekwsOW9p9w4nzhma0WapyS/V2bS56nFaV4dzNs5c8gjivKM/g66hdNv4UC5nhP8CWZwXaZKgGELIOicMPpLD8GMpJ8TbfLCeq4Hvd+b4LDfAebYKrou0sF+ihdcXxtjMVsNhkS62S3Tx/9EBrY9k8VjnQrCilBNDAgENdq7cSMmQcqI0iwe1Zdw5dogLxWUcjYylv2gvdxqOcb2mlP4dmVxJT+UnSRy3E2K4lRjDw+w0nuRn87ggm+fFeUwcLOZF/SHGTx5mrPEw41MvlW/O1PLm7BQn+pr408Bpfhlo4lXHER6kRtCjaUThGm1s58hgPlMep9nKRK015NLOfTRGSAj5ShmXuYo4L9DAbZnmO5zwXaWN21Jl7OfLYjtvI86LVXGYr4rlzK0INpvQFhxOR1g4zcF+nE+N5uqulHecNYYzoxnOjObc33FCRKdESFuciLOxQtol0XTEi+mKj6EvTsy5hGjpa09SJOcSwjiXIGAwUfg+vVT+Hr+HNDEeUtKe3ph2TEmHoyp6HFE04MBUYhxxsvrfC2gt8+lV3kWbtDkgb8AhRaPpxHhK24oTGubUa1pMC+gGDVOatI1o0TWh09CMdn0TuozMOatrxFldI1r1TTlvYMwNbyfaXMxp1zOk39SMEVdfRnxSaHNNo8ZBQJ6KLV5zZQheY4v2pyq4r7bHbqEBQWvtsZ6rgf4fZPFfbYPnV2bEKfpgNUMet7nq2M9Rxe97Kyw/VcJpgQ4GH8vhtMKIdD0RKv8mj/K/bCRLx5uRhGwqLUy4lpHM3Zw0bqfFcmdXFndqK7hcXcGN2lqOiRO5erCCO8cOMlSYyVBCIreTU7kdJ+Hn9CTuZyXxLC+bZwU5PC3cIe39PLCH8ePlvGg4wkRzBaPNFYydqeRVczWvztRKK9G9jfxyrpm/9Xbyx+56RvdlMmRlzZGtuvgtU8FkhixWH8uSq+ZFb0o+3UnZhH+thutcRZzmq+O+XAuPrzTwXaWN/ze6eH+lif18OZwWKeC8RAbPFVpYz1bA/Qs1yh1EdEcIOB0YyNnwYAbSxIzkSriYEzt9LmTHTA+EvP3dUIaIgTQBfcnRdCbEcDZWSGdCDG1xIlrFQjqFYjoEInpihPTGCeiPF9IriWQwUcRIguh9SYwzPvjgA+rUNLnsZMH9CAeeJrozmRvEZL50mPBFQSij+eGM7QzkeZo39yLdOGdjQbWiIXmrpXZ2pVs0KZfVokr11x7ot1s4q1X0qFGWtkfVTrlynFDVoUZRg0oFLfZ9o8UxQxP+81YlrzrT+OvZRH45Hcu9XA+uxDhyKcSRcx7W3Ajz55CCMr0OvnRYeTDo7kmHjRdNRrb0OXnR6eJPo30Yp5yTqbRK4aBRArV2CezS88PjK0NiNvngvEjydtseAAAgAElEQVQP008VcVykR6xsED4rbRHISt04zOdqEb7JB69vnDH5woJDAXsw+Xwbuh9vRetffqTWNYJ2FxNuZezgakEStw7s4F7dIX6qqeTqsWoa03Zw/XAFl/ZkMCQM55YgkRsREq6FxTDsH87ViGhuSJJ4mJHL87wMnuYm8CQ7hdGsLB5lJjJ+IJ+J2lImmw7yqvEgkxV5HDQ3x2XBdkxmqbHPOYEKvwSGUwsplTEnYOaPOM76Ec9P1mM/YxN2c2Wxny9HtpYf9vPlqAtI5/6hCvY5hxG53piA5Vr4LlbCdb4CjnPkcF+sgNO8rfh+qcApr3DaAwPoCgviSlosFzKiGU4XSFuUUsTvWNf1SaTCuVscSbc4krPT1ecITkeGcToyjMbQIBpCArlRmMSLRgmvWhKZbIpnoiGOl80JTHbn8qZ/F2O9e3jet5fR8+WMDh7i7tm9782d+C0nKpV0OKqsxxFF/WlODDta/p2Afj7NiSjG84J4nODD9QB3GrTMyF2tSs5qJfZs1OKAvD6HFA2nOVGvacFxdTPqNcynBfQpdRMatQxp0TWh4zecaNMzpk3PmFY9U84ZGHPNw4GzzmZ0GBhNc2LYO5k2l1Rq7QUUqNrhM1+OoO9s0J6hgud3jtgvNsDvW2us5qhj8JEcft9a473KgpjtnljPUMB1jhr2n6sQ8IM1trNVcV2sj9En8jguNyRRIxy1DxXQ+LetZOv6MBiXQbW1BZeTJdzJTuVWaiy3CzK5U3OES1UVXK+upiomiSvlFdyqLGdodybDCYncSpJy4kFaIvezkni6M+udGYHR/YWM15VLh2ybKqZ7oF82V/PydI2UEz0NvOlv4m+97fyx8wTPS9MZsLDi8BYdfL5QxuRTGaw+kSVN3ome5Dw64zMJW6WKyxwFKSeWaeLxpTo+K7Xw+1oHry81pjghj9NiGTyWaWI9WwGPZRoccBDRHS7gdMBbTsQwnBs37bJxITuGkSzxFCPiuJAdy8WcGAYzRJz/DSdaYwR0xIulnIgW0imMpl0gpDtaQE+sgD6JgF5JJAMJQkbihe8LJ36P30OaGI+q6U9bbVWr6FEhr0qVkh5lG1WpUtam39GWW5FePE4KZWyHgOd5UYzujmSsSMBEsYCJvCCex/lw08uVZg0zdv2ow861quzZqEWZrA6HFAypUzOdrjy/PbVqxtSpGXJKXZ8z2gZ06BsxaGLGgJkF5y2sGDK3ZNjQjAsWzlz3DSLl++9o9nanKyicNusgupwFnPUR0eAYTLdFGBVqQTivMCNJS4TMv6zH40dnPH9wxHqmOg7zdIj8wRW/r6xIkg/Gc5k+Rh9uwXWxNsZ/2EqqcgA2iwzINUzAfZU1/t874/G1Deof6mKzUJbTwTHsVDflYkYiF1OE3M1O4npGEkPZqdw7eYxbtZVcr6hg6MherlaVcrEwnaupcdyRJPM4M4sHGWncy0rkbnYCz4qyeVKYydheaQVu8sAuxiuLGK0v42lzOU8a9/GisZzJlkpettXwuus4L7rqeNl/Evo6eN1Tz+PqnQy5uVCzzZDgBVux/HgDdp+rIpZx4aifiJtF+4n4VgWfpap4LdPBe5U2HitV8FmpReBqfTxXqOO4UB6HBXK4LNqAwyIlTD9TIGiVLme8Y+kIiaTe05PzEiEXcqK5lB/Nxdx3BfTbyerrBUnc2J3ClZ3xDKYLGcgQ0Z0cSZskgnaJkLMxIlrFIk6LRJwWimgRCDgtFHJGJKInWsSARMzFeDF9ovciMUo9b5W1OGdpwr0ABx7HuzKZE8jzgmBGd4fyMj+U0fxQRvNCeJ7pw4NoV657u9KsYULROi3yv1Oi8EcV9m3V4IiCtO+5Ql6TGlX9aTF9Qt1I6gmtrEXdVEtHtbw2h+VVOSFnQeH3ylzYGcx/Xi3ilw4R/9WVzt8akvjP4xncSw/i9Z5UrgS7U6WuzUWfQEa8/Oi2c+WUnhWdVk70OYXQ5RpHs5OQeusQup1FNJo60+cfzlFzH1LX2BL5lR22C1Sx+FwR2/kaBK1xJFYuGO/vrPH+zpKA7+zJ1U8gbHMAVkuM0J8jS5nnbpQ+lsfgs++5HBVLk70XT/IKuJoczZ1dmdyqOsyFuhpuVBylv7yYu9UHqbW2pUHHkuMaNlQqmLJzrTyJKzaStGIrcQu3sHONEid0zLgdHsGdSAH34yU8SoxhfHcWr+rKeNl4kH/vqOHnkjzcZn6H4zxV7GcrE/6tdEnEpdwi2uyCSFq4mYD5cvjMlSFouQoOC+RwXapM0HcGOC9WJGStIUO5OXTGpxO71YSkbY54L1TGf7kGNjM247pYDcfP5fFfsZ1mfyFdISF0BAdyJVXCpQwxI0kRDMdHTfdB/2pdF0l3bBTdcVF0SwRT4jmUdnEkjaFBnIkKpzE0nFOhPtwvS2GyKYHXp5OYbIrnZVM8L06n8KJrJy96djPRV8xYfynjg+WMDx/hXnvpe3MnKlT1pjlRpaxLhYI6xxT12LdZjWplbfrtrbkV7smjxBApJ/LfciKKieIoJvKCeBrnzQ0vF5o0zCj4QYcda1Qo3KBBqYwOB38zQPgrJ0yoVTWmTtWQk2r6nNY2oF3fiPPGZpw3teCcuSXnTS0YMDTjnJktlzy82bFlHSddHegJDOWshR+dThFSTjiE0GERwQElX+yXGJGgIUDu/9+M1zpXfNc54zhfF/u52gR+Y0vAKhsStwfhucIA4z9sxWWRlBPxct6YzdYgWV2Ay5fm+K5xwPNbWzQ+0sB6wTZOeIaTp27CcGIc1zMl3M5K5Kf0RIazUrlbf5QbNZVcqzjC+fK9XK0s5cLuDC6nxnFHksKj9EwepKdyLzORezmJPN2TxdPdWYyW5EpfavYXMH60iNETZTxtKudJw34mGsuZbK7kZWs1rzrqmOw8zsv+U/xnbzuvuo7z5NhOBl2cqNqiT+CCLVh8vBHbWSoItzhQ6R/NtV17ifhWFa8lyngv18V7pRZuXyrjs1IL/2908VyhjsOC7TgskMV50UbsFylh9pkCId/o0eIVQ3tIJCe9vDgnEXAxR8ylvGgu5kgt6qbt6nJiuZqXwLX8RH7alczlHRIG04WcTxfRnRRFmySStrhfOXFGFM1pgYiWqChahAJahUK6o4Wcj4vmgiSaPuF7wYnf4/eYGiJU0f3Vp1ZVn2NKGhxT1OXgNq13BPSjKQE9XiBkfI+0svCOgPZ0+QcCWpdDir8OEf5PArrT0Ig+Q2MGjUw5b2lJi4EeF/ycuBTqzREDTerNdHkmDua0TRgNdrF0uofRaOlIq10Atv+6Bt81jgRt9ED7M2UCt3kjUArC5KNtWM1UIPAbc5LkffFbaYLdHBUsZmzHcb46tp8rk6zgh/4nSmToxqL9B3mEsgH4fOeA5Ux19lt6c8jCmnr3QB7tK+DO3gwe7cvjSk4Kgzmp3Kw6yHD9QS43V3LlaCnXcrI4omPAgKsf10NjuROdxP3EFB5mpPM0L5uxvTuYKMub7vscLcll7EABYzUljDUe4Hl9GePHy5g8dZjXLcd4c7aGybZq3vSc4N87TvKm6xiTVXlc9/WnYI0GXvO2YPnxeqw+U8R/tQl5Fu78VFiGZKMe4d/qE/SNCR5fauCyTJ7A1foErtaf9r11XaqE1xcKWM9VwnqeGju1vOkIjKYtKJxGX1+GEsVc2hHDhZ1CLmSLp5PicKY0UV7KjePyDgnX8hOnn+wGM6I5lxFNX1oM3UkxdMbH0h4Xw9mYX8+Z6GipmI6IojUykrPhoTQH+b0PiVH6T6WCNu36BtzwtOWx0ImxVB/GdgYyWiitQr/KD2O0IITnud48SfTgZoALbfqm7N+sT86q7RSsUaRokzr75XU4qKA93brx1s6uVs2AE6oG1CrqckLFgDolPWoUdKhW1KJimzYH1quRu2Ydk0dz+FNbOpP1ETw+HMgvNRKe5kcweSCee7kiKlXUuejjR5+TG4OuwbSa+tBj58uAewSNZl4cN3RmyDOcIecQjun4UKnnSsK3Vog2OGH7hSaWcxSxXaCK3QIt7BboYjdXg/C1tnivMMJpgQ7hGzwptMwmWUtCtEwoec4ZuG1xQ6xoSXeYPx1BXtzekc6DtDiupMRx7UAR1+oOM9xwhJtNlZxLkLB7qzK1enY02HjR6eRPvaE1VWrmHNpmTI2yGY2q7vQbOHLV0pG7PoHcFwh5IBbxLDOR10dL+GtbFX/rOE6HOIygpdtJ/MGEhHXW5GoGUGgj4t7eSnr9/YhbKYNw+XZEKxQInrcNq1mbcVi4Ha+lqgg2WGK/SJ7upB3cKt1HpbuQ8DWGmH/4PQFf6WAxewsuS1SxmbkZny+2cdIrhI7QMFpD/BnOETG8I4LhtHAuJEROu3GcS5AuTemXiOmRCOmWCOiWCOiIiaBVGEK7OJzTUYGciQrnZFAQLQJvfj4Uxy9nUnjTmsyLFgnjLUm8aM/idU8eL/sLmTxXwotzpYyfL2NioJR7He+Pjd27nNDjmJIGlYo6HNymSZWyFn0ONtyM8ORhYghjuQLGCgSMFwoYKxYwUSQV0M/ivLnp6UyTmskUJ1Qo3KA1JaD/nhO1aiZTnDDglJo+Z7QM6NAznObEgJEp5y0saDUy4KKfM5dCvakw1OKEmS4PRYG02ATTaBdLp3sojRaONFv54vzJegJ+cJ7mRJCsLxHyfph+LIPVTAUCvjYnYbs3/qtM3+GEzWwlYre6o/ORPOk6Meh9ooRILhCPr22wmqVBmYUXh61sqXcP5OeyPG4Vp/OwdCdXsqWcuFFVzkj9QS43VXClopSL6alU6BrS7+zLtZAYbosSuJeQzM9vOVGyY3o+4HlxzhQn8hmrKWG0YT/P60sZP17Gi1OHeN1cyevWaibPVvOm+wR/bT/J685KXlTu5Iq3L/mr1fGcuxmLj9ZjOUOBgDWm7Lbx5lrBXuI36hOySofAr42nOKFA4Gp9Ar7Vw2HBduzny+GyWBHPpfJYzVHCZp4aedretAeIOBsYJuVEkpiLuWJGdggYyRYzkiWebvN7K6Iv75BwNS+BS7lx0tfKDBH96SJ6U8V0JcbQ8d840SoWcyY6mhahUMqJiPeKE7/H7/Hr09z0tjRVfWrVdKhU0OGovP4/FNAvdkfzoljEeInofy2gq5WNOK5u9j8K6A5zUwZNzLlsYkmflSVdwZ68LkujSEMT0w/XYPqRPKHfWtGeUMbltHyaDAw5qWZEyCJVQr53Q6Icjt5nKpgs0KHQeSdmS3SwnLkNq1kyOMxXxGqWDN5f6mI1UwH3pbpYfiaP9wpDBOsdsV1siNtKK0w/18RvrROq/7KVhPXmtHr5cMxMm9fl5dwqyeTG0Z3crSykKyWakYIs7tVVcLf1GLdO7qchyJfd21So07GhUtmcOjVbDsoacNLQjnPewdxNSOZJYSYTZXk8K5KK6Ue70nm+J5vxij28OLmf8bpSJo4VM1l7gNf1h3ndeJQ3Lcf4Y3sdb84c4cGxTC7EeNGiZUTY/K24LJDF/A/rMP1YDu9VBnitkeNm0T6K9TxwWyBPyGoz3Jar4bpCkZC1Rviu0sZmyn3AZbES7gvVsP5cDddl+hywDqMjOIzTfsGcCQriYqqEyztjGc4VMJwpmu5pG0wXTn8fyRJzMSd2up2jPyWKvjQhfWkx9KfF05ucSE9SAl0J0tMZH09bbCwtQhHNogSaBbGcEYg4Hhj4PiRG6Z3Yrs1pLQMuOVnxMMyR5/FujOUGMro7hLHdoYwWhjK6K5jxAn/Gs3z5WejJiJMTx+R0yP1Omexv5dm9QYVSGU3KFbSpkNd8p3pXo6rPcTXDaSeOt24cdUp61KvpULVdm32b1Niroc5/9Fbzn5fK+PfeHfylKpHbqR48LRLw6nAyDabaDHu50GpuQ5utF8e0zehy9KPPRbrSvtfOiyvu/ox4+NJi4kzQgk24LlTD/zsrHBaqYjZjKw4L1fH4Qg+bz5VxWqAhtXVcYYL1LFV8vrYm8EdHfL63ResPsqh+qEyWoYguQSYVZo7cy93BT2mxPNyVw5WsFEZ2ZXP3xFFutx3jzvEyjtvbcD9ExLUQEbfjUxhPiqPL2p56dSPO2XnSomTONVt3rtu5cd3GhXuuvtzxCuBheBQ/J0TxvCyLv3bW8B/9zTS4uHDcxpMd2haIZS1J0RBwOa+KoaRE6k0ciF36IzvWKZH5gzLh8zbj8ulGXGbL4L5AkeDVBtjMkyFL14ubJcUMpeTi89UWfJYr4LJAHsvZG3FaKo/tnM24LVxPjbML3ZEBnA0O5HKOhJE8AUMZoVxMjmI4TcBgSiTnE99uHoymTxI9LaC7JQI6YyNpF4fTFh1OU1gI9UG+nBZ48XN5LK9OSXjVEsurljgmWxN53ZXNn/p3MXmukNFzJYxNnYmBUh60vz82doeUtKUtSFMvlW85UbFdlyplbfocbLkZ4SnlRK6AF7tFvCgSMV4i/G8C2oUmdVN2/ajDjjWqFG7QnK5AVysZvVtoUTWlVtWIOtUpAa2tT4eeER1mpgwam3HZ2II+K0t6Q72ZKE2jSFMTsw9XY/qRHOGrLelK3MfFlDwaDQw5oWpE2BI1Qta6EK8SgeFsdYzn65Bvn43NCkMsZ27DerYsjgsUsZ4ti9cKHSw/k8d1sTaWU0OEYd/bYjFPh4gtPpjN0cJvrRPq/ypD0kYrTnt6U22pz+T+/dwqyeDG0Z3crthFV4qY4fws7tVWcOdMJTfr99EY7MceOTVqdaw5pmJOnaoNh7YbctLQln6vIO7EJ/GkMJPx0jyeFUmr0I8K0nn2lhP1+xmv28tEZTGTNft5NcWJ1y3H+KWtljdnDnO/MoMRsRdNGoZTnJDB/A/rMPlIjsA1ZoRv1eRGYRmFOm64L1Ag+FtT3Jer4bZckeA1hvis1JrmhPNiRdwXqmL9uRpuyw3Ybx1CR3AYLb5BtAYHczFNwqUdMQzlRDGUKWQ4I5qhDNE/5cRIlpj+lEj6Ut9yQkJPUjzdifF0xv96zsbE0CIU0iyKpzkqhtNRQuoCAt6HO/F7/B7SxHhQRYdqdQOq1Q04pqpHnZoOFUq6HJDX5aiSJkPW1tyJ8uFhYgjjO4VM7BZNV6Bfl4mZKAjmocSLawHuNGibkLdWjYIfdCneZMT+7bocUdGlWtmIExrm04nxuJop9arGHFfWp15Nj5Ma2rQaGtGlZ0avsSX9VpYMudpzxd+Np4kxpK9Tw2mmEmYfK7LHMISrMWLO2luxZ5sm2dvssFukS4SsH/GqIRjO0sbnR0+iVIKx+lIX3U/kMJ+njvd31jh/aYzrV6Y4zFPDaYEGZp/IYvThFhK3+2C9SAuzOVqYzdHFYJYSZgsVuSCI5YCeLhMHSrhWmMatQ7ncbz3AjT0ZXE2WcP3IXi6drOBOzX7Ohngx7O3H48g4LoUIGQqLptctiP3yBqR9vY3kL7eQt06Dsy6BPMpK53lhGo93J3O/IIUXBVm8PFTIRF0po7V7Gasq5sWJ/YzX7OVNfTlvTuzn531Z9AQHckTPlF0y6hRu0SF7tQrBc9bhMGMDFjPkcVmmg/OSjTwsOkitazCuC7bguUwd71VaeHylit/XOtO+t9Knue14fKWOzRwZgr7R5IRXFGdCQjnl7c+5mCh+yonlenYMVzPiuZAu5kJGtLQfNE3IcJqQ86lRDKQJphPkcGY051OFnE+N5nxqNANpYvqThdLPtDj60+LpSpDQFhvHmWgxp0VCWoQiTgvjOOL9XkxXz/jggw8ol9OgQU2fYTtr7vo5cD/OidEsP8byghjbJRXQY4WhvNgTwkSuP09iPbjh5UCrpj57NuqQsUqWXetVKdmizmFFPY4qanNMSWe6Av1WQNcp6VMtr81x5V8/T2nqcEpNn0o5Qw7L6VGguZVf2vby5/N5/NdwGS9qExk7msibykwa7HS46uNGu4UjjUau1Og40GYXQJOlD6dN3bnmH82QexDtVm40OIUh+sEYx5kq7FCKwHa2GqafKhP4jTkO89RwnK+O62JtnBaoE7DKArclhjgt1sPnWyu8Vlth94UhWjPksJ63iVPeEZQY2nK/dAe3SzN5cLCAnlQxA7lp3Kw+xN2WGvqFQVx18eKhbySX3APJ/2YTl9zDCZm/hsB5mwlfsJGCdcp0WXtz3cefC7ZO3HT05K67Hw99gnkkjmS0JJfXvaf4y2AbZ3yDqNI156SbD4OhWZz3i+dKmJhaHRtSv1Bgz3p1Dqlqc0DJgOQvFYherILjZ1vwWqSM/0ot3BbK4zxLkQsZO7lZUMxRl2D8vlLA/OMfsPtcFrvPZXCZvx2XOT9S6+xLW4gPXaGh/JSbzJUcMVcyhIwkh3MhNZKhlEgGkiKnWjhEdMeE0y2JekdEd8RE0B4dQUtEFKcCQ2kK9+Xevlgm62N43RzDq5Y4JlriedG1k5cDpYwPlE6L57FzJYyf38u9tvenAl2urE2Vmv60W1OtqvZvOKHBoJUVtyO8+HmqhWNit4jxwijGiwS8Ko1moiCYBxJPrvm7cVLLiLy1auR/r0vRRkP2yelyWFmXKqVfOVGrasJxNVNOqBpxXEmfE2q61Ku/5YQpPcaW9FlaMOhixxU/V54lxU5xQhHzjxUpNAjmelwc7Y42FG7VIHOLLQ5LDIiQ9SNOOQiDmVp4/+CBUC0Uh2+N0flYFov5GvisscH5SxPcV/16L0w/lplu4XBeYYTdEiNsFptgMEsZ88VKDEaIOWxkyNOSAq4VpnLrUC73zuznp8J0riRLuHakhEsnK7hdvY+zwZ4MefnyMCJWyolQET2ugeyX1yf9622kfLmV/PVatDoH8HNmKs8LU3m0K4n7Bcm8KMhi8uBuxmtLGa0pYexYES/qpJx4fWI/r+v2cX9vBj1BARzRM6VQTovCrVJOhMxdh8OnGzD/VB63L3Xx+0aeB4XlVDkF4rZgK17LNfD5WhvPlWr4rtLGZYkSzosVpSvu58vh/qUaNnNlCPlWixOeke9w4np2DNeyxFxNl0xzYiRd9HecGMp4W4QRvcOJ86nR9CcLGEiVcqIvVUJXQhxtsbGcFkVLOSEQcVoY+75w4vf4PaSJ8YCSFtVTy1Sq1Q2oU9PhkIIWe7dp/K8F9OMEH34K8qRRx+wfCuhaVZPpCnSNijFVSoZUy+tyXFmfk+r6NGjp0qSjy2ldI1qNzRhyd+HnmAguBLoxEOGJ6LtNiH6wwGGWEhXm4fS5iSncZEy+ijO+q/Rw/8aUTINojGYqYr3YlCSdeDRnKbHTLgnDmYo4rTDC/WtzzOep4/qVCYL1jljNVMD8UzlsP1fGaqYCcZrumM3RIOBbZzT/v1XUuAdyxiuE29kZXN8l4dr+JH6u38/jxip60uK5uHcHt1qPcqu6hHpTY67aOnHTxZc7vuE0GtnySJLMg6hIRtx9OapgwGEZY4q+12b3GnVO6FrwMCGWJ2kJPM/O5HluKmP78hirKWF8ynXgYfVuHlXs4tneAlqdXNm/VZWDWg5UGXrSYu5Nn60PJ5X1SVyxFZ+FCljMUMBqrhJOSzbwoPAA9Z7h+C1XwGWRIl4rtXBboULAt3q4LlXGebEiTosUcF2qjOtyFVyWKJMoa8vZsEQa/AJo9g/mUoqEa1kxXM0UcTkt7p8K6LdVhv+tgO5PTaY7MYkOSTztcdIE2Rwl5pj/+7NIZZ+MOg2qxpw3s+SmmzX3RU48SfNibEcg4wXSKvTrXeFMFkTyamcwY8nePAh1ZcDCkrLN2uR8Iy8dJtyswWF5XSoUdahU1H7HkaNaRY9aZT2q5bWne6DrVQ05qaHHcV0NTikZcULRmAPy6uzZrMTl4iD+0lvA6/Zs3lTF8B8n87mWFkSvjSXn7L05a+ZHq6UfZ+28qdGwYdA1lC4bL845BXLG2IO9slYkrrfDY4Eakq3uuC0zwGq+FhHrHHGcp4bdLCU8F2pjOVuRiE0uBH5tjc1sNazna+K60hTfNQ4YzjIhaK0G9R5enA0I417JTm6Wp/K48QDX4kRc353N0KkDXK4solPfiD5zK+p1DCnZpEHwrO/xm7cVvy9UcVyogMXMLdh9tI2IRZp0G1oxaGrDJWsnLlk7cdvVh5+DwhgryOV11yn+cqWfCwX5dHmFcNlfyLXgaFpt3Oiw8WPIwYtGbVNOaJnRYmTJKT0ritdpEz93O86zthO6Sg//FYqI1xlhP0OGCocobu8u5kJ6PoHfbsNm1o84zFbEb6U2jnO347ZAhsPW3vSE+tMe4MnldAHXsqK5nC5gJDmc4aQwhlKj/m6Vd++UcO6SCOiOjaJTGE67IJQzUZGcCg6kOdKX23tjmDwZw5smEa+aY3h5NolXXbm8GdjLxG8E9MRAKePn9nGvtei9uRO/5USVmj61qtpTnFCnQlFTKqDDvXiYEPxPBfSjBG/psLnOr4WW3wroGlXjafFcrWxElaIhVdt1pjihxylNHRp1dGnRMeKssTlDbs48iA7nQqAbw1E+xK/fjvB7c5w+V+GwSQhdzgIKNxmSK2+H7yo9PL41JV1PiNlcNeyXWZKoLUFvnhpZlnEYzVKSFlhWmmK5QBOPr82nOWH2iSw2s5WwnqVIvLYX1ot08Vlph/b/+YYqV3/OeIVwMzONm3sSuLY/mQf1+3nUUElPWgIXS3Zw88wRblTu4ZS5CZdtHLjp7MttnzAajWz5OSaRexHhDLl6U6VkzGEZY/Z8r0XhWg1O6lvyQCLmSVoCz7IyeJ6byui+PMaqS6QvldUlUk4cKeDxnp20OrtTLqPBQU0HKvXdaDbzotvSgxNKeiSs2Ir3AnksZihgu1AV71Wy3C3Yx3H3MPyWK+K6WAnPlVp4fCl1aXJerIjzYkUcF8rjulQZl2XKuCxRJmm7Ha0h8b/hRBzXMsVczRBxKTX2nwrowTQhQxkiRqYq0n8voKU/SzkhoT81ie7ERNrjJLTFxtAijKYpUkzl+8GJ3+P3mPL3VDWgXq8SeZ8AACAASURBVMeCWk0TqtWNqFLV55C8Hns3a3BUXp0hW2vuhXnwJDGIsTwBY3sEjBdF8X/Ze6+oKNNtbXuP/9t7rdXBLCrabUe7W9scyFBAEQqKKnIscs5QFFSiyDkZSAYQBDHnnAHBBIqiYsCEodW2jR3WDmuH6z8oRXutPf5w5kHPMZ7xMgan9c7rfucz5z1fNGp51aDlRZ2cJ0WJ3JbHccTFj7pZDtTMsKdhgQut5i5stnVlp60ru4Ru7LB1ZZfQnT12HuwQSNglcGSf0I5dDvbscpay3yOMU2ExPMhW8aBEzUB2CleLwvhpVR63K6voStKy1SOUjU6BJBsakTTTk9g54RTaZ5EvUKIySSTPQUfQN/7YfmhMvoMctzHWRE7zwnuCPU4fmhLyuSs1Hlm4fmSE/1gLZOMt8RltjMe4OYROD0T0Zwu00yxpj43kaHoaD1vqubaygHs7VvCgcwdXtjRxbtVibu1oZmBlJWutLDkiFLPBwo41xja0mjmSb/g9LSbOtFhKWDZTwHpLV466BHBKGshxx0DOuAYyGJ3IkFLDvbx8HpTk8qy5mhc7m3m5fy3Pdjbxr9vW8Ki2kv5UOd3BcWx28GO1sZSiz4ypnePIstkOVM6wpeBbWxINrfAdYUWAgTVhU+Zzf1Ubm0KT0c6REDbREvkMVzJmuxH/pSPBE8wIn2xFyEQLoj8VEjLJnshPbFjrp6AzPZ99scl0KFK4WpHPlcpsBsp1XCrN4mKZjgulWi6WZdJfquV8iYazJWr6yvRXdhcqdVyo0HG2TENvqeZ1gsziTHEWvaU5nK0s4mxlMadL9S0dXfm5nCgsoCMnl8OaHLalqt+HxKjv97QQcVDoSZeLFwNBvtxPC+FBYQTPlqXybGU6z1dk8Gt9Bs9r0vmlLoPn5fE8yophIDKYnQJnls+0o/o7KxoX2LHWTMRGwVsbuzdOHDvspGwTOLPdypntVnpLu502IvY6SNjr7MR+Bwl7Re5sE7qyzsSJJmM7huoL+e8rm/i1q5z/2lvM8yYtR92lnAuNpsM7mM6AaPZ7hXPYO4yTQVGcDo1nhaUnVUYycqa5k/qFGJ8RxgRPsiPHNgnZVAmBhk6kzw8mYqIDkQb6jWuKBcF4fWhJoU06IZ95kjY/CtkUVzxH2LBFJqfNzZ771RVcXVnO7S013D/UxolcDQNty3nctYPNLvYcETrTtMgRteECYg1MCRxrQewXEg7nVrMvt44a33jSvjLmiEcCu43t6XZ2p9fdj/PegVwLjmIoJon7hYX8vHsT/3mth6fHD3F1aQ2XtVlcTkzlYlQiV+JTORcYwaWgGHp9YzjuJqNT6s9We09yv7EkcbIN8Z/YETvFAu1sCUGjjEn+TMJAVT2HMzI5kV2KbNz3+I1YRMo3EkImCAgcaUSrlx9n0uM4lZLMxVI1VyozGajUcq5YyZmCdHoKVMOru0/lKjmVq+REdganc/WWdse16XRl6gX0Ma2CvfI4DiqjGWzI4Of9ufx6SMMvB7P4tbOYv56q5rezjbzoaeT52ZU8P9vA87OreXqm6b1a5b1OKGG3kzc7HNzZZu/KVlsX1lmIWb3Ino2W9pwL8OOOIoqHBSn8VK3m6QqNfoCwUcOrBg0v6uT8WJTILXksh8U+1M9ypOZ7PSdazMVsspGy4zUrdtjoObHbzp1tVi7sEjiy19aeXfb27HKWsN8jhBMhUQxlpnO/SMXl7BSuF0fysC6bG+UVdCRo2OQazAZRIGmfmpHwnSuR3weRL9SRY6EgfVEcOfZaQr+VIfzIlBxhCp7jhER87Ungpy7DnFjiqsV9hAl+Y8wJGGeJ92gjPMbNJfjbAJz/YonuW2va46M5pkzjwZparq0s4O6O5dzv2M7Alib6Vi3h9vY1XFxexlorSw7ZOrPBwo5mIxtaTEUUTJ5Jq5mYZnMxS2cKWG/pxlFxACelgXSJAjktlXEtKoE7Sg338vJ4UJLL0+Zqnu9s4uW+Vp7taOK3rc08rK6gLzmFTlkMG+18WG3sSvHnJtTMcWTpLAcqptuQ940NCZP0nAg2FBL/lRl3V7SyKSQJ9SwxYZOsSJ0uIW2mhLgvHQieYEaYoSUhEy2I+lRvXxf1iS1t/go6FHl6TqSncqU8j4GKLC6XZ3KxREd/aSYXSjT0l2VyoUTL+WI1Z4vVnCvVcL4ikwsV73JCredEie4tJyqK6K0o4nRJ4euWjly6C/JfcyL7feHEH/FHvNlE6M5mG1e2CvXPdQIJbWZSmuY5sN7Yhh5/b+7JI3hSkMJPdWqerFLxrFHFz01aXqxQ8apGzpOCRIZS4zjm7M/ymSKWfG3Jitl2NC8Ssc5cPyi1187tnQUSYnZZObHbQsRWUxHrBV6cSCzi/soazioTuaVK5FFWKve0KTzOUnEyNJSd3uHsCc/Gf5QJkg/MiPzKn3STNHS2WayLbSXA0ItChxyK3fLx/cod59EWJEz3JXFWIGFfuuNlYId0lBWSkZZkWsRTKdXgNcESfwNzgsaa4D1iPrYj7XH60xyu6YrYJvPn1Y5mBhvLudlWyw+HNnG7YxtXdzZyra2Ovooi8mYuYPF0M3SG80mfYkbSRBNix5sQMc6UyPGmxE2yJHycMVEjZlI7S8CN6BSuBEcy4BfKzbBY7qYquJudxQ9FOTxvquHVnhae72/ll4PrebWhhv5sDdXGIjImGiMfb0782AXEjp6H3NCUtCnmKKcKyPpaSOSoRfh8aI5svDVhk+Zyf2Ub22LSKTTzI9TAnMx5viR+aUfsVCEhBmZEThYQOVlAzKdCZGPsifnEin1xao6nZ3I4IY3TWXIGyrO4UpHN5TId/cUaLpZoOV+oGv77QpGacyVqzpdpf1eVPlemobdMRW+phjNFmZwpyuFMUQ6nSws4XVpAd2HOO/Z2Ov0VnfY9E9BWjhyy9+KogwcX/D25kxLEj9nhPK9K4lldGs9WZvBzfQavavXrvZ8uS+ZRQQw3k8NpF0tpXihh6TcW1M8VsmKeDW1mIjZaObHJSjRsZ7fJSsQ2Gxe2WzsMe0HvtBGxz0HCIUdXjojcOOos5oCTmO22LrSZimk2t+M/+/fw86UV/GdPJc+rlexzcOCYmw9H3P3Z7xrAfs8Q+mLknPSNodnKjUYbf5aYyoicYk3MNDGSv8wlYKIj6XPDyDZLwHuMLWrjcGRjbZB9bEHQOBuSvvHEe4wdAZOlZFnKiflWhuc4R5w/MKNflc0asTMv1jcy0FDCvd1ruLdnM73LljC4qZGB+jKq55tQ9aURSZPMiZtkTeCIhUROsEI3z50ji5dz51gHL44d53pRJeuNLbng78dpqTc9br5c8AniSmAE10Oi+UGh4Vl9Hf925ij/ceUMtze3MLhsCffyC7muy+JahprLMUlcj0jkcmAs/X4RnPMKpt1VRuVsW9I/ExAyxpJoQzNyF3gQYWCJ7ENLDqcVcr16Fb2FlRRauuE33ojASbaETbYl4GMLmlzD6FEncTolgUulmcO/73MlanoKMzidnzEsnN+I6BPZ6XRqFHTrlBzXpnNCp6RDm84RdRoHFAr2p8dwuTaDV3sK+OVgJq/2Z/JzZxm/nannt94GXvU08vzMKp6fXcXzs6t5dqaZoc7G9+adWC90Y4utG1uF7myylrJOIGGtmYTV8+xZZ2TDGT8vhlLD+bEgmSe1Kp6sUvG0UcWr1XpOvHzNiTspsRx19tNzYpqeE02LHFlnLmaXrZQ9Qld2Wru8wwkRuyxEbDUTsV7gSVdCPrdrlnA2I4mbqkQe6fSceJSl5FRYKDu9w9gZrMV/lDGuH5gS8aUfGaYKtNY6WiKbCPrEh1zbTIqkeQRM80Q82pKkmQHETvcj/CsPZJ+IkYy0RDLCEq1FHGUuKrwnWuE3zpSgsaZ4jZiHcKQ9Lh8soD8jm+1BAfy0eSWDq8u51VbLDwc3cus1JwbXLaenJI/8WQuo+s4U3eQF73DCmIixJkSNNyXe0JLwsYuIGTmL+jk2XI9M4kpQJJd9Q7gZGsvQa048KMrheVP1O5xYx6v1tfRplSwzFqGcZELqeLNhTqROMiVtsjnKqVbovrIlYtQifD40I2SSkLjPTbi7opWt0QoKTH0Jm2CJerYXiV/aEfOp7TAnIgytiPlUSMBoO2KnWrMvTk2nQjvMictlOgbKs7hUmsmFIjX9xRr6CpT0F2voL9b8jhPvVqXPlanpLX2XE9m/40RXQfawvZ1+mFDHYU02W1PeC078EX+EPjE2metXD2+wcmGdhTMt5k40GzmxcqYNrQssOent/v8qoB/nxXM7OYbDIh9qp9tT9aU5DfMcaV4kotVE9Ltr6jdnl7kzWxc507pIxInUFIbWVMCefM4miLmjiOaeMpn72XK6U1JpdQ8h4VNzUqd54/onO/y+iWBxWB2RM7xZ6Z+H7AsJWoECtZmCjfI2JJMcEI0wJWGGvn8z4mtPYqf74WcowuVjCzz/bE2eSENFQCHhn0sJ+pMxLv9nFqKPzFnhHMG+YF8GG+u4U1/GnZYlXNu2kvud27h7ZAtXdjdxsbqK8q+NqPzEksTRC4kxMCFq7CIixpkSNMqYsIk2FAki2a1ZQtJ8T3zGmBL057k0mgRwJS6RS4HhDIXHczs6kQcZau4V6HjRXMtfD6znr+2b+euRjZxITSNuyjxCDe0JGGdLzBRr1rgqkE+1I2TEfJKmWJM8xZpEAyNix5oQOMqaQAMbAsZO50Z1I1uj0sgz8SHpKycy5/qQMs2RCEMrgsebEjzelKgp1kQaCggYY0nWQinHVTl0KBR0Z2TQX6zlUmkmA+VZw8L5fKGKc/kZnC9UcaFIzcUSvaDoK9XQX6HjXIk+UZ4tUQ0L6FMFGk4V6DhVkMXJ4jxOFue99fzM1nBIo2a/UsVBVRZbk5XvQ2LUV9usnNgtEHPcXswFbzfuJAXxWBvGs9I4ntfIebxSwU/L9Y4cz5areFabytPyeIZUkZyT+bPWQkL5TGuWzrZm1QI71po6svH1MOFmgf651Uasd+d4LZ53WDuwWyhmn707Bxw8OSbyoEPsyhGxmIMSD7bberDe1Il/3dHKfw008u99S3m4TMsBgYSDLu4cknixz9l9eLV9f0QqZ2TJ7BGFk/OpgLApDuRZJSP5wAy/8fb4Gzjgb+CAfFYw2ZZx+I0REDDWmjBDR0InOeA71hrXUULSF8biOtoe6Tg7/D4RcLushi65nKHGYgbXF/DoyHqut2/m1o5VvDi4hfy5RhR/YUaigTHRYxcSOmIWym9d8PlgLkudEyj3SeTxpXO86urg4ap6rifHcVzqwtWQKM55BnDBJ4jLAWFcCYzgbnQqj4ureLl7G/8xcJoXXQd4smUdd2oWc72siOuZGgblaVyLTuBaWDwX/aMZkEVyxieMNab6D8+gUcZEG1qQ8pUN6hkSAj4yRzndletVyzmq0HI4I5/YrwR4jDDGf5wxQWOE1DkE05ORykl5In25mt8J6N4iJWfy0zmTr3rHC1rFyZwMunTp+vaNbNWwnd1RjZx9cgW7U2LpX6rmp53ZPD+UxcujBbw6XsGvp2r5a+8qfulp4PmZBn4928QvvS38fLaNoY73Z5HK33NijZkTTYtErJhpTct8C054uTGUEsaPBUl/J6A173AijltJ0Rxy9KZ2hgNVX1qwaq4DTYsc/3dOWDix08yZLYucaV3kyPHERIaay/mPnbn0Joi5JY/knjKZe1mpnEhJpdU9mOTPLEmd5oXrn+zw/TqM8sClRH3vS41XJiHT3NFYpaEyTaM1YTVuU5xwGmlO/HRfYqf7EfWNNylzQ/Cd5IjkYws8/2JLjqOaEu9cIr90JehPxkj/ZQ6iD81Y7hTBgdAArq5cxp3l5dxes5hr21dwv2MrQ0e2cHVPM32Ly6j8xoSKKRYkjVlItIEJUWMWETHWhKBRJoRPsqXUNoadykqS5nviPfoNJ/wZiEngkiycO2Fx3IpO5H666jUnaoY58dvhjXQmJhP/yXzCJtsTNMGexM/taZamkTpVqOfEZAFJrzkRM9YE2ShrQiYJiTCcx82a1WyOlJNr7EXiFyI0c7xI/tqB8EmWw5zQi2g9J7IXudKpzKY9LY3ujPRhTlwu03GxREtfgZK+AiVn89L/V05cKM8c5kRviYqeUhU9pWpO/o4TucOcaM/RcjRLzUG1iv1KFQeUOrYm/9HC8Ue8HzHyn/7pn2ixEtNq6sh6SzFrzUQ0LxSxfIGI6vkOrFwo4LSvL7eTQnhSmMrT5VqeNKh51qjiWbOG581ZPKvT8jg/mcGEYNpdpNR9a039dGua59uzwVzMFiun4QrbLtu3V9XbrETsXihl+0IJQwXZPN5exIA8lGuJgfykS+GWMok9Af70JcdTa+VAyneOSEdaETDFnRrPQrwMbNFZJCOb7IbzB0LyHbLId8liRchivCc74GFgRdBke/zHCBCPMKE2oICILyUEjLZCNs4K2Xgr/CYIiPxGQtg0MYEjpPj9eS4XdOVsDvbhUVsN91pKud22ihvbd3Kv4yCDR5u4vrqa/FkLqZ1pi2aCMcFjFhD/tRXyL83JmeuF34fzKLUKJNfGk8ddp7ixfidF1h6UzhdTM8+ZCz5BnJF6cz0kmqHoJB4lpXO/IIOfmhfzb+2b+a9T+7jVsITkr4RETRYSMNYa+WxftiVX0FfbwjppLKmjFxA20YxIQxuiDKyImGSN70dmhBoICDZYwOWqRvYkKVnmFE7il3YoZ0pI+lq/eTB4kgWhk60InWyFzMCM4Cl2NLjGcjojm+NpqXTpVAy8rjxfLNEOV5vfPX+fKM/mpb/9f6GK/kIl54s09BRo6c7PpCsvk5PFeXTl53EkU8fRzFwOKHXsSs9kR5qGXelZrI1Nfx8So35gytaNvfYedDm50yuVcCXMi/vyUH4siuZpjZzHKxT8uEK/VOVZvZJndem8qErkcXYMgzFhHBG5s2y+A5XfW7HKyIEmYxFrzMVstNQPE76xtdtqI2anrZQdAmd9tc1Gwl47N/Y7eNDu5E2XxJNjEncOi/VLJDZb2HPQX8b/XNvF/1xs5OYSJcckPhz3CqTd058dds50+QbR7RfM5Vg5RyUylpt6ETHJlsApErKtUvEeY0vk5+5EfuFB7OdeVNmpUM0JwX+MANk4G0Im2pM0zZOljhl4jRUSPyOYPCslHiMsyTMWcTAujgfVDQyuLOVWay0Pj23l6pGNDO5czc2VtSybZk7lFGsCR88n+Rtbam18yP5eTJFJMLHfunFuyUHunuzixbGD3Klewo2iUh4ULWUgIklffQ6K4lpQLFf9o7gREMNdVQ6PGxv59cwx/nb5FD/s2cidpmoeVFdwqyCHmyoV1xOSGAiN5mpgPNcDAun38WSbjRjdZ9aEjjQlbLwxSZ9bU2bih+c/T8f7YxPaFdlcqaihv7SGOvcYXD+eh+9YJ7xGmVNlJaVHmUyPMo6LeUouVWYPw7+3SElPYQZn8pXveEGrh7cRdueo6c5V056poD1TwTFtGocV6RxITuBMcRKPtmby85E8Xh3N46/di/ntVDU/967iVW8Dr3ob+KV3Nb/2ruHns2vfqx7oN5xYZ+FMq6mjnhPzRSybZ8/KBVac8vHmdmIITwpSeFqvGS60PG1W86wpi2d1Gh695sQxsYT6b22ony6geZ49G8yd2WzpxHaBI9sFjuywFrHV0o4d1o5ss3Rk50IJW+aLuZmr5cftRVxTRnAlIYDHmgRuKZPZK/OnNymOeoGIlG8dcB0lQDbFg6VuefgaOqAxSyT4U0+cP9RzIk+so0ZWpufEeEsCDe3wGyPAdbQ5iz11hEx1wn+UJbKxlnpOTBQQMc2F0K+cCBjhQuBHCzmTXsCOCBmP2mq5u6aU22tXcXPHTu61H2DwaBPXGpdSONuImu9tURsYETxmAYnTBKR+YY5ulju+H84lz8SHcmkIDztOcH3tdooEHpTMc6J+vpjz3oGclnpzPTiKO9FJPExScL9AOcyJ/zy5l2t1FSR/ZUukoZ4TSTM8aAnLpq+mlTZJNCmjFxA60YzISXpOhE8U4PuRGdGT7QmduIiBqtXsSVSyxDGUxC/tyfjehcSvbQmcYDa8aCvE0JIAA1NCPrGj0S2WUxlZdKal0K1Tcfl15fliiXa42vym2HK+UEVfgZJz+Rm/48T5IrX+FCq58JoTZwq0dOdlcjxPy4miXI7n5XLk9XD5AaWOnQqtnhMKHa2xf/hA/xHvR+gHpiydhysLbeZOtBo7s3yBiCVzhCyfb8lJb6/fCeinq7W8aNLwoiWTly05vFiueyugJVKWT7dl5UxbWhY6sslSwjZrF/bYidljJ2anjYj9jlJ22TqxxUbIJisPCr+wos0nivpALzryCvipuY6hglR+yFaxVyxjo3ssvh/NRDLClIhp/iyR5uLysRlpC0IJ+8KT9AVx+E/yoNZ3MSmm8WxIXo3PFEd8Jtnga2BNkIEQ8QhjGsPKCZnqRNA4G3xGmBA+xR73UcZ4TbBEMsYYlz+b0uqnodrenafr13K6Mo9zNYVc297EzeO7uHNkK092rmWVUMABDz9WL7Sj+HNzYj6YQa25B2ucgiha4M0SYTzyOZ6siNHx4OJZXnZ3c696BbXTFtAj9ue4yJXjIlcu+ARxNSiSe7EpPCrO5adNDfzHucP894lDrHWRstLOn/yZErTTXKl3lJP+nQsDtS0cj9BQ8IkZYWPmETpiPlHjzAkcY0boeCHp070INzTiZm0bndp8ym0CUM92J32GC3GfWw1bEkV8akPQRHNCJlsR960Tu2M1nFIp6VTEcSov438V0G9E87vnjXD+nYAuUnGhIIOevHRO56k5nquhM0fz+ipO+7qSkMmeNA3bUjVsiJezIT6RtoT49yExDr8TW4XuHHNw44SdEwN+XgzFhvIwO5wnlQk8rteL6Kf1Cl7UZvCqVsmrpcn8VBTH3dQITrt7sdJYQtmXFtTPtX9t1eVEm4WzvnXD1oUtAv3q4q3Wrr9rbdojdGWfvTsHRR4c9/DnuIc/x6TeHHRyY7+DhF22zlzMk/M/V9fz085SjnhLOSHx5rCrN8d9gzjpH0J/eAKngxI5JA0lxdCc5O+DkIxzosq9hIivvPH62Bqvjy1ImuZFynfexH6ht3YMM3TEe4Q5vqMs8R8joEyUSlN4GX7jxbj+X6YcCE6kzUXMvXXV3GyuYmj7an7o3Mbdo1u5d2QzpWZWLJ/vgHbsbOI/mkn+NEe2SAPY7Z/CCodoNqcVcLVtI/ebl3OrtIShpTVcK1/CoEbLtYxczssiuRIax2BYAldl0Vzzj+JGjJwfyqp4dWA//3blAs9PHubmuuXcr65gqKyQe/l53E5L52ZsEoOh8VwOCKfPz599Th5kfmZO2BgrQiaZkPKZJYVzXEgwNMfnQ2NyFom5Xrmc7qxM2jNzCZ9qjtdoc9xHmrPM0Z/TGYn0aaLp18m5VP62An22WPVaQKdzKkfNqRzNcO/zyWw1XdnK4YUqnZp0OtRpHM2QczBJzjF1DPfWavn1aCHPOwt5eqqGX8418vPZxmEB/aq3gV971/Ds3Drudr0/mwibLZxYZ+E8zIkWI2eWzxexeLYty+dZcMLLi1vvCOinjZrXnNDyYo2eE4/y3hZaVswQsuJ7G1oWOrDJ0oVtAjG7hWJ2C53/gRMbLNwo+sKKNu9IVoX40lVQyJPVNdzISeK+TsleFxkbXGORjZyD60gzwqf5USnORjrSguQ5QYR94UnK7Ej8JrqzzLuSVLMEmmPq8Z7igPdEG3zGCwgyECIZaUqNXz6hU52RjRHgM8KEsMl2uI8yxtPAAskYY1w/MqfFV80KsS8Pmxs5U5VPX20R17Y1caNjJ0NHt/Ngy2oa7WzY7+ZD4wIhRZ+ZEffxTGrMPWhykFG80IcK6xhSZ3nQkJDDg/4eXnZ1c7uqlpUzTDjt5Euno/R3nLj7Dif+/dwh/uv4ftZJ3ai38SF/lgTtNDeW2CSgmunK1dpWOsKU5E8xI3TMXEJHzCdyjCmBY8wIGWeL8nsfQicu4trSNRxT5w1zQjHdmdjXnAidbEX4J9b6oouhBQnTndgdo+akUklnWiwn89KHWzf+nhPn8jP+gRP/UGh5w4ncdE69w4n2HC1HdZkcUKk5oMxkt1zN1hS1nhMJSe8LJ/6IP+KtWNhs48pmG1d9cjSVsHy+iKqZ1tTNNeeEl+fvBPTzpkxercnk1dosXrXm8Wpl9rCA7pBIWfm9HQ2z7Vhr5KQXB7YS9otcOeAo5bDYg712Yg45u7FDZEf6xO+InWyGr8EijuRUc3NPG48Or4Cbh1iXEI/LGCt8R9vh+pEN7gauZNmoCZ4iJuILybCAzrFKp8gum01Jbahs0tiS1oLnJDv8ptjhM86KIAMhnuMFxM7yxekvCwgaZ4vHh4sIm2yH9zhzRB/Ow93AnNgZ7jQHZ7A7IYO+qgourarnwa6N3Du5k4GTGxk6upFaeyHHPb24FBbD6cA4DrpFkzt+IY2LxOz1iWa1KIbUb91ZG7WYl8du8KirnRcH9jBYVsTZiGB6vN3ocnJjMDSGc54BXAuO4odEBT+VlvB013p+vXicF7t3sNXeg+PaLHIsxBRYB5M4x4POonVcX97MEVki+ZMWkDhxPtGj5hI+ciFhE6zw/ciMckEcMVMtuLdqM30lS1HOdqDAVIZiupjoT82RGZgS8al+05T/OGN8xiwiZbaY46pCTqkUdKviOF+uYaDiHxPj2bx0zual05uX/vvEWKTmbF7G66qCmv4iFecLMjiVLedUrorObDXtWSrac7QcydSwR5HOXoWanSkZbEpQs0eZSVdJAcdKNO9DYtSLBVMhO4QSjonc6RI6c8HNjZvhAfygiuBRUTQ/VicPt3G8qFXwok7Jqxo5L8oT+UEdxUBoMJsspCz+zpYl021YPs+BRmMnfRXawoUtAimbrd4K6O3vKNisXgAAIABJREFUCOg3IvqgoxdHJV60u/rQ7SXjqIsHHU5uHLHxYrOdE0ONuXBxFz0JMs5LXTni7MGliHguRinojlCxP0zDYosAvD5YSLZNBmb/PA+/Lz0p9cjH/UMTIj8VEf2ZiIhPhIRMdSFlhh/BE+xw+4sRnh+ZEjzBDs+PzRB+9A32Ezxw+LMR/cpcdoQH82htPXebqxjcXs/DjiMMHlnPw6NraHZwYKfIk03WnrSYeKIbPZct5p4ckkRxPlLJCb8wLsUlcsQvihMhOvq1JdwsXcq13FLuZZfSHxbLzZhUBsMSuBYYww3fMG74hDKUpuZxUwt/7TvDbxdP8XDveu4sK+dOeSFDBXncVqq4m6JgMDKRy8EpXJBF0C7xI+9rAUFjLYn6wh7ld47kznKicK4bXv8yB7/RxuyKSuF8cQk9xYU0yqIJ+cQc0Z/nkfGdmN50DRc1CfTqEumvzONCeSZ9pRp6i966b7wR0KdyNJzM0a/z7tRlDK/17srMoF0l51BaAvsT5BxMieZevZpn27N5cbyIVz3V/Ha+mV/7mnjZ2/B6gLCBF+fX8fLCRu51vz+bCN/lxHpLMWtNXVg+X0TlTGtq55jR7eHB7cRQfixI1i9RWa3lZbOWl606XrXm8mpl1nAFul0iYeVMe1bNFrLWSMRWgfQtJxwkHBJJ2Wsn4oBIwhZ7e1STvydushlhUy04klvNtS1NPD3WxN8u72FtXCyu4yzxGmmD9GNrfCZ7ohWkE/6FO2FfSJEvCCP8K2+URolkWSppi21GbaugLbEBjwlCfCcJ8RtvTdB4G9zHWpAyX4bHaHNCDIS4f7CQEEMhXmPNEX04H/fxFsR9787qQAX7UzWcrSjjUkMtd3esY6h7G5ePr+fajkbWuErp9PLmfEgEpwNj2S+NIG/CIhoXidnnG8Nqx2jkM9xpjq7g4eGLPOpq59WhfVwvKeBseCC93m6cEHtwJTCCc54BXA2K5EGCnCelpTzdrefE0+2b2eroRXuGmlKhN7kWIaQbyWgvauNmfROHZQnkGS4iYcICYkbNI3y0ESHjLfH92Ixy63gip5hybVkLZworUc0RkW8SQPoMFyKmvPV+jvnCHv9xxviONSJ9vgsdGfmcVKbRpYrnfJmGy2U6/YzA637n84UqevMy6H3NiXMFKs4WKDmbl0FfkZqz+fpnX6H+prIvP51T2WmcylHRkaWiXafiWLaWQxoNu9PS2S1XsT0pnc2JSvaqMukqyeNY6R890H/E+xF6eyKBC1ts9QMi6yycWWviwspFzlTNsqFujhndnh6/64F+U1l4tVbHizXZvFyZxU9Fcm4lh3Hc3ZWV8+1ZPd+ODSYidttI2W8npV3sSYdYyi57ESvMHAkfN53Aj41oECezJyaXvoJqftm0kwetVfzbqT3onB3xnGqC0iQJ6VgnYr4PozW6kWqfSrwmSbH/QECZpAClZRoppknEmyTQqliH9zR/9mTvJG1RNCGfiPEZI8DzYyPcPlhA2GQ7ZOOtiPzUkeBJVsR87ozvaEu8R1gSMNaWk/JcahzE/G3vHnqXFHBrYy03urdyq2MLQ1uaWO/uyrmAcPqDg7gYFsrtFAWDKRq6AuPYbu/PdtsALkRrGcyp4Fp1LXc2rOHnvVt5sraJG0UFXEySc/q1TdcZVx/6fYO5EhjBUHQSDwqL+PngNv7rxjlubVjLVvdA2kTunE4u4FTKMi4VreaH1Wu5nJVJi4MrqRNmofzUipTJZsRPtRn261zilETkVFvOlrdwblk9mebuVDnGkPSlHZGTTQiaaI7vmEVEfSZEZmBK0EQzap396FTlcUSRQVdmBpcqC+h/LZzfDIT0FSg5lZtBT4GGvpIsrleXcjpPRU+BXky8u95YP1iVwYlsJV2ZKrozMzmm0nBQpWN/hoYDSi275ekcVGk4VZnNpZXF3Ggt5eLqnPchMeqvqy3s2WojZo+tCx1CMT1OLlwN8eOuPJwHOaH8uCSJR/Vyflyh4HldGi9r9QOFL6oSeZwTw+2ECDqc3Fk+14XF31lTP9eBFQvsaTZzos3Mic1WErYIpHo7Rxs3dti4s1OgX6bypo3jkJM3h5zdOebpTbu7F8fdvDjh6k232JNuZw+axdbcb8jll2O1dIaIOeYi4UqsnAvxJRwMq2RfbDn7HVOQTXFluX8ljh8L8PvcnbrQZTj9aQ6ySXaEf+1J9Lc+qE1j0RjHoJ0fivsHxniNMENmYIbXiLn4fDwb0UhbRH+axxVdAQdTo7i8qor7a5dwa3MbQ+0HedS5m9P5Wo66edAfGs3V+CT6o+V0ByewRxJIp088hx38aHcK4UxgGgORcVxLy+VuyWLuVC3hfkUlj3MKuR6VyGBCCjdiErkWHM3NgEhu+0UwGB7HraIyXhw7xI+3evjlbDf36pdzd2kZd4rzuaPVci9dxWBMIjeDg7kSEMRx1wAqZtrjO9KEoE+cSfzKhuzvReTMcCLKwAyPvyxCPUPI4JIG+opLOKzSoJwpQjbKioyvHenXZHE5K5He3CTOVuXQV5o1/Dt/a1+n5WSOhhO5ryvOWRkcz1HS/VpAd+uUeicOZSqH0lLZmxDF1QoFr7bl82tHKb+dW8avF5r5+UIzr8438bJvtf6cX8vPFzfz4OSa9+adaBW4sNnG9R1OiFm10JnKmTbUzTajy8ODu6+HCH+qfcuJl62ZPG/O5uVKHU+K5NxMCqXzNSca5wvZYCxit7WU/UIJx5w9aHeWsE8kptHSmUiD6QSNMGKFKJFdUdmcy6/mWdtW7q2p5HnndgrcXfH+zAyFUTxu45yJ+T6MhpA6qtxL8DZ0xf4DAXn2maisFKSYJpFgmkhz6lr8pwexXbOFNKMYwqZK8B1rhefHi3D7cOE7nHAgaKIl0Z/pOeH1sQUBY23oTsmi1lHCbzu2cW5pkZ4TXVu41bGFG+tXstHTg16/UC4EBtEfGsatlDSuJ6npDIhhu50/O4QyzkWpGdAWc3VZDbfXr+HFrs08blnNYGEB/UmpnPEP5aJfCGdcfbjgE8SALFzvj16k58R/Dp7j5rpWtnsFs9HFm1NJeXQlLqa/oIG7q1q4oNWwxk6KfMIslFMtSTE0I+5TwTAnqhwTiJxqy6miVfRU1ZBl4UmFfTRJX9kRNsmYwAlm+I5ZRORUWwLGmxBiaE6d2J8OZQ6H0/QOM5cq8rlQovmHG8o3nDhXrOPaspJ/4ERPgeb14G2GnhNZbzlxVKnmgCqTfelq9qWr9ZxQazhVlc2llUUMtpRwcXX2+/BO/BF/xOuBKVtXdjh4sdnGlVZTR1qMnFi+QETF94L/RwH9c1s2r1pz+aUxl2clCu6kRtDl6T4soDebi9kndOegvTudzgF0Sp055C2laL4dvmMsaJJGMFjeRLuimMPyPLp15ZxaXEvkNEtiP3PHc4wL5Z5LqHQvRb4ogegZoUTPCMXhQ2s8J0pYFVxLmmky8QtjiTdJoDp6BTm+ZdTFLCfNIoESiQZvA2u8R5rgPdIE/7EWhBoKCZooIGyKOYEGQtz+bIH4X2ZQau/Dbh8vbpcXcrW6hOtttdzd18rt0zu5s7GRdVa29LkFckkWxfWYFK5EJHAjScFgSjo3MjScjUzmXEgKx12C2WftTn9MGod9wjgWlMC1ksXcWlrLT4vrGUxQ0u8bzEW/EC76hQwL6B91ebzYto7/vH6WH/bu4M7iOu7oCrgi19Ihi6E9IIZ97qGUfWFG0WcLKZ5mRM0iJxQGi4iZZEGIoSWhk60ot4slbIqAzpx6rqxsosheRoV9NIlfCgkaP58QQ0v8xxmT+I0zUZ8JSZ/txqbQWA7JFRyUJ3ImP4OLVVr6XyfGdwX06TzlcGK8VJnP6TzV8Okt1A4PUnVnpdGdJadDI6ddpaBdqeRQmpK9ikz2Z6g5qEnnRLGGwYZSbm/M5v62Qh7uLOHauvdHQLdaOrBdKGGbUMx+Wye6HcWc93bnZnwID7Rh/Fgex5NaOT/WyXlWI+dVTTov61S8WprCT0Wx3FNE0uPry+pFUiq+tqJmlpC6OXasNnFijanTcPV5u627/ti4s8tWwh6hK7ttpewQ6OcG7irUHJS6cczdk043L056+HLS3Zcj7gH0uHtxykfMdV0cJ329Oe3kwcnAILpjszgQlsLJyAyq5zqS9J2MMudsXMc5EDLNj5rgCpzGWOA2xpqIrz2JnOaF6AMT/AxFVLpqUJtH4jXOAumIhchGmxM+yhynPy3Ad7QZZ9KzGKjM53JdEQMry7i6s5mrJ7Zyv3sbra4unPT24VxgADeT5QwmpXNDoeJaWjr30nVcj0vlWkIq11MzuKnO5H5JGQ/rlnFrSTl3F1dyW5fH7VQVN+UK7qZlcCs6kVvBMdySRXIzMJL7SUqeNa/m5cVufhvs497mjdyoLOJWQQ73MjO5LVdwMy6J62ExXJZF0CENYPFMIUEjF+JjICDyUytU3zmQN8uZBEMzPP60gIARRmyPKuJG3Qp2J8ezKSwdrw/mkzvDgdPJCgYy0+jJjOZCZTrnyjT/IKB7CjTDC1S6c9V05aj0z2wlXZn6D9IOddrrKnQSe+Pj6clK4tXmfH7uLOPl+QZevhbQb0T0z+eb+eXCel5e2M6DEy3vzTvRZiNlu73n7zkx/zUn3gjolHB+zE/mp1rVW06szeJlay4/N+TwrETB7dRwjnu6s3KBXkBvMnNmr9BNzwknfzqkzhzxcaPCVIzfGAsaxOEMFK2iM6OEo2n5dOvKOFlZTex0ARGfuOA51oUStwqqPMpJN0kmYU4UMd+HYf+hNR4TXFjmXUGaWTJxC2KIN0mgJnoF2T4l1ETXkSFIIs8hDa9xArxGGA9zImSSLUETrAidbIZsvC1ufzZH/M8zKLXzZrefDzfL8rleV8a1thqG9rVw69QObq9fxQZre866yrgki+JqZBJXwhO4kajgenI619PVnI1M4WxQEl2SEPYLPbkQk8Zhv3DagxO5WlLFzaU1/FhVy2BcOv0+QcOsGJCFMxSdyOOsfF5sW8ffrvXwYM92blfWcEuTy0Cqhg5ZNO2yWPa5h1L5lQVFny+i+Bsjli0QoTBYRPTr+ZeQyVaU2EQROtmKI9qlXKpvoMhORrldJIlfCAkav4DgSRb4jzMm9itHIqfaopzrzuawWA6mvsOJyrecuFCk+l85cbEi73eceCOe9QO3aXTp5LSr9Zw4lpHBQfkbTqg4qE3nZImG63/Hiavr/hDQf8T7EfqrOVsxm+zdWWftRpOpmNUL7Fg+X0LVDDHLZljTLnFlKCVsuLft2WotP7fo+K0tm9/acnjRlMmTCjl35aGc8RCzZq4lLXPt2WDkzA5rRw6IHDgukdIh9Wa7szeH49VsiFNyILGMQ6kFdOsqKbIKQDMvkFK7JEKnivAysEE8WoBopIAV2p0kuRbTqNhMrlMeIZ/54DLOnlwXLZGzQ6nwKCPiu0g01lrqolZSn7iK9dp1iMdZEfm1K76jzQiZZEuggYCQSbb4jzUnxNAIz5FCHP+PJX4fzeZSbh5rnZ153rCSWw3V9LfV8bjvAD/uaKPOyIQOKzEDHqGcj4rnqlLNdYWKm3IlD+QabkSn8CBVzc0kBVdjkukLieZiRDyXo1MYSMthILuE68WLuZxZyJX0HM4HRDAQEsv14DiuBkRxQxbLD9nFvNi8gb8NnOanjr0M1C/jrjabSzFJnJaFcT4kml5ZOI3zBayYZ06brYgGcyfUhkbEjDYmdLQxERMsUM72xGvMQjpzavhh/QbWyFKptIkiaaoD0RMtCRqrn6yOnSogdOJC8k09OJqaxsHERI6kJnK1soDLZdmcL83+B7Hw+8qbfnCqpyCT3oIseguyhntAT2SrOJ6t5KhGwaGMdPalKjiqzGZnspauQg2XmnTc3JLH/d3FPNlXzOM9hTzeU8jNzVnvQ2LUf1Tauei3rjlI2W3rzDGhiDMSMVdCfXmYFsazwhieVafyZHkaz+oV/FKnF9Av6xS8WJLMw6xYrkSHslvowdLpdlR9K6Bujh3NZi60WLiw6e8FtK07O23c2WXtwS4bN3bZSNgtdKY/LIYjHl60e/pw2juAkx6+nPEOoMcniJNObvyQHM9Ky3kcj4/lSGQMh7x1HJCp6QyK5YBbIKlT7Mg0lVPvU4x0tCNyoxQ8P3FhTVItXhPs8BwvJNMiAS8DOyQjLXH52JwC23QaIpaRK1FTYJVIyKcOhI51Rz3Dgx2hydxvXMXJskKutqzkQecOHp7YxeEsBUdcvRnwDedyWCyD8WncSlFxOymDO3FpDCm03MhQczs7h6GiQh4vWczjmmU8WLqUH+preFC7lKHCPH7I1HAzJYUhuYLbsQnciozmakAQN4PCuRUv51FBCU+2b+SvV3v5194T3FhczoPSIoayddxSpHMrMZXrUQlcDo7ghHcQVXMd8f5wLoGThPiNNULxrQNZM+xRfyckarwJoSPMiZpiw7miJXTlaujQ5JK10IvQ0TPpTtJwSZvGeV0MF8sUnCxMo68ki7NFmfQUaIYt7P5+A2FXjr6N442AfuMHfSgtib0JyXSpE3jcqubf2kv4a/8qXl5Y81ZA97Xyqm8dv/Zv5pfLW3lw6v2xsWt5wwmBK02mznpOzHOhYrozy2ZYc9RFyp3kUL2ArlPzdLWWV2sy+bUti1/XZvOiScePFXKGUkM57eHCmnlWtMy1Y4OREzsEjhxwdKTTxZV2iSe7Xbw5FKNgXYSCI8mlHFMU0qEqodw+FN3CEApt4gj9zBnv8bZIRtsgHmPLCvU25G4lrExZR5ZjDqGf++JqICJLpCJqdhgl0iIiZ0Shs8uiOmI5tfEraE5rQjrBhtDPxcOckI23IniijX6tt6ERniNtcfpnS2Sj5tGjzmSD1IVnq5ZzY+VSLq6r44cze7i/pZkVZuZ0WDoz4BnK+ch4rqSrGExTcTNVyX25mhsxKdxLVTGYkMaV6GTOBcdwMTKR/qhUBtJyuZJTyrWiKgYyCxiQZ9IXEM5AcAzXgmO56h/JDVkMD7OKeLF5A/8xcIonx/ZwuWYJdzQ6LsYkcUYWTl9wND3+YawxErJqgSVrbUSsNBMNcyJ4tDEREy1Rz/XGZ5wRh7VVDLWspcE3gXKrCBI+sSNyggVBY00JGW9GzFQBIRMXUmjuxZHUNA4mJXJEnsRAeR6Xy7LoK8niXLH+feh9c14vGHojlvVuNVp68nX05Os4laPhRLaK7mwlnVkZHFW/5cThjCw9J4q0XFr9mhO7ivlxbxGP9xS8T5z4I/4IfWJstHKkTaAHe4ORiMb5ttTMElH8lT1lXxrTIXXjdlIIj/KSeFKn+v8toA86OnLCzpVTdlI6Rc5cio/SG9+XLmZ3VAYlVsHEfuWFziyDLJMYPEYJ8BznQMhXfkR/H06IUQKVEcupDq8jx1GD1yRn3MbZkTgvjPh5kRRKi8iTlBCzKJF8j2KWRtUStiiUqNn+RH3tis8oU2TjrQg0ECAbb0XQRGt8JprjOtoS5z/NZYtMzm5fby4U53F5RRVXN6zk7v71vOzeyxILMzZaCul18eOafxSXohO5q8ninjabB7pcHuUU8Di3kCFtNjdUmdxU67iqUHFDpeVWZi4PKpZyq6ySm6WVPC5byrUkNQNhcVyPSPydgL6rzefJ+rX8+8WTvDxxiEcbWnlQUc6gLosryQrOh8dyITCSdmkg+5y8OeTmxyZbTwqnWpI03pzI8eZET7ZG8b0bARPNOKCqYKillfXhSnTzfIg1tCbGUECogQVRU6wJn2SKz4gZ1DhHcDQ1jUNJSXSpFAyU53GpNOv/s4A+k6/lTF4mZ/IyOZmtplunpEOrdx5oz8wYToy7ElPoKc/n/oYqHuws4vHBUp4cqnhvBfR6Oxe2O7iyxc6FHUIxB+2dOWhvR5+vG3dig3moC+FpZSKPlyXz0wolz+pUvKhX82KFiufLUvixKJ5bKZF0uXqyfK6E8q8tWDrDmkZjJ9ZaSdgokLJFIB0WzzuEHuy293otoN3ZZSPlkLMHne5+nPDwpdvNm9Ne/pz08KVd7MYxFzc6vf25mipnr8yTc0lhnI8KZE9kAaezqtgjFlM715mYzz1RmMajNIpA9ok7q4JXYP+xNYHT3CiwU+A6WoDKJAbJSEu8J9gj/dgS77/YEjhZhGySNV4TrfA2FCD+yIxKhwTKhZ4MNTRypaGSm5truXZyG0/bd7BWIOSydzjnw2IZTFMxmK7mToaWh5l5PCksZaigkMdLlnC/qpyhpWXcq67gh7rFPFlRzU8Ny7hfX8ZQRS4PcrTcyUjjB4WCoYREboRHMuAfyHVZCJfCormZksH9plX86+kO/vvKeX48to87BbncycnijlLNkDydwZgEroeGcdI3lLxZYjzH2+A6yoxwQwHyLwTkznUiZ66IiLHzSfnEEY8/z6fBM57Bujo2RoWz2EFG8pfWHI6L4bwmlguZkVwpU3G+VMn5d9o43lbT1Jwu1HEi/20VujMrg+NvBHRWBp06NYcy0tmfImdPXCR3l6v57/ZK/nZhBS8utvJz/2p+6W/h14tt/HJhPX+9tIV/vbKF+yfeHxeORisH1gpcaLEQs2qRIw3zbameJaLoSyFlXxhzTCLlVmIIj3ITeVKr58SrFh2/tWXxa1s2L5oy9QJaHsoZdzFr5lqxZo5eQG8XOHLAwZFuO1dO2klot3fifGwkl7Ll/N/svWVwXGfW77vvfSGZgB3bsWVIYjtx7JghMcgWMzMzM7SaQepuMUsWmCQzxHZikJmZmdmSLEZTkpmX7jm/86EVB07mnbm36s5M1cmq6qrerV17f9Hz/P61nrX+60FhOXvj5BSZh5M4wQfVvAwyF8TjNdgC72F2hH3qR/QX4UTMS6YsejmLI2rQ26vxH+2C+1ArkmaGEzcjghyXXPSuBSQvSEfvkUdFTDVxxjHEzQwidoIHvoMWEPyh2ZtP6AgLfEcswu0DU5zemsXWwHT2BPpzPU/L3eUV3N+ygmf7vqb3+E5qrSzYYmrNJWd/7gfGcjs2hUaFxsAJjY5ObS6d2lyaVVk8Vqh5otRwXyLnsUJNY6ae1pJKnhSX8bSojM6iSu6nyrkTYeDEg7DEnxxpNDn0fr2Rf791lpdnDtL+9TpaSop5pMnkXrqE65HxXA+O5oR7KPucfDjo7s8WSy9yPzEhZdhCooctJH60JZJpngSPXMQ+WRFPVq9hfaiYzFm+JIyyIG6kGeEfLiJ2jDlRI43xHzSVGqcojqQbEi2nFRLuFGdzuzBzQED/Nicu5ap+ZvP4q0ZbjYwTajHH1GKOqWUclErZKxKzOzWdy6U5tG4uG+BEId0HS+jeV0Dn7lw6d+f+o3Di9/gHDK0gCE8FQXglCEKvIAgHBEGY+at7ZgiCcEoQhB8EQWgXBEH3G8/JFgShQxCE7wVBOCkIwtQ/875BgiCw3NiaVca2rFrgwLI5NtTPsqRisg36j80oGPsVhxyceJIcSocuma4a2f9rAb3fwY5j7m6ccvVlr6UnB1yiOBWtosErjTrrFDJnRbPYQ4vSJo7w0a6EjHQj5rMQUmelUO5ZweKgxUROCUO0IAG5aRKOg40JHGFPyhfBlLrn4vaxF8VhtayXfkPg5FBEdlJ25TfgONQU3+EWhAw3J8zIktARFgQMWUTkGDu8xjjiNcqCxMkWXJZr2eFow/36Ku7tWMXdQxt5eX4/+VaLWDfHmDNOPlz1COZBRBIPYlNplqppVWlp0+fSXlhEW0kxXYsr6VpcSWtpCW1lpXQtrqS7pppn1eU8qSymuayY7twCHiWk8zheRGNChmFjHBDQjXItHevX8Kcbp3l9/gjd32yiqbaSB4V5PMrM5G5iOg+jU7gRlMw5rwiOuQWw09qXwjGLyBhhSsJIc5I+sSFtojNu785gZ3ouLRs3sT1Ri2KaJ/5vzUQ8wYnAQXOJGW2O//sziDD6ik0hsjcC+pJWbRjFWqD5qwX0ef1PTVQ/DpA4OSCgD8lF7MsQsSctg+slhbRsKqR/byHPj+bSf7zIIKL/soD+u6yJjVZO7LBzZ4etOw1WLuyxcmSPhRVn3Z24F+ZLqzyc7uJUepcq6FquoHepghdLFLxYoeLFEjF9xUm0KOO4FhrC2nmuLJ5sTdU0K5bNtmXdIhc2m7jxrbk7DTbe7LbzZZetDzutvWiw8GK3pTe7rTzZbeXGISdPzngHcMrNm9PuPpz18uWqtx83fQO4GBrALUkCyglfEPLedIKGOXJOv4rWMgWbbdzI/NyGhAnOZFvLyLZIR/JVPMXe+TgNt8LhfWNSpgSQOCWQ2Im+VLhr8TOyMbhvfLCIMCNLAj40xXPIAtyGLiBwtDUHUrNZ7urDi21buLeqkuZdq2i8sJMblYXsM7HjjlsI96KTeSCW06LW0p6VTXtuPm3FRbSVl9BaXUpPXQ3dK6rpq19CT10NffVV9NRV0FlVRFuRnvYsFc0ZIp6mJPM0KYnH0bHcDQjhrncAT/wjeRidSlN+Ib2bv+a/blzkhyc3aSrO44k2k0aVkqcZEu7HJnI/NIxr/qFkfmGN86AFuA81I/ITa8SfWpH3lTuKL8wQjVtE/HBjwt43IXTYAq7kl3Naq2BHgpgSi0gORwZyV5XORWkct/NlXC+Qcq3oxzIOFReyDf/7Z7NUnMtRczZbxYlM6RsRfVon47RezGmdnBOZMg7JJOxJS6MhNoGrxXL6jpTxxxvL+OHuRl7fWs8Pt9fzxzub+OHW1/zxztf8cHsTbWd+cxLh34kTVqwytmXlfAMn6mZZUvGFDbqPzCgYO5eDDk48SgqhXZdEV7XsTQb6hw0/ZqANAvpZRjgXPZ1YO8uUtbN+EtD7HOw56ubGSRcfDtn6csg9mlNRCgMnbFPRzoml3C0TlU0C4aNdCTZyJeazENJmJVPqUcbiwMVETYsgY2ESkkUJOH+wCL8PbUj+IphCFx0eH3v414vqAAAgAElEQVRRFFrDWvEWwqZHkuEgZ6t2K64jLAwuHCPMCR1hYbCtG7KI8DG2eI12xHOUOUmTLTkvVrPdyY779Yu5u20ldw9t4MXZvZTaWbJmzgJOOnhx2T2I+2EJPIhNoUmspFWVRZsuh/aCQtqKi+msrKCzsoKWkmJay0rorKygq3oxz6rLeVpZQnNZCZ05+TxKSOdRfDpP40QDlo4xPA6Kp1GupXP9Wv504wyvzh+ma+tGmmoreFCYy0ONhruJ6TyISuZ6YCJnvcI45hrAdisfCsYsIn24CXFGZiR/YkPaJGfc35vJzrRsmtetZ2uMEsU0DwLfnU36eHsCB80lepQZQR/MJnLkXDaFSH/FCS03C9RvTmT+OwFtqHdWck6nHBDPck6qpZxQGQT0QZmIvaJ09qZncKO8gJavC+jfW0D/kVz6jhbRdbCQnr35dP0ooLf+LqB/j9+OzwVBGDzw/Z8FQRALgtAtCML/NfDbe4IgdAqCkCcIwr8KgjBNEIQ2QRDSf/YMmSAILYIgTBEE4S1BEAoEwwb6zm+8b5AgCKxY4ErdV04sm23Pstn2LJlhRdEkWzRjLCj4dBH7Hd1oTI2gK9tgkP/jxvhivdrgxFGnor9IxDNxJGe8XFg9x4xVs03ZuMCGb82d2WXlxAlbE464+rA3VE5D8go2Ja/nRuVu9uZv52v9Dor8Ckic6EvyWB+SPgskc6GY1C9TWRG9Ep2VjnzXAiqCK3EaYoPLWyYEjHAh8GMfSryKyHbJRuWgIctFx0rx12wpOkSSVQrZVpFkTnfEf8hcIkab4/uhCT5GFvga2eIx2AEHo3kcSNfxrbM/9wtLeVpfztODq2i5vJN1yYkUjjNnxzxLzjp7cd03hDtBkTyJSqQ1Q0a7Qk27Xk9XSSFdlaW0LC6me0U1ncsW076kgrbactqqK+lcUkP70mqeVZTRnKnnSaqUJ+kZPElK435YLI8Do3niF0FTioSe1Wv507VLvLp6msZvV9G5opqm4jweaZQ8TBPxMCaJO8Hx3AqM4ZJXMPtdgsj9wpzUMVYkfWRD/OiF5M33J3TwAnbH5dO6ah2HJTqSP1uE19tTiB9ri9/QBUSNsSN0qDGiCRbsT1RxOkPEKXEatwu13CzN5FqJQSRcK8ziYo7yzwro83o553I0nNVncSpLzXG1guNqBceUco7I5OyXyGmQpnO2XEnLtiL6DuTz8kgxLw4X0X+wgN59ebzYpad3ZzY9u/J5sjX7tzbGv8ua2GLrxh5nH3baebDDypUGCwd2mFiy38aRq4FeNIvCaNfH01MloWuZnJ5lCp4vl9O/XMnL5XL6K1Lo0CbwKCmG/XbeVE21p2KqFTUzbFgzz5Etpu7stPZil60Pu2x92G7pwS5bHxosPdlj5cMeay8OOvhw0NGDo67eXPb25bK3L1e8fbni48dhbw/+/dt6NntYEzV0Br5vmxI10o5T0loOesRRNccN2VQ3oif6UeysJ+ZTX/SWGrIds0hbmIDzUHNUC+Px+sACv+EW6OzSSZruT8AwcyJHWOPz/nwix9ji/s5cXP/FmKChNlyW69keEkz76loerq+m5dBmOk5sZ7mtNXtM7LjpFsy98ETuxqfyTKahTZNFR3Y2XaVFdC8uo72mjN76WjqWVNKxYjEdKyvpXlZG9/JyeqqK6MzX0a5W8iwtjUdxcTyMjOZxZAz3A0O56eXHA58gbkXE8VCioKNmKS8O7ed/NN/j3w7v5o5SxgO5jAfpIh4mpnA3Ko4LgWGkjf4Sn5HWeBjZEj3WlvjRCymc74lkwnxUU8xI/8SE+A/N8P3DfCocAmheWc+e1HSK5tqwPyCY29IkbqlSuZ0j4UaBjCtFaq4U/OgDreSCXsU5rfqn2medgnM5as7olZzMkg4IaCmntHIOKCTslqSxLSaJQ7IUuneX8e/XlvIfD9bz+t5Gg3i+vYnvb200ZKJvbqDz/G8OUvm7rInl812on+v8hhO10y0pmmiL5iMLCsYvZK+DK09SIgwZ6Bo5fStVvFyj5vk6Fa/WZ/KqTkVfoYjmjAhOezmzeo4ZK2ebsGGBNd+YObHLyonjduYcdvNlb7CMXYlL2Jy4mqvlO9mV8w0btdso8i8icZIfyZ/4kPRpAFoTCaK56SwJX0GObQ65TnmUBVbgPNQWl7dN8B/uTMDHPpR4FqF30aOy16Bx0rIsdR2b8vaRZJWKziIM9VR7gj6cT/goM3w/XITPCHMDJz5wwGnUAvakaNjmGsC9gmIa68t5emAlzRe3szYxgYKxZmyfa8kZJ0+u+QRzOzCCJ1GJtKRLaFOoadfp6Cr+kRMldC2vomNZJW215bTWlNFWXUHnkmrallTzrLyMJo2Ox6kSHqeJeJKYxv3QWB4FRPHY90dOrONP1y7x8sopnn6zko7lVTQW5/FQreRhajoPYhK5HRzPzYBoLnkFs885gJxJ5qSMtiRxjA2JH5mgneNFyPvz2RWXS8vKtexL15DymQk+f5hG3MfW+A012PeFDFmAeKIl+xOVnBKlD3Aii5ulGq7+lZw4p5NxNlvDGV0mp7LUHFPJOaZScFQh47BMzj6JjAZpGucqlLRsK6DvQB4vDhfx/HAhfQfy6d2Xy4sGHT079XQ35P05Tvwev8cv4i1BEESCIPwPQRCGDfwWLhg2yv/7Z/elCYLw5GfXTYIgpPzs+p8EQ5Yi+DfeMUgQBOqM3Vg+x4Ga6dYsm21P5RcmFHxuTeZHluSNN+aQi+dfLaBPe7lSP9OSuhkWBn9PEzcaHCPZGVfLxayNnJFVcSJFy+k0NYuDFQSOdyT9yxhSpoQQO86FuE99iJ0YSLF7HmILJVqPIpYnraQ6tIK4LwIJHGmLxzBTXN9fhO8Qa8LHeZA2O5IiDy0bRHXEfBWC83BzNIvCOZiWyyr38AE/S0sCjMzxMbLAe7gVHoMsiJtiy3VVPts8fWndvpaWAytpObmDa19vwvktI4rGmbHPzIFLHv7c9A97I6CfpUtokSlp1WrpKCqgp6qcztoKeupqeFZVQm99rSHTtryKvvoqOlaU01yRR6tewzOJhCaxjOZUMY8i4mkMjqUpIJrHiem0Ll3BD1cu8MPNc7TsXMezmlKaS/J5lq3jsUjM/egE7oclcSc4jqu+YRxyD0E/wYSkkeakjXMk+RMz8hcEEDF0Eev9ZLSsXMvl3EqSP12E//sziR9rQ5DRPKI/tiR4yBwKTTw4Jc/ilCidc3Ix94qz/2oB/ePo4jM6Faey1JzQKDmZqeKoUsZhuZx9aWL2SSScKlDQtDWXjj06Xh8r5fWx0p8E9P48evbo6d2XT/eBYh43FPyljfFvtia22rmzy9HLkIW2cWWbpRPbzJzZvtCW0x7uPIgL5Jkqgs6SNPqq5fQvldFfJ+NFvYL+ZXJeLhHTlZdIkziWC74BrFzoS8lkCxZPt2LlXEe2mnmw3crL4MBh7cVuO18abLzZY+/Lbisf9lh5s8fajSMObpx0ceeMuydn3T247u7NLd8AToX480NtKY0aNfrJdoQNtsb/nYXsCEjncpwY9QQLMr6KRW6hYkP8erRWmehMFShNJeR76nEdYoLfSEu83l1AwDALXD4wpjYgG59hZoQbWePz/jzixzkSNNQS97fn4jVoEmfSRRyPC+VRRSFPv66j6eBmmhvWU29swlE794FTmgSeRCfRki6hVa6iLUtLR0Ee3ZWldNdW0Leyiu51NbSvq6Jr9WL6lpTSW13M88XFdOXr6chS0ZSexv3oGO6HR/I4Mpo7AcHc9PLjppc/t33CaE7MoD2/kN5Na+D+Rf545Qi3pGKeSGU8EUl4kJjC7chYzoQkkDhqLqGfueE92hkfIwtixlqjn+lM1gwb8uc5kvaJMamjLQh5x4zgD+ZxPLOAw3I5mwOiOBqZwR1JEtcVCVzJSuVuaRZXilWGSZv5Mi7myLiQreJ8rmGS2hm9YYDK2WwVp7RyjmsknNIrOKHTcFgj55Baxh5pOlsT4tgeE8OTNTn86Uo9f7q7k+8fbuG7Wxv47uZGXt9Yz+sb6/nuxgY6/nIN9N9sTaxY4PqGE0tn2VHxhQkFE6zQjLEgb7wxB5zdeZIcTpc+9RcC+sU6g2PTqzoVfUUimsURnPJ0MXBiujnrvrJji4kbDY4R7IhZzMXMDZyVVXMiTc/J9EyqQxQEf+ZM6pxokqcEv+FE3MQg8l2ykVgq0XkWUROzlOrgCmInBRFgZIPHUBPcB5vg84EV4eM8EH0ZRaF7JquTaombH46rkSUakwj2p+ZQ5xxK5BhzIkZb4D/C7CdODLYkYZodVxW5bPP0oXFzPc376mk5sYPza1bh/u4Yisebs8/U4Y1jxo+caE4TGziRlUVHYT7di8voqCmne0X1G050r6ime/lieusX0768jObyPFp0GpolYprEUppSM3gUYWikbfSPesOJ76+c5/vrZ2nZsZZnA37oTfosHqdncC8qnnuhidwJjuWKbxj7XYLQTVhEgpEZqWMdSB1ngXa2J6GDjVnvL6W5bjXndKUkf2ZCwPuziP3YiiCjeUSNsSB4yByKTT05KcvkVLqBE3eL9dws1QxwQsPVgszf5MSPfQJnsiSc1hn48AtOyGTsTROzTyLmTJGSxq05dO7J5tXREl4dLeH5IYOA7tmXS88eHT378gyc2PkXOfF7/B8cToIgvBQE4X8KgvD/CIJQ+rO/VQiG47qfh7Fg2DzfEwz/UP9TEIT5v7rnkCAIZb/xrkGCIFA+05raWTZUz7SmdrYtxVPNyf7cDuUYK3LHLuKAgycPkiPp1It4WZvJi/osnq/V0r9Ow6uB7uq+AjEtkjjO+LpS/6Up9bOtqZ9tyzcW7hz3Deaoqy9HvcO4kKShzjmFalcVVS55ZJmmI18YT+RnPgSO9CTsswCqAsvxHedDcXA5WzN3ILeUIFuUiv9IewJH2hBgZEmAkRUeH5gQNNoOv5HWKIxjkM4NwmPoTDzfn0mZdSSnFQXUOvkjmeSJx+Cv8P3IAs9hJvgOscL9D4s4JVWzKyyIq/mF3Ny4hLs7K+g9fgz3obNINlpE7VQbTti6ccMriNt+YdzyDaUpMpHm1FTaZDLaMlW05ml5XltG3/IK+tbU0LGumo71NXTUVdCzooLuFeV0VBXSVpJNq15Ns1xCu1TKs5Q0GmMTeBgSwZOQSBqjUmgtLuHl1ZM8f3iZ/u3baV5cQmNxLs16LU/FUh7FJvE4LJEHQWHcDvDjsJMnSqMviR1qTOpYG1LGmpG/IJCQ902osk3k6bLVXMgpJmr0dDzfmkLIEFOCP1xA2LAFhAyezEr3AM6rxJwQpXMhW8qNKhU3yhRcy5FxfaC27ed1bIZ6Z8Pngt7QCHIySzaQbVNwQqPmiFzJfpGcfeliTman82i9lq69hfQcyKf/sJb+Q3qeH84bENAF9OwroudgBT1Hqnm6u+LPbYx/8zWxzcGTvY7e7Lb3pMHWnR02znxr5sJWYzsO2TlyI9yfx7JIWnNT6auU0b9ETv8KGS9WyulbKuf1chnPy1JpU8dzOyqCHfZBlE23ZckcB1bNd2GDmTsbzNzeNBI22Hizy9aHvQ7+7LTxpMHGg902rhyyd+e4szun3Tw54+fDBU9/Lgb4cyshiuuJ4VwRx7Hex5Ovw8VcVJbytWMAoo8W4vGuKXkOOSRNj6TYRY7feHvynLVoHVTUhhQT9IkzvkaWBI+0JmaMIz5DTYkcY0vQMFPixzkRPtKEMCMzAgbb4vm2MRmTTDmeFM/93GxuVxdz95s6+k/uYk24H1uMLTjt4MEVr0BuBYTzKCKepvhUmsVSnqnUtOg0dJXk0l9TSm9tKb0rKuheWUlXXTkvllfSUV1ET2UhHQV6OnQankkyuBcTw73IKB6GRtAcFcf9wFDu+AXxICCUxpAoGtPS6Fu+mL7TW+k/tYVHGgWPZTIepot4kpbB7cg4zoZGE/LefPyGWuM7yoUAIxukkzyRTbAi9ytncmY4IP7YFOknlsR+sIiAd42pdovk/pIlHM2QstnNhVvyOG6pE7isTuRmvoKbFVlczFVwqUDFxQI15/OUXMg3fD+bbSjlOJer4VS2kuM6Oce0Co5kKjiskXNYI2eXOJXNSSl8HZrBibwUXpyq5N9uf8MPD7fz+v56Xt9Yy+sbq3h9Y60hA33uzw5S+dtzYpY1tbNsqZ5hRe0sW4qnmJL9uS2KMZbkjF3IfgcP7idF0KFP50WNhud1mTxfk0XfWg2v1ut4XZdFb0EGz8QxnPF2ZeUcc+pmWrFqjh1bLdw55h3CCRcfjnqFci5ezSo3ERVOSsrss9AYp6IwTiTqMz+CP/IhelIwpV4FBH7mR1FQGRtkW1DbK5EsTMbPyI4AI2v8RxhOV7yGmBI02o7QT5zI+DKcjK8C8B7xFR7vzaLUMoKTsjyWOgci+twDj8Ff4jPaHI9hJngPscTrPVMOpsjYGRTAZX02t79exoPd1bTs34P3yC9JNlpI7RQbjlu7cd0rkFu+IdzyDaUxMpHmlFRaZVJaNSpa83T0VZfSu6yCvtU1dK6ppn1NFR0rKuge4ER7VSFtxdm06FQ0y8S0SSQ0J6fyJDrewIngSJ5GpdBaWmbgxP2L9G7/hqbFxTQW5dCky+JphoSHMUk8Co3nflAot/z92O/ggWrUV8QNXUjqWBtSx5mj/9KH4PcWUuuYxOOaei7klBD3yWy83p5K6FCzN5wIHTKVlR7+nFUOcEIv5WalmhulCq7myt6UcPx8IuePjLiYbfBJP5NlaBY8rVVyIlPBCY2KwzIF+9Jl7E0VcTJbxKN1Orr2FtJ7IM/AiYN6+g/l0XfA0Gjes6+I7oPldB+p4ume8t8F9O/xF+MDwXDk5v2z31YKgrD5V/d9IRg2xtGCIHwkGDbGSb+6Z4sgCHW/8Y5BgiCQP92C0hnWFE+zpGiqBQVTzNB9bodslAX6jxey19aNh2nRdOhFvKjW8Hx5Jn1rsuhdo+HFWh2vVmh/JqDdqZtjRt0sO9bNd2erhQe7HDw5Zu/DBZcwLgWKKf8yjBxzKSpTGRWuWorsxKgWJBD5eSiVfqUkfhlPyKRg1ks3kWouImVuPFnWMgLHOOE11IzITxwJ+8gePyMrgsbYETbWCc+hpsR85kDsWFPc/nki5ZYR7ImT8ai4lkijWTi/Ox3X4SY4vTcP57fmIJ3owFmRiE3enrzcsZvGQxtpP7oZlZMvgSMtSBm+iGXTbThl685N72Du+IXxMDiaJ2FxNMbG05qWTrNUTJtOTXdpHr3VxfTWVdKxporONVV011fSU1NC75JSusrzacvNolUlpykjnRaRiKakZB5HxXAvKJQnoZE0xYvoLirl5bnDvHh8hb5dDbRUl/GstICW3GyapHKeJKTyOCqNu0ERXPfz41tzRzLHmhP1gTHxo81IGWdGzlx/gt8zoXBRBM0r1nE5vxTFTAv83p9J+DBLosdYEj7MmJgRs9gbn8YpaRLH0tO4VqzmSqWM62UybuTKuV6o/d8E9C+GRvzYMKiRcFqn4ESmgmMqFYekCvaL5GyPj+XeMi0dO3N5cbSY/sOF9B/Oov+Qjv5DOTw/VMiLw6X0Ha2k73gt/WfraT6y9C9tjH+zNbHN/ucC2oNdDm5ssXBh3Tw7tpk5cs7XmweJYTRqE+gtk9BXo6B3hZTXy+W8WK6kf6mUl1UiOrMTeZoSw1FXX5bNcqFmui31c51Zb+rOJgsPvv3RB9raiwYbbxpsvNlp48VOG0922bhxwM6Ngw7OHHV354STB2e9AjgbFEC7VsljTTq3VHE8X5rGLVk0N5V5FJnF4DHYHr8volG5ZJI43ZeocQF4DXEiz05LunESu1Tf4D3SBt+RVri9NY+4sU54vTuXoGGmhBlZEjHKmvCRpkSMXoTX+9a4v2NJySJf9gUFcCFHzd1Ny7h9YD3PLx1A+ek8Vkyw5ISdK1e8At94mzfFpNCclkqrVEKTTEybVkVHnpae4ly6KwvpX1pO79IyepeW0VFVREdZHm2FerrzdLTIpTyKjeOGXwB3/YNpjoqjNTaR9vgkHgZFcMXbm8f+ITyOjqF3ZRV/3LWZpsJ8GlUqmuQq7kXJuBGZwNHAYEKGGhP8kR1eRo6EjnElfaIraZ+aUWXqg+pzU+TjzZGNsyRt5CKC/2CB/4dfckq3mH0pYvaEBHNbkcpdTSK3MpO5XajgaomaS6WZXCxQc6U4i0uFGi4VarhclMmZHCUns5WczlVzKkfFCb2CY1oZJ7MzOapTc0CjpkEqY0uyiA1hIhrS4vjuRBX/fn0Df7q/ne9u1/L6Zh2vb9bz+sZqXt9YT8fZvziJ8G/HiWkWlEy3oniaJYVTLcifbIp2gu0bTuyxceVBShTtup840bs6k941ap6v0fJqYF7AM0ksZ3zcqZ9jxoqZtqyb585Wc3d22Rs4cd4llIsBYsrnhqM3zSDTQkGpk4ZCGxGKefFETwqjzLuY5K8SCZkYzFrxRjKspaQvSEZlnvGGExEfOxAyxg4/IysCR9sSNtYJ7w/NiZvgSMzHJrj9yyTKLcPZHSvldk4FsR/Nw+X9mbh+aILjACfkkx05nZbGVj9fnm9voPHQBtqPbCbLJQD/4SYDnLDmpK07N7yCuOMXxoOgKJ6ExfE0Np6WtHSaJRm06VR0l+bRU1VMb10FHasX07FmMd11FXRXF9NTW0pneT7tOb/iRGKSgROBoTwOiaAxXkRXUSkvzx3ixaPL9DbsNGSgS/Jp1utoksh4Ep/Co8hU7gSFc83Pj29MHdB8bE7U4AXEjTIhZZwZ2lneBL2zkDKLaBqXreFyXinKWZYEDJpFxHCrN5yIH/Ule2JTOClO4pgonWslGq4ulnG9VMaNHDnXCn5ypflLnDillXMiU8FRpYqDEjn70qXsTIwb4EQOz48U0Xcon/7Dmb/iRAm9RyroO15L39l6mv4yJ36P30MQBENN2ytBEKYPXP//klmYP/QjFg0bi8nwcYSNnU3uF6ZkfmqNxMgM7ZgF7LZ24WlGHJ3ZGfRVKulbqqZnlYbuVSr6V2fxYlnmTwLax5PlM6xYNs2JrxcG8Y1FANvtfGhwceekcyg7rWIodVCwueQ05cGVyGZGsdZNh3haGDWRS4iaHEb45FCCPg8kem4cy5LqqfQvwW+MG2Hj3AkabUfUWCcCjazwH2mYMOj83nw0JvH4DJ5L6jhLoj6YxxLLKNa5hnMiRcJ5fQ4hHy/E6u0FOL43H6/BMzkQk8a33k5cV+vpadhL6+VvOFFTjck7Ewj/2IWY9+dRPdmUU3ZubwT0o5AYmiITaYlJoCtVRIdEQrtKTqtOTXdRDr3VxXTXV9C1opyXKxbTXZpHf1UxvcW5dGSqaJOIaUpK5kliIk/iE7gXGs6dgGCehEVxOyGFDn0efbu38d3DK3Qe2M3j8kIe5+t5qtXQolDRmJTOo1gFN0LiOO8XwLpFTqQbmRAz3Jyo4caIJliRNcuLkPdNUE33omPNZk5n5lDrEobPu9MJG2pBygRHUsbZkTnDntNSDSfEiVxQKmleWc71aiXXSqXcLlD9poA+myV/M2Htx4bBY6oMTmbJOKY2lG7sz5CyOyWNy/kaOrYW0n8gj5fHcunan/lGQPcdzOblkRK+P1HJNxUpJAbYkBBoR6S31V+zMf5N1oTL2Am4j5uA+9gJZM+zYKulG1ut3fnaxJktC+055OzK3dggWjTxdBaJ6KiR0bVcxvPlMl6vUNC3RMrLZVK6SpNpUiZwPiCA1fM9qZpiQ+0MG5bNtjVMJbT0fFML/aOAbrD2psHWk73WHuy2dmGvrRMHnZw54ODMQVcvLkZE0KTNoLVIRqM2gz6tjr1eUUQOmkHiJ674vWPPioAy/EfZIZ8fR/rMaNwH2SH7Ko1in3wqg8opctGTOiOMxIk+xH/qhu+gBfgNNn5j9Rj8oRmBRnPxHGaG6/vz+DYsg3XWljSVF9G8sYo7h+q5v2cT0SO+oHK8JUetnbjqbRAQd/zCeBoez9OoeFqSUugQi+lUKmjTKGnPzaK7OIf+8kJeVpXSU5ZPb0UB7SU5dBVm05alolkq5lF8PKedXLnrF0RHYirNMYncDQ3nqk8Y51x8eegSzCO3MK6LJPRt3UBTeQn39SqeyrN4lCjnaoSIvT6phI9YiNdwU3w/NCFwhCnJnzuROsGW0nmu6KZakzPdCc0kaxSfWhLwziy83ptBkX0oN8uWcFYs5Yo4iRuaeG7oUriak861YhWXStVcLMrkWqmOy0UGMX2pUMPlwizOFWRxOlfNyWwlJ/RKDusyOaJXcUirZL9axW65nG/TxGxKSGN9RDQtB8v4twdf86eHDfxwbxWvby1j+9J0koNtSQmxJdbP4h9mTcwfYuDEog/HEjp2NjlfmKL51AqJkSnaMQvYZeXMo9QYOvQi+ioV9C5V07NSTdcqJf2rMnmxLHMgAx3LaS8Pls+0YtlUJzYZB7LV3J9tdt40OBs4sdcunjIHBetzj1AWVIFsVjRr3HRIZkRQGVJF9LQIwiYFEzghgJh58dTGL6fALZuAj90JHetO4Cg7Ij9xJMDIEv+R1ngNM8dt8EJUxjH4DJ5LyicWRA6eS61FJGtdwjieIuakWkvwRwuxftsYx3fn4zloJrvDk9ju68Y1lY7unXtovbiVI5XlmL/3OeEfuxA7aD7VU0w5OXBS+XNOPItOoDM1nQ6xmHalnDatmu7CbHoGONG5vIwXyyvfcKK7OIeOTBWtYjGNiUm/5IR/EI/Dorgdn0K7Po++vdv57sFlOvbt4nF5AY/z9TzJ0vBMrqQxKY2HMXJuBMdxzjeAtcYOpBmZEP2hGVHDF5D+mSWqqe4EvrMQ7Rxf2ldv4nRWLlVOwfi+O4OwoRYkjXcgeawNmTPsOSFWcUKcwHmlgsb6Mq5VyblWIuVWvvKXGehsJRdzFG84ceYXnBBxIlPKUZWUw3IZ++W8LXEAACAASURBVH7kRIGBE337c3lxNMfAiUOZ9B00cOLFkWK+O17JNxXJJATYEB9oS8Rfx4nf4/cQ/lkQhD8KguA1cB0m/H+rbesR/pvatpzpthRMdaJwmju5k1zQTbRBMd6BVCMrNB8Zs8vOnQepEbTmiGivUtC1TEX/EgV9yxS8WKnmRW06/XnxtIiiOOfhSd00M8qnOrDVOYVdrslsNvVju30sFxS1nNCvItcplYhPncmYGcpu6QbSv4qlPmoZjh864T3Sl7S5YvzHh1IVXsc3mn3UJ9UTMNaD8NEuJIz3IHmKD75DTPF+34zAMS64vDsPzSwPZFPMiRm5kIyxXmzwSOKyLBvNZ8YcTklkjzgD90Ff4vueDTGj5nNFnMpe7yDatm7h4ZnttF/9lqCRZvgOXYR0qiei4bNZPs2c41aeXHIO4JZ3GA+CwmmMjKYtIZn2pFS6ZDI6NSpadWq6irLpqyjkRa0hq9a9rIz2qkK6KwroyNfRoVXTLErnQUwMDyOjeRoTZyjF8AngsX8oz8KSeZylpXf3Nv7zzmWenz5Kc3E+bfm5tGZm0SiS8CghhScRUTwIDOGqbxhL5jgQN9yEyDGWpI6zQDrelKIvfQh+fz6J46y4W1TNYbGKryMzCBw+j9BR1kSNsibo3UXU2ntyUZrIhfQ0LmeLeFip5X55JreKFNwqUnC9WMXVQoPxvcGmLusXXrcnMqUc10g4maXgqFLGMZWcQzIxDSmJHJCncX9FLj0NBbw+nMPLg1k835/F830a+vZl0n8oh1cnSvn+fC3PL2/kxZVN9F5Yx6ODtX/Nxvg3WRPbHP3Y5eDHDltvGux9DZM6bT34xsqDjcaONFg6cjXElyZJNO3ZyXRXy+larqBvhYzn9Sqer9Twok7G8+p0WnWJ3I6PosHWj5pp9lRPs2bFlw6sNnZ6U8bRYOPNXgf/n5oKzVzZY+3JbiuDH/RBRxd22jtzJFLNHZWSp4oUejQZPM9WcC49ic0RcejnOeMxyBjR7Dh0JiICRtmRNC2IqE99UZuKif0qjproZYTPjGarcgsy8zSK3DXYvzOPwKEmb+y7goaZEjHKGr+Rlnh/ZI/HmAVcUhWy2tKZng3raN+9ko4zu6lPlxH30VeUT7TimJUrN7yCuOUTwuPQWJ6Gx9MSk0JHQgrtaSI6FHK69Vm06TV05+rp0KrpytXSnpNFb0kebXla2gsMNnaN0gya01K55ONLo18QbTHxrJ9jimbIJPZaB3DE2pGDNu7cSpLTvGMzXdvW01ZTRqNWx1OxgqcpGdxNkPCtZyKRQ03wH21L8Md2BBiZETvOlvQvXMif60yliRv5cxxQTbRA/LEJaaMX4T/4K/yHz+GAtJij6RLuZom4n53KraxEbuSIuFGk5FKpkislSi4XZf7ic6VYy6USPaeLVJwsUHMsR8MRfSaHdWoOZMrYp5azV6lge4aEzUnpbAhL4OGmQr6/uZI/PdzJH+9v5k831/D99Tq+u7aC76/X0X5q8T/MmsieZkPBVCcKproNcMJ2gBOWqD8ypsHWlXvJ4bRki2hbLKdrmYq+Wjm9SxU8r1fxojadvrw4WkSRnHVzp266OWVT7dnsmMwutxQ2m/jT4JDA6YxKjmrrKXITEz3BFdGMEHaI1pAxP4Hl4TW4jXIn8JNgJAsVhEyMoiJkGRulO6mNXkrwpz5EjHElfrw7iV944TfEBO9BpgSMcsb1vXmoZrojnWxKzMiFiD7xYL17IhelerInm3E4OZGGtBQ8Bn2Jz7tWxI6az4W0JPb6BPNs8yYent1B6+VvCB5jjtfg+WR84UrGiDksm2bOcUsPLjoNcCIwnMbIKFrjk2hLSqFTJqNDo6RVp6azcIATNaX0Limle2kp7VWFdA1woj1LTZMonQfRMTyIiOJJdCz3gkK57R3AI79QmsOSeZylo2f3Nv7z9mX6Tx6huTif1rwcWtQaGtPFPIpP5kl4BPcDg7nsE0rNLHtihpsQOcaClLHmSMebkTPDjcB355I20Za7RdUcEavZEJZGwPC5hIy0ImqkNYHvLmSJvQcXpQmcT0/lcraIBxVZ3CvTcKtIwc0iBdeKlFwpUAwI6F9y4oxeyXGNhOMayUDmWcZRpYyD0gwaUhI5qEjj/oocehryeXUomxcHs+jfn0n/PvUbTrw8Wcp352vpv7yB55c30nN+7V/Lid/j/8BIEwRhxMD34YLhOO2FIAhGA7+9Jxhsh3IFQXhbMHRXtwi/7K6WCoLwTDBYEv1BEIR8wdCB/We7q7WTrSiZ6UbxDE8Kprijn2TYGNOMrFCPWcBeR0/uJoXSmi2iq0b13wtoN2/qvrCidqIZG0z9OBmrZ7OfmCsF69kYlMm++MUkjHEmfqwXm6KrWBpQSF1EFf6feOE/3h+NXTYyay0+n4ezUb2byvg1JCxIJNNKStLn/iRP8CZynBOu787H7Z1FeA42IXWCA9v8kiieaUHisEVUm6ZxJE1D56qlVNu6o5lsxZYYGc7vfIXTP81hfWAi+0JCOBIfy/NT+2m/ehqFjSMeg77E8V9nkva5M6Lhs6mZtJCjFm5ccg7grl8kD4LCeBgSRktcIq0JSbRLJG8EdHe+ns4cLf1lBYas2uIiOivyaS/JoSNfR6tGSWNaKveiorgfHsmjyGjuBYS8cRe4GxLLE1UmPRvX81/XLvDHO5d5lJ9NU7aWJoXyjYC+Hx7HnaAoDjv5UfCFNYFDFhEy0gLxRDu0U+0pnedP0HvzSBpvzYPSJRwWq9mZrMH1D1OIGedI8DBTgt83ZWtIrEFAi9K5VaTgXpmGu6VqbhTIuFEg+6sFtMHrWcwRhZSD0gx2pSZxsUhJ944CXh3K5fWRLF4e1NG/X0/PAT19Rwp4cWYxL88v4dWllW8EdM/5tTw8UPNbG+PfZU1stvFkj1MAe5wC2GbtybfW7myxdmGLlRubFjqxdZE9Jz09uB8fQrMylp5SOT1LNXSvUNNXp6K/Xs2LehX9S0R05iXRmBzNKWcf6ud6sniyFcvn2LNyviPrTV3Zau78xs5up7XXm9HeO8xc2GnuyEFbC3bYunIgREbn2lpOprnzKCOMVlkaz3Iz2eDizPnkDCKHz8H+D8aUOOmIHutGxDg3NGZSlOZS0oxTSTFOoTKiGn1QKZvU31IRWUHodH/CxrsSOMycgCGL8P9gIUHDTA1WXiMdcB/igN2Hs7lXuIRtHn48Wr+Ux4dW0Ha8gchJlkR8aELuOFP2WHpwxc2Pm97B3AuI4FFIBE1RMQYRkZhCh1hCu0pBo1pGu1ZNu1JOe6aSNq2ajjwtbXlaWvO1tOZoaJJLeJYh4k54BJc9PXgSGcJV/zBuBEXRHBnFk7Bo7kZJeLlqPe17vqZj30baV1fwTJ/Jgww1jzLEXIlNZJ1TNH4fWOM9woaw8c4EjDQnfqI9aZMdSJ9gRvZMC/Ln2KOeaErke5OptgwnePBc/IbOo8QumgcVddzWKnigS+WONpkr+WLOl8m5UKbgcpmCy0WG0o3LhZlcKtZyoUjLuaJMTpcoOVWo4XiuhqPZGg5rNQMCWsYehZztGRK2pohZHRbP5cXZfH91Lf/59Gt+uLuaP95Yyeury3l9dTmvriyj/UTlP8ya0E62oniGK0XTPcif7IZuog3ycfakjrBENWYBexzcuZMYRos+nc5qpUFAL5HTt1TBizcCOp5nokjOunpR/4UVNRNN2Wjmx7GoLDb7ibmQs4otYTr2xFWQ+JErcZ94sD6igqWBhSwNLiNovC9+4/xQWGtR2mcTPC2WjapdVMavIcNSgsZKQsJnviR+5kn4Jw64vrsA13cW4jnYhOTP7NnqnUDJLEuShpuyeFEKh1PUdK5aSpWtO1lTrNkQno7jW7Nx/qc5rPWPZ39oGMeS4uk9vodnF4+jtnfB7f05OL01842Arpm0kCPmrlx08ueuXwT3Aw2ceBabQEtCEu1iMR0/JlrydXTmZNFfWkB3WT49iwvpKM+jrTib9jwdbRoFjWmp3I2M4t4AJ+4ONNHe9wniTkgsj1VZdG9cz39dPc/3ty7yuCCbRr2WRoWCpwMC+n5YLLeCojjk6EfeJCsCPzAheKQ54om2aKfYUTDHm4B35pL6mQ33S2o5Ks1ke6IKt3enEvmxHcHDTAkZbMo3IbFckCRwXpTGzUI5d0vV3ClRGRiRL/2VgFb/bwL6DSfUBk4clks4IBGxKzWJS8VKugY48epwFi8OaOnbr6f7gI6+IwU8P72Yl+cMnOi/ZBDQ3efW/DlO/B6/h7BHEIQuweDL2SEIQoMgCHN+dc80QRBOC4aMQ6cgCFm/8Rz9wHN+EP4Kf8+8mY7kTXYkf4oLuZOc0X5uTcYYKxKHmSIeNosGW1fuxAfTli2iu1Zt2BiXKehbruTlKg0vl4h4np9Aa0Y05938qPvclqWfG7NitgV7A9LYF6Fjs4ucA375HAqqIGtyONKpESwLKEAyNw7JgiQy5qWSNCcJsY2KJfFrCZoaR05QFTXijYgsMqj0K8JriCWho+2J+tQZr8Em+A61wn+4Ndo5/qww96dkhjUrbZL4xk1K2XwL2lfVsDE8huC35hA9xgL7f56F29tfcEyq4FsPX+4vLaHtxHa25Rfh9IcpeL4/F4/3vkQ31x/dZ6Ysm2zKAVNnLroEcNc/inv+ITwNi6Q5Jp6W+ETaMjJok0lpVsno1mfRmamiQ6ehM09Lb1k+nUU5tBXqac/N4plCytOUFG6HhnEvJJzHEdHc8Q/ippcfd7z8uRMez2OZmvZly/mPS2f509PbPC3KpTlHT7NKRVOGlMeJqdwJj+F6cDTbrbwQGc3Ff4gZwaMskUyyRz3JmryZHnj/6yxiPjLlUlY+p9RZHFHk4j14FqGj7Aj60ILkj2w4mirmgiSZc6J07pZncrtEza1iFVfzZVzJk3C1UMWV/IHO6lwNF/TqX0xcO5kl40Sm1OD3LMvgsFzKvgwRRxRinq7O48X+HF4d0vHqkJbn+3X07c+l+0gR/acW8/pSPS8vr6L/8hr6Lq3l+eX1PL+8keZjvzk04u+yJqQz5rPDzosGB883bhzf2riw1dqVLWaufGPqzAFHF25G+tMijqUnV0JvjYau5Wp66lQ8r1PSv0rNy+USnpem0iqL5bpfIBsXelM1xYalMx1ZOdeD9abObLZyMZRx2Hizw8qTXTbe7LZyp8HCjd2m9uxc6MyaBa60LqvhP45Vcy3BkidpIXQoU2iRpbPbMQDtNFdc356P54euqM2kpM1JxGmQDTLjdPzGeKK2VuAz1pts1xwqAipYlb6OLfpvSTFLxGWIKf7DLQkzsiB8lMUbGy8fIysChznjM3ohlzSlHAqNpKthG63H1tFxZAfOw2cQN94NyUhTlk835bSt4bTmtk84D4MjeBRqOLF5FptAa2oanVIpnXIZHUq5QUCrlbRnqWnVq2nRq2nNyaRJpzKUccjENKel8iAiise+AdwNCuVxYBiNsfF0l+TxqCCHxqpynh/fQefhDfRtqacxX8+DjCzup4u5nprBEpsQfIba4WVkR9inDgSMNCVunA0ZEx3IGG9F8TwHcqZZULnQE+m4hWhnOJMyzoqgD41JnGjHpfxaruZkcFsn5aFeyrXsDC4US7lQbhDQl4o0XCzO5kKRjnMFhvKNs/kazpaoOF2k5kReFkf1Og5rtezXyNmrkrBLJmGHWMyWZBFro5I5W6bi1bm1/PH+ar67U8vLq4t5dXkJr64s47tLy2g7XPoPsybyZjiQN9mRvMm/4sRQAyd22rhwOz6ENn063TU/caL3x0TLEhH9+YZEy1lXH+on2rJ0gjErZg1wIlzLFjcF+33yOBRUgXZyOPLpkSwPLEI2PwH5ojQkC9JImpOM2FrJ4sg6ImankBNUTa14ExIbGcWeOXgOsSR0tB0R453wGmyCzxBL/EdYo5juSZ1lEMUzbKiziudbdwnVpnY0LatgXXA0oX+YS8zHVjj8yyw8353CkQwZ2zz9uL+8jM4zu9iWV4TTO1PxeP8r3N+djfZLX/S/5oRfBHcHONEUHcezuERaRSJaZRKaVTK6dBo6NAZOdORp6SnNo6Mo28CJnAFOJCcPcCKMR+FR3PYL5KaXH7c9/bkTFmfgxPI6/v3SWf74+CZPi/NoytbRpFDSNJBouRMWy7WgKL619CRtxFf4fWBq4MREOzSTbNBPdcH7X2YR/4kZl7QFnFZrOSjV4/PBbIJH2BI0zIKUT2w4mpJh4ERGOnfLMrlVouJmsZKreVIu50q4UqDkcr6SS7kqLuVqDPMA9D+Ntv85Jw7KMjgsk7IvI52jSjGNa3J4PsCJl4ey6N+no29/Dt2Hi+g/VcXrS/X8L/be8znqa0vU9lt35sw5tsk5GAwm5yQJZamVcyu31K2c1VKrc1ZEGSGSAKGEyGByzmCiRLbJUYlkEAKD7Tln5n2rnveDZBzOmXvm0x3fKq+qXf0P9NrP81t777XeXKzn9aUGOpvX8PriOl5fXM+1HX88Ivwjfh/R+6OPPiJvqjvls/wome5DyTRvTGMdkQ11JH2AA5m9prDL1ZdbSZG8yFfw7XIDL6qNvKox0Flr5LsGM9+tVPC2JJ0ORQJNQiE1U6xYPMWeKosANjrFcSrczHofBceSK9kVW0bm5/7kWCQjnRXL4uBi8lyNqCwVqCyVyN3VpNkoiJqQQoajntrsLeQG5FIeXIh3Pwckn/vg08uStC98EQ1yQjjAicwpIcQOnkfRLGe+1uiotXMgZ8IMqoIT8B0yG5++FgQNcSak/zxWu4dxMELE0SQpXaf3cnp5GaLB0xH8eS7hfW0I72dBuWMkBeNsqJvixK75bpzzCeN6cBT3IqNpiYrjQUw8jxKTaZVm8FSl5KlWw1O9lmcGXfdd5zwTL0oLeFKYw7PiPJ5kG2hRKXiUlsblkDBuhEbwODaRRzEJ3AoXcyM0gpboVNqUep6tWMGP507ytwfX6Vhczm29lsdaHS0KNfeS07kfl8DFiDhW2wYi6TWTyEEOhA2Yj3KCGwUzfTCOdyf8L3OJGWLNV+ocmvJyOJ1bQMo4JwJ72SP81JZSO3+aNVlc1GRw0aDmm4psrpebuFKi51KRluYF6l+9qv7pHvQvBfpsnp7TOVq+ylZzRKPksFrDPnk6l8q0vN5V1l1VOLKAN4fyeX0gl67Dhbz+ajHvmqv57lI9XRfredlcz8umGjqbG+i6tJ7WE/+w5+3/SE70+td/Zad7ALs8hOzyELLDzZ8vBT5scvJmg70P66082GrrysXIUB7J4nhukvFqsYGXVYbuMcbVOjrrTLyp0dK1NIvn5lTuJMWxx13I8umurJjhQ81cIY22vmx09u5+RCgIYJ9LALudfNnl6MNuBy92W3uxda43q2fY8rcNq3i6s4hvly+hfXExrYt03CrNJ2a0gMC+Lnh+KsDkqKHUt4DgIX749HEjZmwEWRbpyK0zWRy6GIPATMb8LIpCyzAG5LI9fzteg+zIGGVH0ignRP0tiRhiT+gQJ4IGORLQy5HEEY5cMajYLhHzavceHp/awLX1a3DuPYmUsX5kDZlH5QQbDjn4cc49lG+CY7gRKuZuZBRtsYk8TEiiJSWNdpmMdoWCpz0S/cKg44XRwFNTdyX6Sb6ZtgIzzxZk06bX0KpTcV8t52FWJo/T03kslXJPr6RtzWKeHtrAw4ZKXhzeyKsT2+ncvZn2RZVcl6q5l6XmdqaWFVYBRPa3I2yoF5LhAsSD7IkbbI96ghfSkbZUWvtTMkNAhZUfmcPmoBnnTKVTNOK+s4kZ7ML6GDXfVGbzTYGC+/karpkzuVSu4/yi7nvQl8uMNJXm0lyWx7kiM2cLTZxZYOZsWQ5nSrM5VWjmWJ6Zw2YzB40G9utV7Far2aPWsylNTmOClOMFKr4/u4Z/v1PHv3+9hB8vVPJDUxVvL6/i/aVVPDvxu5CFD5wom+FL8TRviqd6YRrrhGyII2n97cnoNYWdLt7cTBTzPE/Ot8v0Hz4mO2uNvG0w8d1KBW9K0miXx3NBKKR2ynwWT7Fj+Tx/NjrGcjLcyCZ/FYcTK9guKUY2JoBcyxRkc+KpEC4gR6BHPjcLtZUKpYcWmYOW+GkZZDoZWG3cRK4wj0L/XLz7ORA5yhO/PvNJHetD+EBHhP0dUc6MIHmEDUWznbmiVLPGyYWCKXNY7BeF39A5+PS1IHCQI+EDrah2D+VgZARHk6S8OLad08vKiBo5B9ePLQjtY01Yn7mU2otYMN6O2imO7JrvxlmfMK4FSbj7jzih/DUnnvZw4nlJfjcninJ5kq2nRaXgYWoql4ND+ea3nAiJ4HF0Cq1KPc+qqvjx3En+ev8a7ZVl3NZpeKTV8liu4m5SGndj42gWxVFtHYCk10wiBjoQMdAa5QQ38md4YxjnRthf5hI39GdOfJWd38MJO4S9bCmz86dJLaNZLeWiQcU3FdlcKzP+zIkCdc+Y7p9Z0ZSv4+wvOPHTVM6TJhVHNAoOqdTsk6dxuVxL566Sv+PE6x5OfNe8iu8u1vO6uZ5vm+p42bT6AydGDhnwe8iJP+KP6HldPduV8tnulMxwYcEUR8xfOKL6zIXkPjZk9ZnGbje//7ZAnxMKWTzBhoppgewIyuaitJytHmL2+iSwJ1BOo7eC7NmxlLho0NllUBe7HKVlBunTU5HOSKcmq57AsRFoHfMw+hWzRFlPjbSGhOnRxEwIJmKkBymTg4gc6ERIP3tChjiRNcOPk5oCljn6UuUQwN5EJVkT7Ikf6YLwU3sCB9th86+jOFG8hKaiYg6lp1EviefEklKayhYS3WcWgj/ZENHfnsiBViwSSFg824PlY63YZ+dNc0AkN8PjuCOS8Egcw+P4JNpS03mSJadVJuOJRv13At1eYOZJUffRdLtJR4tKwZ2EBE55eHFPHMOT5HTaE1N5miLlTkQUD8MieZiaRueKJfzt9H7+824Tj8sKuWPQ8UCt5n5GFjfjk7knieRkUDTysa4ED3AifKAjkQOsUE5wJ2+6F8rPHJD0tiZuqBP7kgzcWLiI8wsK0Vl4EthnHr4fz+LL6HSummRc1KZwY4HuHwr0hTzt361/LNA6DquV7JdLOaJL4fEaI98fKeWHE92b47ujhbw9XMB3R4t5d76Kd82reNNcS+eFWp6fr/ndCvRHH33EHq+gD9XnHQJfdrr4scXRk01Ovmyw9mKTlSsn/P25mRLNI1M635Zp6Fxm4PVKI101Rl7XGXlTZ6RrlZInhSk8VCVzOjiMmnleLJ3ixqpZ/jRY+rDZIYCdTv7scwlgv6uQnQ5e7LD3Yqe9FztsPdht4cdWi0AqLAScKSxkgdCf1v110HKSTUYlKlsxEcNF5Aj05LkaKfTIxrePO6KhAfj0d0E6L4H02YkkTE9geVIdOwuPonDSoo9cTLV+E4sjTNQHJlPqEIF4kDURg2wJHmpP0EAH/P9shWq8O6czUjmalMzbnYdovbCVzcp8/HvPJay/NdlTfMkZOZf1s5w45eTP5QAxN8NjuS+OoTUq/kO+dGTKaMvI5KlCyTO1qrsardPy1KjjSXZ33jwryOZ5npnneebuqx45Rlp1atoVclrkWbSZjDyvW8X75qN07trIvbXVvD9/jJf7d/Jt7SrOpqVwNTGD24pssqe4EDnYnoghjiSN8kQ00Jr4EfYoJrgjHWlLiYWQnPHWLLcNxDzJiezJzpgmOpIydCaxA51Qzwzk9rJFXCvM4m6JifOGDC6WG2habKapwsiVciPni81cKMnjbGEu54q6f08XmPiq2MSJAgNHc00cyTZz2GzicLaePRoNOxQqNqbKaExIZ5M0nTcnqvj/rlXzt0uVfH9+IT9eWMbby6t4d2kVL44t/d3kROGsnzlRMLmbE8qRLiT3tUHWZxo7XX24mRj5QaCf/0OBTqdDHs85oZClE22omCbkS38jF1JK2OYZxR7vBPYEyWnwysI4M5oiJxU6uwxWRy1BYSElY2Y6adNSWSldTdAXkajsszH4FVGZVcuq1FWkzIojbmIoEZ95kjwpEPFgZ0L62xM82BHZdF/2pGpZ6uDDSqdA9iYoUE52Im6kgIBP7RAOtsPhL2PZZy7mwoJCDqalsTY2mZPLyjhTWExs/7m4/Jst4f1tEfW3YKGTmMWzPKgaO599dt40BURyIyy2+6QyMprHcYm0pqR1d2ySZX7gxNOfBDrXSHu+iY4eTrQZtbSo5NyOT+ArL59fceJJcjp3RFE8CIvkYWo6r1Yu4a9f7ec/71zgUVkht/VaHqjV3JPKuBGXxB1xBMcDo5GPcSWovyOiAd2t6ZQT3Mid5onyMwciP7UiZpAd+1OMfFNewdmCArQWHgT0movfJ7PYGpXCFWMmzdpkbizQ8fXC3wj0AjUX8jR/z4k8PWd/EuifqtDZWg6rlezLSueovpsT74+U8P3x4m4+9Ej0d8eKeXd+Od81reJNcw2vLtT0cOJngf5pf/4fzok/4o/oEegZriyz9KNilgclUwXkjnXAMNoR2YB5GIfM4qBHKDczU2jLU9K5JJvXVdm8rjbzuiab92vy+b5GT9dCOQ+USTRFRrPONphtPqls8UlkrUMA2wT+7PNP4ESMgUqrODI+D6TYSUd5kJllwQWoZiXi19cNtUDHopBKRJ9HEvq5iMLQhahcjexddAzfcUJWpywjeJAz4kHOxA1wQDklEO/ec4gc60HieH+EfWyQjHKnJliHemoAPh/PwfsTG5z+n0m49/6C81VLudNQRUtDFXc3L+b6khL0M20I/ctUQnrbE9Xfnsi+Fix3iWX5HC/qJzlwxNqJ6/7B3AmN5HZIBPdFUTyKjqcjKY221HSeyuQ8VSp5rtXwrf7nilpHTveR9OMcPR1mPQ8VMu4mJnLW25cOcRQPY1I4FxDO7aho7keLaA4KolUSy5MCEy8ON/L63FYemo08UGu4L1fwMFPOrYQUronFzRB0PwAAIABJREFUbBAEIhk0n8DBLoQNcSJhiA3yz+1RjbNFOdaepAHWRPeypTFMx/2qVZwy66lwiySyjx0Rve04EK/kplnFRVUid0qMXC83dY8o/lUF+ufKwk9DUy7kdj8U+eXY7hMGA0c1BvZkZnI2X87zLfm8P5TPu2O5vD2aT+fRQl6frODN6SW8Ob+KzgureXmhjpcXG3l5eQMvmzfysnkjnZc203Lyn7bs+j+WEx999BEzBwzmgHcIez0C2eXqz04XP7Y6evGlawBbHHxpnOfCThcfLsVKuK9N4Umhks7FBt6sMvN6tZHX1Vq+a8jmXZ2OzkoZbeY0riXEssUxkFXTPFg+yYnVM92on+fOWitPdjp4s8Pem11Onux0dGe3syfbnFzY4ezPwmmeJAy1ZoeshKM5ZXy7ZTnfrFlKxOh5+Pf1pFhYRn38KuKsslij30FVzEpSp8UQMtgd8XBfNJZpZFpKSZidTIplOlLbDKpSV+I/zIXlvjJOKwpY7hlG5uc+hA60QjjEHo9PLPH9eBa5MwTsF4vYG53Ai/OH6bhykAxrR3w/nU1QbytK7OLI/8KW2kkO7LL+uRJ3WxTFw8hoHkviulvRpaTzJEP2QaCfqJQ81ajp0GhpNxhpNZp4mpv7QaA7zHraTToeGdQ80shp12t4mp3N0xVLeXN6H53nD/P+4DY6GhZyN1vDE6We445+fJOcyA21kbTR1kQOExAz2IHUkc6E9bMkZpgdKSMdiB04B814Z8ot/Smc5UXBDHcM4+1Rjbai0j4E2RgPYgY5c0Bp5l5VLvcqcrigz+RqmYGvVyygqcLI2TINp4v0nC3M/Y1Am/mqMJeTBfkcNncL9CGTkf16Lfv1WnYolGxIlbM2UcaauCzad5Xy4/kq/nqxkndni/n+wgq+v7yKN1eX8+RE6e8mJ4pmuLDMwpeFM90pntLNCf0oRzL7z8MweBYH3EK4IU2iLU/Bq8VmOn/BiXcNuXxfo+f1wiweKJK4IIpivW0IW72S2eKTxFoHYQ8n4jkepWexdRyyMcEUOWgpDzKzNDAf9exEAvp7onLWsihkERFjIokcH0VRWAVaz2x2lh4kYEIwy2IXEjrEBfFgAbED7JFP9Men9xzEYzxIHO9HYF9boka5szJAhWqKP76fzMHnExtc/2UawqHTaVpZxe365TyuX869zUu4trgY42x7Qj/u5oS4ry2i3nNZ7Chh+Wwvaifac9jamev+wdwOifiZE1HxtCWl9nAiiydKJc80al7otLww6nli0tORY6Ajv5sT7SYdjxQybickcN7Hj3ZJNPejkzjrF8pNcRR3JSIuBgfRIo6lY4GZF4cb6Ty9hQdmAw9UGh7IFTz4wAkJ65wCEA+0InCQgLAhTiQOs0M51gH1eFsUY+xI6DcfyafWrA3Xcm/ZCk6adJS7iAjvZYO4nz0HE5TcMCm6OVFs5HqPPP+yAt2Ur6UpX9czrrubE+dzdDTnmTiXo+eMScNXBhUnDHqOqHXsyczgXIGc51vyeHcoj3dHc3jzgRMLezixks4L1d2caG7k20vredm8gZfNG8iI8vtDoP+I3030/uijjyib5sqyWV4smeHBwskC8sfbkT3OAc1IS0rGWXFKKOKeIp2OAvU/FejmCAmb5vtSPs6O1ZY+bLL34ZBXILt8YtgTLCNnohD99GjKBEZWi4pYHVKEdm4Krr2c2Zi9E5lFFqXCMuKnJ1EasRiDdx6Hl5/Gb0IQO4wb8etjS+QgJwosRWSMd8X9k6m497IksK8Ao1U6u+SrMVmICO89B/FwZ7z62OL4r9NYHSfndmM1bbvq6djXwMMtDcSNno7ok9mE/cWS8P42JAx1QdLfkmWCGOrtQtg825OjNs40e/hyIzDsfyvQzzQ/3e/UfRDoJwVmWvN6qmhqJY/S0rkcEsLD2EiOeAWQP3gKa+f68qWlL185efPYR0JHppqu9bW8Wl9LR14ej7Ra7snk3JfKuBmfzHlJEoaxNoQMtCdwqDtRI1xIGW6LYbI7maMs0Ix3ImWQLZJPrClxiObBimp2ZaRRG5xK2MeWaMe5ck2fyw1zJhdN6Xxdlv3fFuivjErOmrV8ZVD9QqDVHFRmcUAp5doiLZ0783l/OPeDQH93spR3Z5fw/sIKvmtaTVdzLZ3NDXReXserq5vovLSZzkubeX15y+9OoD/66CN2ufqzy9WfPe5Cdrn6s0PgyxZ7F7Y7+7LR2ost9h6cCg3ldlYCLTmZvFyopWuFia5qE69X6+hqyOZdg5mu5XJeLsikVZ7GCR8R1dO9qPzCnppZ7jTM82SjnQ87HT3Y5eTBHoEXe128OejhzxFff+qtrNCPdabMQcSVgmV0rVnPw8YVpE11IvUzEcF9vPDu50zc3BQazLtZHLeCPG8T8ZPDEA5yJGJ4IFnzMlgYVEKel4n61JXUpy7Ff7QL/r3nUmgn5mjWAg6nq1gvSie470T8+tvg+rENQZ/YkDPTgcPiSI4lp/Dy9EHazp9C2GciQX0sCO49F+10b4qmClg5yZGtc1054x3O9ZAYboVEcjdMzIOIaFpiE+lI7smZLDlPFAqeqjR0KDR0qHU8MZhoNRhpz87heZ6ZNnN314LHOhWP1Qoe6VU8NqvpyDXRVlHMt6tKeVJqoi1XzaPEFI7aunHcLYhToQk8lEq5r9Qj/cya8KECooa6kDrElrD+Voj6WZA83Ia0YZZkjbBghXMEC2Z6UOcZS/4Md/RjramY543iM1ukI33Jsw2mpXYRN0s1XDJlcbVIy/WFJq4sMtNUbuJMsemDQJ8tyudMUSGn8vM4lpvDifw8juflcths4oDRwD6tkR1KNVukWWxIklEnSmKZj4RTJUrenljCf16q4ofmJfxwcTU/Xmnk3fVaXh79XUxd+8CJpbO8WDzDnfLJAvLH2WIeZ49mhAXFX1hxwj+cu/I02vNVdC42/4oT7xryfhZoZRJNEWI2WvmycLw91RbebLTz5oCnkF3e0ewJkrFgWij66dGUOhuoDiukOrgQ1awE3PoIaNRtIdNCRq5nPhHjJJSLl2LyW8DBpacQTg5lg7Ie/352SAYLyJsbhnScCx6fTMOjtyVB/V3Qzk1mh2wl2ZaRhPeaQ+RQx25O/MtUqmOzuNVYTevOOjr2NnBvYy2JY2cS/sksQv9sQVg/G2IHOxPZ14IlTlHU2QSxcbYHR20EHzhxK1jUI9BxtCem/swJhZKnahXPejjxxNgj0AVmWnvu/reoFTxMTeNySAj3YyI44hlA/pCprJ3rw1YLX047+/LIR0x7porX62v4dm017bk5PNRouZcl5156JjfikjgTmYBurA3BA+0JHOJG1AgBqcPtME5xJ+tzK9TjHEkZaIv4E2vKnWK5V7WSPTIpqwKSEH1qiX6CB1e15l9x4lr5bwR6gZrmAu3fc8LwMyd+Fmg1BxQyDijTuV6ppXNnXjcnjuby5mg+b0+W8t2ZJbw7X8Xbpmq6mmt51dzAq0vreHVlI68ubuLVxU18/Jd/+0Og/4jfTXRPmJrqyvKp7lRN82DxRAELJlqTP9ke01grls1yoClCwiNtJs+KdLz6zcb4W4G+FBFJ9QQrqqcLWGPlxS5nbw67+7DXP4H9YXKW2iQgHxdKhVs2hpmx5M5NRjLMD62bFkVwPuIvolgsWkrwqDCWxldj8M5jcXo1xuBcths34vbnufj+aQ5R/WdyXFuJdJY/vv0d8PyTI/Gjw6mRFCLqZ0Ha564kjfNBOiOScpdUjqaauKzTcGtRNndqS8jz8SPo05lE9/IiabAvYf3nETPIkeiB1qz2SqbBPoQtc7046+LNJS9/7oaJPwj0438g0E/Vqu6l0/xKoNsLuqtp7To17bIs7kiiueMXyOPoZO7EJNKSGM+tCH+O+YdzNySRmylZfL99Mw9XLuVJfj4tOj0PFSpup6RzPTqenYHxSPrPRvS5H4HDvYkb7UbaSDvyZ/uTNnwW+kkupA2xR/zxfJSTvXi4cjVHtSq2xGmR9JnPaqdQrmmUXM9J42K+jMuLCv7bAn3WrPnQGP8ngT5pVLJPnsoRXRr3qk283ZfL+8PmDwL9/ekKfrhQxY8Xq3nf83iw61Ijr69s4PX1LXRd2fph/R4Feo+7kH2eQd3TCF382Onixw6BF9sFnmy192WDtRsHPHy5ExfDY1M6z4pVvF5mpGuVidfVBt7WG3lTrePdShWdJRl0aNO4GBZB/Rx/lk5wYvU0Z9ZZevClgx+7nH3Y7+bLQQ9/DnsHccDZkVUzZxHzqSWVgmQu563knLGczakGVkXp0c2LInywgKjRQnz6upE1T8bC8IUEj/BjafRSvPq74/dnO8TD/Ajs44J4hDcGmxT0timIR3qQMc0Dvz9NIn2UgE0hWSx39ON+RRnXSwsp8/TC+8+zCe3lzHLvKPZGijmVkcabs/v4Zs16PD6eQVA/OwI+mUVo72ms9U9m8WQH1k9z5itHN675B3MzKPxXH53tiam0JKXwVJZFR8/1p1aZkg61jmcGM20GPe1GHS0GDa0GDU/0WlqVClrlWbSpFDwyZPE8V8u99CRuRkTSGhHPk+gUTrv7ccYzlK9jpNzKUPAkU8NlqZLoATMJHOJCxDB3YgbYkDrKmfgR9iQPt0E2yp7E/tOo9YyndK4Py20CKJnhSv4kB8pne5A90YnMkZ4kjnTm1rKl3Fho4vGSUppyVVxcYOTCAhOn8g2czDNwIsfMUbOJowYjx/VGTmgNHFVp2KNVszdLzc50BV+myNiQkMba2ETqRdHUh8Sy1DOUnNkCagIiebG7lL+dr+LHpkr+/VI1f7u6jv/36nqeHcn53eRE+RQXlk11Z/lUdyonCiiYYE3+JDvMX8xn2SwHLojEPNRk8LRQy6vKngr0KjOdPQL9vkZPZ49AXxJFUDvJhpXTnKm38GSHkxcH3XzY6x/PvpAsltjEo54UQbmrGdPsBLLnJBM51Be9hx5DWBHRE2IpDiglaFQYyxJWY/DJp0pWhzkkn03qNXh+aoXvn+cRM2A2h+QlZMz0xrefHZ7/5kTiFxGsjMgnYoAlqaNdSBnvi3RGOMWO8RxM0nFZp+FGZQ536sopDAgm8NMZRPVyJ3mYL6IBlkQPcCBmkDUr3OOptwtm8xxPzrh4c8kroPukskegH/f851tT0ngq6/5ofKJS8kSt4olWwxOjjvYcwwdOPMs10aZV0yaTcScqhjsBwTyQJHA7KoFHcbF8ExbAcb9wboUnc0Om4c3W9TxasZT2/Fwe6fQ8kKu4nSLlWnQcW32jiR4wD9EoX4TDPIkd5UrqCFsK5vgjGzUP7QQnUofYIfnEBs1UH+5VreKIVsXGaBVRfayoFYi6OZH9EyfyuF7Wfc3vcrGeS4U/VaB1NOXracrXcyFPx7kcNWfMGs7l6Dhj0vxCoBXsk6dyWJvC/dXGnznRI9DvTi/k+wsr+OFiNd9drOHNxTpeX1zD6yvreX2tu8Dy+vKWX8rz/3RO/BF/xC8qCzM9qZzmxqKprhROdKBoooCKaV402Aq5kJDKQ0MWz4p0vKw08e0SA99W6Xmzysz7+jze1ut5USmnTZ3K5fAI6uc4s3yGCzVW/my082ePs5CTwWnsEWaQPVFIRD9nyjxzUE6OJWiwJ2lWyVRGlCMeE4zOXkf0xFjipydRIqrE4J1HWWQlX+btpUbZQOzMSIR97EkeasdXcjVNegWBfx6H3f+aTUVIDhmTAontO5/Vrsk0BqVxWFPIrcoqdvqFsj4qgtM1y9hfugjhAAd8elkSOcyRjAk+iAdZETfAjZB+ViwNSKZOEMzWeW6ccw/iqjCC60Fh3AgL55YojDsiMY9iEngQn0iHNJMOuZx2uZIOhYb2n6ppRiNP834+jn6SbaDdpOO+MosH6Wncj4nnYVQcj5JSeCzP4nFWHu82bKHz8G5ebFtLx5IK7uWZeKgzcz/dyM0kOdeS01CNdkIy0JnQIV6EDPMidrQnySNsWeIUgX6KDbpJDqQNtSbqExviBttwZ+kqdmWkUB+WTNJQW3ZLpNw0GfnaKOVKvpRrldoPzfAvFRo/rF9Ok/rp2saZXN2H3p4/vaw+pFJxQCHjZHYqbeuMvD+Uw/dHTLw7ksN3J4t4e2YJ312q582VNXRerPuwui438PZKI11XN9B1tbu68PhEw+9hY/yVQDsOG/mrKxzdy5ddLl5scvJlrZ03W508uSwS8UiZQnuBnM4ler5dbaCzTst3DXrerDbwfrWGrooMnppSuZkQzm5nf5aPd6BmuoB1Fp5scwxgp8CPg54BHHf34ZinF2eSlIiHOpA53oML6kJuLVjEwaw8NDOC0MxIxmyVRMCnTiSNlyCdnsbS8OWsFK2i2KeY5ZKl+PbpHiIRMNiesL5OSEZ6EjZEQOaMCGLH+KKe6U/cYCsS+lmx2iWesxkmzONsWCbw4ojKjO/HM3H9aBbVgakcCpVw3Kig/fgWNkhlxI90ImiYL8G9LQnrM4vVngksn+PF2mkuHJrvRLOHL98IQ7kVLOJupJh7EjH3xDE8iut+VNiWkUlrZiaPpDIeS6W0KeS0q5S0q5R0qFW0KRW0yDJ4lKXkboaCliwZrUlJPBbHc9HFnxMWLlxzDqQtJIMOUznfaoq5lqLgG42WBwoNB8QpSAZZEj7EhfBBLiSOdCV9lIDUMS4kDrMlfYQNKUMsME91+CDOC+d4UjDZkbJZ7uRPcaJobjAJQwVsSlBwZ1kBt0pzOW/ScVQp45AyiyMqOYfkMvalS9mbIWNbfBK7ElPZEZfM9sQMtkalsDEykXWiONaJ4lkdGMlynyCqvAPZIolhmySGFa6+lM515+G6PP7j/Kruu9CXa/jblRr+eqWB9n2/H4EunerCkhkeVE5zo2KKCwsm2FM4UUDFVE/qbQI4H5/CA30WTwu1vFzUw4nlerpWmnhfl8fbOj0vFslpVaVyKaybE8umC1ht6ccGW392Ows5EZTKbqGU7EndnCh2NaGcEkvIEG9SLZJYGF6C5ItQtHYa4iYnkDw7jeKwRRi88ygXL2Zr7m5WK+pJmB1FQB87kofacUqmpkmvRPiXcTj+yYICHzWyycHED7BlpSCBxqB0DqkL+aZ8CTv8QlgnEXGuroq9xYsI6G+Pb28rxMOckI73QTLQitj+Lt2c8E+iwTWUzXNc/ktOPIyO50F8Iu3SDDqysmiTK2hXqGlX6+jQG2k1GHmSm82zX3CizaTjvkLGg7RU7sXE8aCHE49kmTzKyuXN2k28PLCd51820r5kYTcntCbupxu5kZjFlcRkNJ87Ix7gRMgQL0KGen7gxCL7UIzT7NFMsCN9qA1RvWxIGuHIzcoq9sjSqA1JInGoNTsj07lhNHDNmM6V/HSuLdJypcT8K0b8lhNNeUbO5+g5k6P7VQ/o4wYFh5Qq9sszujmx3si7gzm8P2zk3ZEc3p4o4k0PJ7ouN/DqV5yo582VRrqurifcx/4Pgf4jflfxq41x2SwvFk11pWSKgNwxdpRPdmeTSzgXk6W0mFU8K9LxfKH+Hwr0q6UqnmilXI0Q/0OBPuQbz01lJWXzJEQNcqPIxYh2RhLSGXFs1mwgcKQvocP9kM5OJ2p8NDqBkfygUpYlribDXsGOBfupltdRKSlFNNSNpEHurAtIYH1QGLGDLUmbLcGnvy266WL2p1awPUnP6eIyHm/dQJmNE/Vu3hzKzaHr7GUiR1kj/syLqNGeRI0UkDDKhcTPHIkf5E7sSBdK3aNY4xbGTmtvzrkH8nWQhNsiCTfCwrkdEc59cTQtcUndL6zTpLTJZLRkZtEuV/NUZ/yHAt1h1ne359L3PIjKknFHJeNhRT4vt9VwL7+Arj2beXpkM8931tNRuYBWQw6PlDrupcm5Gq9kX0gm8cPskXzmQeAQT8TDfZCNDSBjhD1LnSMxz3BEMXY+2vHuJA0UIOlnwbncIg6qMlkljMUww4+j6clcN0r52pzM10VyLpZq/qlA/1R1/kcCfVCpYq9MSnOJkmebc/n+cB7vDxv5/lgeP54p54emlby/soauyw3/W4F+fXkzrV+t/T1sjL8S6I8++oidLn7sdvVnm8CXHW7+bHf1Y5erN1sdvWiwdme9nSsnAwK5nx7LU30yryrUvKzW87JOS1e9nvf1JrpqjbxeYeR5gYwHGTGcEfpRP9OT6qkCGud6sMPehwMCf056h3HaN5ATgT58o8hC/9ks6oIyOZRZyrXC5ZQLokgYFcjSsDISRgcSOyKQxNFhFHnkURq4EL1HDg3p9cjnJiMZ5EboQEfEg5wRDXVBNMwV0TBXIke4o5+fQEg/G+QTXUgc6EGVczxPVqzk1sJyJP82nXL7SPz+PIvgT2dR7xfKVm8fzppyOFyRx5n8YgL/1zhC+jgg7mdPZF9LFONd2OKbxKpJjhxxEHLRS8i1QBE3QkXcCAvjliiMe5HRtPUcabelpNOamk5bmpT2NCltKek8kWbSlpFJh0zGfZma+1IpLZkpPE6O5WZ4KKccPThk6845B08u+SdxV7mUv24/ybv9B3iSXU5Lmp4bKi13lAo2ekkI7zWPkP72hA52QTLUmaRh9mROcCVuqC0pwwWkD7Mlc/gctgQls8TKj0bPaHKnOVFq4cXC+b7kz3BD9rkXGRMFPK5dyp1yI+f0SnamJLFeJGJ7dDS7Y+PZGRXD1qg4douS2RaeyPqgKNYGiGnwDqPOM5RqtyCq3YOpdglniV0QdT4hHEpO5nByLBsDhFTOdebeahPfN63kb1dqf7WeH8z/3eREyRQBldPcWDrTk4qprhRPcSZ3jB0Lp3iwSRBGc2I6j01KnhZpeV6u+8CJXwr0yyVKOjTpXBFFdgv0DBdWW/qz0daf3U5CDvrE83XWQirnxyEZ6Eq+oxb1tASkM+NZk1FHyGghIcN9kc6REjUhBoNbNgVBpSyJX4XMUcWXeXtZKauhIrKYiGHupA7zYq1/PI0BocQOsSRpmgj/gQ5op4vZm1zGtkQdpwpLeLixkcWO7tS7enM4N5e2Q6eIGmtHxEiPbk6MEJA4yoXEkU7ED3QlZoQzpe7RNLqL2GbpyTm3QK4HiT9w4pYonHuRUR840ZImpTUzk5bMLNrkap7qDHQYfhLonL/jRItOTZs8ixZZJndVMh4uzOPbLdXcK1jA6z2beXp4E8931NG+aAEt+mweKXTcTcniSryS3YFpxA+zRzzSjaAhnkQO8yZzjD+ZnzmyyD6UnJnO3ZwY50biAGeiB1pxLreIw2o5K/1jMc3042haEtcM6Vw3JfJ1URbNJWqulpj/KSfOmDScyelmxS8F+oBCyR5ZOs0lCp5uyeX94VzeHzLy/mgeP5wp5/umlby/0sDrS/W/4sTrSz8L9G/35f/hnPgj/oieSYTj7amY4sLCyQLKJjpRMM4F7bB5lEyy50vPMC6nKHhgVtFRrOPbRUZeLzXxpsrIu1Vm3jeYeVuv4fkiKe3aZJrCQmmY50T1VFvWzXZjt30Y221DuKkqZ2+YhoU2ScQN9Uc5M53FIQWskpQj/tyfkGEeCAe5kDElGq2VFKVlGonToqgILyU3IB+9TzbGoBxWp1chmx1FkXMm2dYx5DvEIBlmR+xIF4I/ncfZvDp2G3K4UF3O5TWV7NUpWOcQyDI/d7pO7iPiC0tE/Z2J7D+f+CH2JA6aj+wze7RfOJMyUED4J7PJnu3LOt9Y6uZ7c8I1gCvCCG6GRnA3VMSjcBGPRFG0xSbRGp9Me48ItKR1t9lqVyro0KppN2hpN+noyDXyyKDmsVHDA52Sx0YNjzRyOlRKOnJyeN5Yw/PjO3ncuIQXhzfw7PB63uxZS0tZPve1C3ig1HItKYlv5CaMY1wRD3MleLAjoQPtCB9gTdZkP+Rj7VhiF0zOFFeyhlujH+tG+iAnIntbs1eWzZncHL6UJLHOU8R1RQq3jFk0aVK4W2HiaunPFejuXp7d66eOGz/18vwqW8PZnjHe57J1nDaqOaVXckyu4ZAsleuL5bzcbaLrSDZvjhXw5lQZPzSt4MfLtd0DU5pr6bpcS9flet5eWUdn81q6Lm3g7bVdH1b7mY2/h43x7wR6jbMXuz0D2dnT0m6newA73f3YLvBkg7Ufa2a5sMvJnesxEXSoEnhZnMWrFXpe1uh5XafjTYOBrsZc3tRk07lQQ4s6kcuRAXzpHMTKGU40Wrixzc6Hgy5CjrqHcMorgpO+Xuzxi+SmKZfLJjkdy1awSyJnwdxYKn3MLJYsJPnzUFSTo4kfHUquu5nisApKJMsolZSjt89CMsqP4AFOxI/2JnqEO6JhrgQNcCB4oID0cV7kzvDCNMMN0/gwNgh1HFNm8bRxGcY5noT0nk/gICfSJgk4lqXjiDSNQ7pcWr9cwwq/IAL/NA7hv81BMsCeiN5WhH86jc3BmWwUBLN9risXPIP5OkjMrXAxN8NF3BVH8EgcTVtMIm3xKXQkp9Ga2p07HYmptCem0Z6WTnualPtxidyOieZ+lJivA0M5Md+NSwIhdwOiaBdpeaZfxLu19byqreSluYAWZREd8UYeyFXc1cq5q9ayaIYdcYNsiRomIGK4G5Ih9iR+JiDxM1vSxjqTMkJAyhBb0obMZUNwEiXzPKmw9qNwthvFcz0otfBCP34+BbNCSRhqy63Fi7lWKOesKp0vxRI2hYazPjCYbeHRbBZGsCM0ji0hcWwKiWVTUAxbA6LZ5BfJemEka3xE1HpHUOsjZqlbOLVegRyKjeF8ZgSHQkNodHGnfZmBd+er+NuVWv7jal23QF9dSetx0+8mJwrG27NwsuAXnBB84MRWjzAup2TxwKymo0jL84UGOpeY6Koy8Haliff1Zt7Wa3m+SEqbNpmm0FAa5jqxapota2a5sd02mB12IXwtK+KQWM9C6wQSRwSgniWlMjCPleJyYsYFEzLcE+EgF6STo1FZpKGcLyVlVhxloSXk+OWRLVxAnqhmvsubAAAgAElEQVSQelk1irmxlDhnkWcdS4F9NFHDHYgZ6Upwb0uO6Vew15DH+ZXlXFu3jD2aLNY4+LPMx51nB7aTMMOJsP4ORPS3Jn6oA4mDbZCNckAzVtDDiTlkz/FjnW8sa6x9OOkm/JkTYSIehofzKKK7jWNrfDJtKWm0pKT9ihPtWjVtei1tpu6rHI+Nmh5OKLofzqqyaFcpacvJ5lnjap4f287jNUt5cXA9Tw+vp2t3Iy2l+dzX5PNAoeXrpGSuZxoxjXVDPFTQzYnBjogG2pI1yQ/FWAcqbQLJmeKKfIQNujGupAxwRNzHmr1Z2XyVnc0mUTyNniKuZCVzw5BJsy6FWwsNXCnVfBDonxjRXGDgXJ6ec3ndp5OnsjV8ZdZwpmeU90/XN07plRyRqzkoS+V6pZyXu828OZJN17Huu8/fX6jih0s1fHexltdNNby+VMvrS3V0XWqks7mRrksbeHZ+8x8C/Uf87qK7v+cXtpRPcqZsohOlExzJG+uM6bP5lE1xZKtHCBeTsv6pQL+ozOCJPpVLYSLqZjqzYrI9jZZ+1Mz146tIDcfFSg6Jjai/8CPt81CKBNlsTK/Gq7cdyVMjSJkWSdRYIRmTo1HNSyV5ShQZ85IwuWkRfR7KgsAiVmXW0KhuIM9bzU5pBYrJ3kT2tSJmsAPpY5yp8krioLyII6WlXFu3kufbNlJh78I6z1D2ytXk+gQRNHAWok9sSBwpIG6wLfEDLFGOccYwwZWEvvZE9p6LYZona7yiaLTz46SbkEv+YVwPDOVRhIQ2sYRHEdF/J9Ad6Rm0p0ppSZfSrpDTrlbSoVXTplXRrlPTqlXxWCXv/jWqeZZt5FlxEW92beJ182E6NtTSsWcDL4/t4PWOjTwqLuKOwsy9LDXX0jM4ECVH9KkVoYNdiBjpTtRIVyRDHVBMDUA/xZVF1kJME53RfO6IZrSApL52hH9syZYkNefy89kqTuCQJINvVGncNMi4YsrkVpmBKyU/V6B/6uPZlK/7lUCfydV1V59/IdBfGVQc12RxWKbkYGYKN5Yq6dybzZuj3Vc33p2p4Pumqn8o0K8vrqGzuZG3Vzb/XyHQNkOGs83Fl53u/uzxCmaXexDbXQLZ7OzPehs/6ma6snaOA18J/XiQHs23uRm8XKLhZa2R1w163jUaebMhl3eN+bytMvE0J4O7qWKO+AayapYLDXNd2Wbnyz4XIQc93Dnt5csFDyFfuXlz1MuH5pRMtgUksS+2nDr1RjZmb0c6PZLUzzxJHhuK0iKF5FkJlEVWsCKlmkwbKQqrNKI+DyRsiAtxo70JG+hI1ABngvs6EzbIBfOsIA5LMlgwfj5VVkns8I6nYvI8ylyEBI6yxb2fBYJPprBFk8eV6uXcXbmI9p21XFtVQVifCYT/23wkfZ0I6zeXqH5OiIc6sEyYSo0gmM3z3DjrFsjVgEhui6K5ExLBo/AIOsRRPBbH0RafTGtCMm2pabSmptKSnMbjpBQ60qXcFMewbtI8tkxz4MA0O85ZeXDbJ4K2sHheiZN4khLPW4OGV6p8fpCX8W2Clhfxau7EKWnTGbgvl3FDKiez7xhiP3ND2N+OsMEOiAbakjLGjdSxAmKGWaCZEkBcf2uSB1tQauVDjbuYUgsviua4kz9dQJVdEGWzXCmc6UXOjDD2Sg1cLVZzTp3CxjARO+NS2J+Qzr7YJA7ExLM/NoGdCZnsipeyMyaJnTEJbItJYKskns3iRNaLk1gTmkBdWAKrQ8TsjBNzSurPV3FC9oX60laRwY9NK/nx60a+v1rHf35Tz1+vrODZ76gLR94Xth8YUTLBkbyxThg/m0/ZFAe2uIdwMUnGfZOK9mItLyp+w4l6M2/rNDyvzKBDl8LFsHDqZjlTNcmOhnk+1M7z51SEiuMSFQci9RgmBpE+JoxCJxMb0lbh09eBxMnhJE+NIGqMEOnkKBRzkkmZGk3G3ERM7jriJkeT51fACmk1DYpasj0UbE4qRjXNF3H/+UQNtCN9jDNLPRI4IC/iSGkJ19atpH3zWpa5eFEnELJXrmJBQBiB/WcQ0cuWxJECYgfZEjfAEuXnTujH/8wJ4wwv1nhFsdbOnxNuQi75hXFdGMpDkYTWSHEPJ7oFur3ng7E9TUpbqpTWtB5OqJS0qZW0apW0/cQJpZwWjZLHRhVPzQaelnRzorPpEO3ra3iyZwMvj22nc/sGHhV1c+JuloqraRnsi8wk4tP5PZxwQzLCBclQe+RT/DFMcWWhlf8HTqhHOZHYxxbRJ5ZsTVJzOieHjeGxHBCn8bUihRv6TK4YM7hZqudyTwX6UqHxAycu5Om6Bbqn3/PpHC2nc7QfBPqsWdtdZFHLOJSp4GBm8m84Uch3pys+CPTbi7V0NdfQdbmGrsv1dF5s+MCJCF/nPwT6j/jdRfeI1rHW3ZvieAeKx9mTPdqB/C8cWDjNmY0CIefjpP9UoF8tzeKZMZ0rIjG1k11YNsGJFXMD2BaYybGEHDa5SziZkE/aUAGFdgoWeRVS5m8mZJgHocM9SZ8ZRcbsGNInSVBbpKGxziBpejSZ89PIdzLgN8Cb4ogSFiYspFFVw3FjJT7/azBh/zKHRXZpbBWrWO0VwUF5Nudrq2g9sI26wHDWWPtS7xvKcfMi/AbNIHKANeYJIcQPdyKq/3zShtuTMcKWvOk+SIe6E9XPCuUEZ2pcRdTN9+KAnQfNvqHcCovkXth/XYFuS06jPSGFZ+mZ3TItk9Eul/NEpaRFlkmHUkFrloxWlYJbBgVtOQZaigvo2r+VFxcP8WrbVt6cOMjLo3t5+eVmHiwo46ZUza0MOddlGooshYQO8iVshDcxY30QDXEkdqSAjAneZM/woniOF/nTPdCOcUL1mRNJfW0J/cs81kZl0FxUxP5kGUdisripkfK1VsrNfBU3irU9G+N/LdC/XL8V6CPKDA5IsziQkcKt5Wq69ufy7kQ+P5wu5Yfzi/n+v6hAv2qqp7O5kffXtv5fIdAfffQRO92E7HIPYZd7CNtdAtni6Md6O2/WzPdi9UwXlk61Zbe7N3cSYnmqS+JluZKuWjNvGo1812jizfpsutbk8K4mh9elatpUSVyKDGSdjS/1053YONebbbae7HNz54SbD2e9AjntHcLZ4FTOicxsSlzN1ZV7UAgSSJ4mIX5sJHGToogfH8nSiEoivggn2yeHtaoNyAUqkqZEkThJTNJoIXEjvIgZ7UVgLxv8PrZBPNQNxRcuLLaLpGheOAfiUtnh70+Nhx+qmT6EfepAWC8H/P48my91C/h63SpadtTy7aH1nCgtJejTmUgGuGK0iEQyaD6pw72RDHIifow9WyJlbHTwZ59rCOe9grkqFHEnLJLHERJaIyK7pSImgbaERFoSE2hLS+VpVgYd0gSeydJ4EJ/E1eBQvgkJoTUsjpbwWFrCJTwWhvJtcCQdwVG8iEihMyqVzrhU7gZHcC0kitvmbG7r1dxWKjidnEFCry+QjnYjeLATYUOdiRhiT/IYD6RfOJHw2XwShtuSMNietKG25E5zY60wjiVOwVS5hLHQ0ocl8/2psg0kd5ItunHeLLAJ5vbiPL7OzmJfTDxHMmWckGVwTi3neFoyB6XJHErN4LC0+6Nyf0YW29PS2ZEiZUdKJltTZWxJyWRzcgbrYpPZFpXMycxwmjIDOBHrxv2ieP7j9Gp+vLmR76818LevG/j3Kyt5eqzkd5MT2WOtexjhQNEX9mSPtidvrAPlU53Y4CzkXGw6940qOn4j0N+t+qkCreHlkiyeGlK5LIqgdrILS8c7sWKuP18KpRzv4cTxuFwyRrhTYCNjkVchpb5GQoZ5EDbCi/QZEtJnRJE6UYzaIg2VZTpJ06ORzU8j39mAcIgfJeJSFiZUsOb/Z+89v6JOt0Vdv9x971l7da9lBCSI2TZHci5yzhRFhqKqgKoCKlOBnJM5IoqKWTva5hxQURQjBgzdprbNHdY6e+3w3A/Qru6z1z774/GM0XOMOeovmPN5ar7zfX/q1XytaST6n+xI+n/n0ewuZVuKmrawFL4uNHNq9RLufbWVjngR6z0i2RAt4rBlkBMjXDFOjCXLxpv0YS7IbDyQ27pTNj2MAmt/0oc6o5ni/54Te9yDOBcWz7WEZG4lCOlPTBrgRMbfJ9APZHk8zB3gxOM8Od/ky3moUPJNYSHfFBdzb5AT95XKgfegf+FEXSWvvtrGs7N7eb5zG68OfcXzA5/zfPsWblfWca1AwzV5ERflaqrmRxE3PJSE0SGkjw39h5yonBGE1tEbtf2AQCf+j/l0pMk5XVHBp5kyDqQruKrOo1dXwJVyFb01Wi7Uan8j0F0VOrrKf/vRlFPlhoGBi0X3/qL5MYOK/cUFg5yQcH3Z3znx44l6fjyzkB/PLuPHXwn0y+41vOpu5/uudr4/t4F3l7b/I3n+P10Tv8fvMdAYFXbOWCb4UTnRn8pxAiodfKhwcKfxE082+EbQJS3kZqma+3Vani0y8/0yMy9XmHjVVsK7DWberDfzapGOZwYpPYmxtE31ZNEEAavnJ3JSUsEKjyi+ECRzIKOSvAlxxFqF0hBTiclHTsaEWDImJJA1UYRsmhjJ1EyaY+ooE5SgcpKjdlEimZFNia8O0cRkKmOraVOsY4ViLe7/NAfNzAi2pKm5vLyThzuPcOPTL+k7uJnP5RlsC4ykMyyFhxu3EjJiOuGjXMge5cw6vxSybLxJG+aMzMYTpb0nlbMiUIxyJWe4C8UTgmhyima1eyhbnQScDorjZqSQ/vgk7qUmcTdFxP30DB7k5HA/V8zDfBkP8/K5J5bxUDaw03kvV0JfZjbXJbncLyzkjryAu3I5D4oKeawp5FtdIbdV+dzWynlYruPp0ioeNJi5ZdbwrLaay3I5ZzOlXM1T05WtQfznuSSOCCTJLgCRgz8iW09yx/mjmh6G7hNvlnjHUD07CNNkX0yTAsj8aDbRf5hBc1gOV1pWcEAq44w8lyv6XC6XyLhcqeJqk5kLDSYu1Oo4X60daIxlJZy2lNBVZaKryvR++nzcouXE4K3qkyYtxwwqjuiK2KtUslcu5sFyPS93l/LqeA0vuxbztruNHy6287a77X3+1N3BuwsDn+1+dXErry7v5vXVgXzZu5MHpz/MHeghQ4aQOWE6nwclsM07gm3eEWz2CGWjSxDt80NYPjeYluk+rHf25XyykPvKTJ5XDaxxvFhr5PW6Et52mHi1sYyfNlTzZrGRx5Y8+rJi2eMXytppHnTODWG7Swhf+AaxNzSEfVGRHI6MY7+knFO12zhTUk9DaB5ihyjMboWIp8SRO0lEiZeeEh8tcfYxxI+NRxdsZE3+JjoKO0ifkIh0XDyKSQlkO4YR9Sd3hCP8iB3uQ8IoAaUuqbRHilntHUhbiIi1CYXIJwQT8dECwv448PzjJpmeqy0N3FlWw/WOhaSNDyH0Iyfih7sjdgxE7OBHjrUPGSP8iP/jDDbEFbAxJJV1LiEc9Y/ifHgC1xJF3I4Xcj85kf5UIf2padzPzKI/K4v7UgkP8qQ8Uct5rFLyuFDBo/w87mZk0Jcs4kZyEn2JCdwRJnFLKORqQiL3oqPoDYvgfEwSl7Lk9GuMPC4p577WzJViNYdzlaT8fxMxTBESPcqbpLEhxFkFkuUQjHJKEFJHN2TjBsQo19oL9WQ/VoQkU+cWziLvWJpcwmmYG8Rilyhq5gRRPjsO5QR/Hq5ZTm9VIYfFORzVKjmqUXJYV8RRfTEH1QoOa9Qc0hnYp9WxV6Plq6Jivios5lOFmt1yFbvlKnbkFbIlt4Bd2TJOFWfTo07mrDKMnspUfj68jJ+ub+GvVzfytyvt/KV7MU8OVH4wNSG3c8Y83peKCQIqx/lR6eBDub0bDVM86fCJ4IxEyQ2zmnu1Gp4tMvN8qYkXy428aivh7XtOaHmqlwxwYpoXC8f7sXp+IsdzyljjHcMXgmT2pZZRMCmBeJswaiJKMfrISRsXTebERLImipBOzSH3kwzqw6sw++opXlCA2llB/hwJeh/Ne06slrfTmrsCr/8xH82McLakqehZupG7W/Zzbefn3Ni3ia8KM9kaEM6mMBHXl7cROmom4SOdybFyps07mUxrL9KGOiOz8UBp50HFzHAUVm5kD3VCNTGYVtdYVnsMciIwlhsRSfTHJ9GfmsjdlOTfcOJBnpSHsjz6xdKBewCyfPrFEm5l5XBdIuGeUskduZw7cjn3i5Q80ij5Rqt8z4lvyrU8W1bFw0FOPK2poic//z0njqcVIh46j4ThgSTZ+SNy8EM02hPxWAHF00IxTPOj1T2CqtmBmCb7YJzoT8ZHc4j+wwxaI8T0NCxhb46YMwViruhzuVQi43KFit4mMxfqjXTXaDlXpeVcpX6AE+YSzlQaOVNpHJg8l+k5bv47J04YNRzVF3NYW8hehZJ9igFOvNht4eWvOPHuwtrfcOLH7vW8u7CRl92dvLy4lV0rLL8L9O/xQcZAY7R1Qm/vgXmMFzUTA6mw96bMzpWFM/1Y6xHCGYmSW+U6HjYY+H5pGS9XlPJ6lYXXa43vBfpFq5onulwuxkWxapoHdVMEHJdUs8kzla0usZxIL+KkciGZtqHEDwuicFoWpYJCRGMiEH8iIveTdJLtEkibnMIGeQflYWVUR1VR5F6IdJYYk8CAJdhMeXQlZTGVVEbV0hRezqXKbWzJMHBl3Zc8OHyc+yf3cKC2jB1hCbT7RHC6bhHKeSHEjfAgzUqA6KMZlM3yJf6Pc8kY4YrEyg3NeAGmKYEYxweS+sc5KMf6Uzc3jHU+0ayd7c4h/0guRyXSJxRyJzOZW6IBCbiXlUV/TjYP82U8Vsj4Jl/ME4WcnngRO+e4c9g3lKsJ8fRnpnMjOYmbyUIuREVxKTyBS2EJXAyM5kpwPPfiM3iUJeW4bwj7XAWcCopnv2cEvblibugsLPRKJM3Kg6SRPmQ6BCEc4Um6lQfi0d6UzIikZIoPjc4hNDlHoh/viWaMF5IRTiT8aS4Gp0h6m5dzOK+AHrWca0YZV0z5XK/T09tg5EL9PxboX6YKx8yafyjQJ4waDmmUfK1Qsl8p4UmbhXdfVvHDmQbeXVjOT5fW/6fG+H+zQA8ZMoTtPpFs8Qyj0z2ELZ5hbHILZqNTKKvmhtAyw4/F093YHxrO3bwsnpry+H6hjhdtJl6tM/B2vZEftpTzQ2cpr9tNPK1Vcl+RxpmoUDpme9Ix259t7kHs8A5ht08Ee0KSOKlt42TxYg7m1tCZ3kKlVyFGt2IsXnLWJ9ehmJrGwrQliMYlonHTkj1NRkvqSpblbaDI38CW4g2IbMJJGOpD3Ehvkq0F5Nj5E/0nN5JsfKnyS+NLaTHp1m6kjQmiOTCf+H+eRYqNN5HDPYkf6s6GKCnHciV0KHP46dJFIkbMJcUhmFT7AMTjQiieGIR2rA+yUf6k/GkBqkl+rA1KZWtAEtud/DkeEENvaAJ3YpPoT03menoCd4Qi7qam0Z858IGVb8QyHhUq+KZIzuNCBU8Uch7lybgtzuSbrExup6TSJ0rjZmoW10TZ9GVK6MtTcF9n4LHZwreWUr4pL6PfaKHPZOFgrhLRP89GPSOWaDs3ksaHkOwYTpZjOFm2nqg+CSXbQUCGjR8ZI7womiCgdI6AzUIZtc6htHjFUT0nhIb54TQ7RVExOxzF2CAu1i7ijFnC3oIcThoHTmF+/dbtMaOGYyYzhw0lHNDqOKjTc0Cr46tiHV+pDHxRpGNnfhG75So+LSjkaEEWZ4tEXK9M5+E6NW9OLuZfrqznf17t4G9X1/G3i8t5tqfsg6mJAlsndPbug5wIoMLem1JbF1qn+9LmHsIpsZy+Ug0PG/Q8X1LKy+WlvFpl4fXavwv0ixY1j3ViLsRFs2qaJ/WfCDiaU8Fm73S2usZyLEXJ8YJmsuzCSBwRQuH0LCy+SlIcI8mZkox4ShpC23jSJqWwVtpGWWgpVZGVFLkpkczMweinxxhopDSynNKYSmpi66kPtXDesonN6Xour/2Mh0dO8ODk1xyoLWVbSBxrfSI4U7cYrXs0scPdSBnli+jjmZTO9CXho3mkD3ch18oN9Tg/jJMDMIwLIO2juRRPCKJhfiTt3pG0DXLiUmQCfcIkbmcK6UtO4m5qGvcyM99z4pFCyjf5OTxRyLkYJ2TXXE+O+IVyJSGeuxlp3EwWciNZyMWoKHrC4+kJjeNCYDRXQuLoj0vnm0wJx/1COegRxKngBA54DXDimsZMo2sMqVbuJI30Id0uAOFwD9KtPJDYeWOYFoFpqh91C4JodI5AM9YNraM3ucOdSPh4DibXGC7WLeKAVMZFVQHXSqT0mvK5WqPlcr2R7noj3bW63wq05e9T5+MW7T/kxPESNQfVCr6WKzhYKOFJm5m3X1by7vQAJ37sWfcPBLrjNwI9fozN7wL9e3yQ8fGQIUPIs3FFY+eFaaw3pjGemO1dKJ/gTdO8MDYGJtItVXCvXM2T5hJerSzj5SoLL9vMvF5n5OeNJn5Yq+Z1q5KH2hzOxCewZIqAw5kmPosvYu2sKA76i7lkbGZrspGMUQGYF8jIdYxBaB1I/oxUsicLSZ+QjNJJQbxjKqt1W6lPa6ImpIyyiDpqohvInyejLraCzuIORJPSSJqYjsU3n5MSA2cz87m/dRuPL53k2d5ttHiGsMotmp2KQvYsaSLiz/NJGOZOprUPyR/PQj3FjxxrdzKHO5EzyoWisQJU4/0pnxuJ6KMZyKw8ME/xZ61/AktnuPOFdxAXIyPpS4jhdkoSN0Up3E5J5256Fg/FEh7mSnmkyOexSs6TQjmXk4Sci4ihyz+Sw7O9OTZfwBmPMHoC4ukJiOOyIJLTXsGccA+h2yuSR1ESupOl3E7I41xEGpclCi7nFHBfmU9XvobkP89FZO1LppUPuWMCEA53Jcvag6LxASgdvKlfEE7T/GBaXaNRjp5PkYMH+XaeJA93IX9yAJcbV3GySMklrYReo4TeMjlX6vX0NJRwvtHEuRoD52tL6Koy0FVp4EzF3/eeT5TqfrXjpuZkqZqTFh3HTXoOaFR8rSjkqCaPJ+tLeLevincXlvH20lp+uLyed5fW8aq7bTDX8uZiJ68vdvLm0jbeXN7Om96dPL/2KS+ufcqL3l08OLXxQ2iM/6VAb/OOYKdfNJs9QtnqFc5Wr3A63cNY5xzBktlBNE1xY4uHgCsZaTzSinneoOL7lSW8XFfCuw0Wfu4s5afOMl53mHm+SMO3+hwup0Sw3SuI1TPdWD/Pl06XID4TJHAuQ093VDxHEjI5LTbS4pJJlcDI2tw2Cqelsz6iFO18CXInBSFDw2hOWExLygoqElopEy7k68VdyOaL0XsXEzbMixSHYDLHhZFuJSDTPoSwj+eTaC9APkuI2DEWjXM2O2WtpA5bQN74YOr9slibo2BvroLOkEh2aIrp270PoY0bCSM8ybbyJHPYAhR2Hlg+CUEx2h/JCE9Sh85mbZiMzWEZLJ/nw6fuQZwKiqU3OoHbaSL6MoT0iVLpE6VzKyWDPlE6/Rk59GeJuSfP455cyn2FlPuKPO7IpPRnS7mdKaUvQ8aNDCm3ChTc02h5WlbO65Ymvmuo49vaKr6preK+pZQ+k4Jj+TLS/nk28nExpIz2JGlyMKLx4WSMDSPNxg/t9HhyHAQkj/RA6hCCzNYHwzR/VodlUOUaQa1rFNXzQ6mcGUirSwyl0/yxTI9lc5KMnupiThikXKqqHZQIPSctOo4YVYMTODNHjSaOlBg5qNOzT61hv0bD1xojX6kM76fRO/KU7MtJ45JBwrfr9Dz/uoK3Zxbz1yvreXdjAz9dX8e/9a7m5Z7yD6Ym8mxc0Nh7YnIc5ISdC+XjvWieG8qmwATOS5X0l6p53GTg5fIyXq4083KNmdftRn7aaOKHtRpetSp4oMnmTFw8y6YK2Jei5bOEItpmRbFPkE2PoZFtIiPZNsEY50nJto8iyTqQvOkisiYLyZwkIn9OHnGOIlaqNtGQ3kx1SCmlEbVURtSQN1dKfVwF6+VrSZmSTvrUbMp88zkmNnA6q4B7W7fxpOcEj/dsYbFvOGs9Y9mlKObz5rpBTniQMcoH4UczUU3xIcvKjYzhzohHuaJ09EU1XkDZ7HBSPpqJ3NabiunBrPGLY9kMN77wDuJCZCQ3E2K5lZLIjeRkbqekcyct87ecKC7gSaGcS4lCusKjOe0bzuHZPhyd789p91AuBsRxMSCWHkEUJz1DOOERSrd3NA+jJVwQSemLl3I2IpVLYvkgJ/I4JVUhGjaPZCtf0q28ETsEIBzmQqaVO4Xj/VGO8aF2bigNcwNodYlCYTMP9VhvCuy8SB7ujHxqEBfrlnGquJBLWim9RimXS+X01uq42FDC+QYj52r0nKspoatST1fFbzlx3KLlVLlhYA/aouakRc0Ji5bjRh0HNEXskSs5qsnj2Xoj7/ZX8a57KW97Bjjxtqf9V5xo5/WFTby+0Mmbni28ufyf3n7+XaB/jw8mPh4yZAgyG3dUdl6UOHphGuuJycGJ0kneNDlHszk0hR6ZkvulRTxtMvByhYUXq8y8WGvi2UYTL7aV8rpdz+smNc80Ks7G53JApONIhpHWacGsmx/HldxqvkwrpiOyGPn4aHLHxZI5IZp0+1DiRvqTZB9J1pRUjP5GYuxS2d92kbKkKgzOhZRFNFIV2UhlWDmlIVqypovQeZdQFmjka2UzTzVGHqYkc8pYzOsLR9lVIGZjVAx7c+V89+lXhNhPQmTjS6aDP2lW7oj+PJf8MV5IbNzJHL6AwnH+KBz9UI4VYJ4bRtrQ2RTYeKEf70OzcwgLZ3ix0yuQ85GRXI6J4FpSIteEIm4IByTgdmomD3OkPFIoeDR4BP1YXkB/ZiY3E5K5n5RFf1w6d2NTeSqS8DxdzreyMp6WLebxwg6+WbqJv247zJtdn/GstJlecRHXtToeKnXcU0RKgHYAACAASURBVOson+pB7NAFJFn5Ibb2InWUG4nDnJCO8aN4UgByew+WeMZTO8OXZudI1GNcKXL0pHhCAMnDXcibFMjVlnZOqwvp0ebQa5LSW6mkt17PxUYj55vMnK8z0V1v5mxNyfv8ZbLwS54o1XGyXM3JchUny3QcNerYp1axV1nMcV0B320y8pejdfxwaQ2vL63n3eWBfH1x7WCu4/Wlrby+tJV3V3bw7soO3l7ZwfMr23jRu42XPVt4eHzth9AY/0uBVk93YqdfNDt8o9jqFc4uQQwbXALZ4BLBirnBNE71ZNUcD04nxHNfmcl35Qq+X2bgZbuJNx0mft5k4efNZbzbYOHtUgPPyvO4KU3kq8BIVk71oG2mH9vcYtjpG83+6EQOhyTSFZ5KT6KK+rnp7Gw4jsJHw6LoUjZKVrBM1EK8XRyJ45LR+peyXLYBhYeRIn8za0u3UxVXhcJJimRGCiljwsibGk/8HxZQ45JJ5B9nEfLnBYT9yYvYj4JoCjejdkol6Y9zWSEQsy1FSd+qdpq9A1jpHUDP8mXUxmeQMNyTHFs/Mq09ybX2QDLKBf14f6pnRZP5zzNI/3geVQsSaZwXznqfKFbOdGGPIIzz4WFciw3jelI8vYlJXEsQcS1RxM3kNPpSM7iVmc0dmZi7eRLuyvLpz1NwL7+YuxIl/blybucWcLtAyV21hm9KS3naUMf3C5t53FDLdwubeNrSwL3ycm4btByX5pA/agFSm1jSxwhImBBN4thwMiZEkuMYhmxsCDm2fghHeZE6Ophc+xBK58TQ4hXHqqgcKhaE0uAWTc3cEKpmBGKc5It6bADaCQKu1JZx0phDd3kZZ6qMnBqUiF8E+ohRx5ESE8dMJRw16jls0HJQp+YrlYE96hI+U2r4XKHioCSLg1nJ3GrU8erTCn46Wc9PZ5bwH5c7+eHaFv5yo4OfLy/h8S7DB1MT0kFOGMYMcMJo70TpxAFOdIakcFGq4J65iCdNel4sN/NilYkXbSaebTDy/VYLr9v1vGpS8VRdTFe8mP1CDUczTbROD6F9fhw9ORXsyVCzLqIQ+fgYcsfHkTE+mlS7UOJHBZDsEEXWJ6lofXRE26Xw+ZKTlAur0TsVUhrWQFVUExVh5ZiD1IhnpaHx1FEWaGSPvJHH6hIepoo4bVLxuvsInymldERE83VOAY92fErU2OmIbHzJsBe850SegycSG3cyhs1HOVaAwtEPhaMfpjmhpA+dTaG9H6bJApqdQ2id4clOz0DORkRwOSaCq4kJXEsScT3p738WH2RLeKSQ822xgkeFCh4V5HM3I4ObCcncS8zkbmwad2JSeJKcy7PUfL6RWnhiWcjjlnV8s2QTP28+wJsdu3libhrghFrHA6WWuyotZZ94kDDMhaRRvn/nxFAnpA4+FE30R+HgQatbDDXTfWhyikDt6Ip6vDdF4/1JHu5CwZRgLjeu5oy6iEu63AFOVCi5XKfjQmMJ5xpNnKs1cr7O9BtOvL9gPnjZ/LhFy4kyFSfLVJwo1XGkRMc+dTF75IWc0BfwXecgJ3pW/ydOvLrQxquL63ndM8CJt73b6Wgq/l2gf48PNv6hQBvtF1A+xXewMYo4J87nrknBowYt3y8zvRfoN+vM/LSxkjdtZXzTWM6dsib2Z+j5MstA9QQfls0IY4t/FpfUzewIy6ZNIKN4SiKFTjnkzE8h+mMPYob7UbggF+nMbPLm5ZM4NosjHb005ywkYUQEWkE5jQmLqYuuQeerIHtGCmXBFXTIO9ma18oDbRUXI+O5smgh+5pa2RIZQ7c+m8ftzWhdQxCNjSDVVkCarS/p1h6kDptPxoh5FDj4kD3SGbGVK0XjAygc549pTihZI+ahsPXBOFFA7RwBlRPdaF8QwMGgMLoiozgXn8jl+CSuxAu5liiiT5Q+8NC9RMIDZf77I+iHuWL60zO4KRLSnyyiPy6RJ7HJPI5O4lVhMd8b9DyvqOCxwcwrSy2PF6+mX2bkrqKEXp2OWyotXyTlkjZyDrGjBCRZByC18SRluAvxf5pPrp03MjsPJFZOrA/NonaGL4s94lDYzEMzwZcal2REI1yRTQzkcuMaLhj13DDnc9WSx9Xqot8I9IUGCxcbSzlfZ3qfv+y2/bLfdsys+Y1AHzJo+Lq4iD2KIk4aFLzaXsa/nWnl56vtvLnc8b4xvr20bjA7eNu7nbe9298L9Lsr23l5qYPXPR287l7HoyPLP4TG+F8K9JAhQ9jhG8UuQQzbfSLZ6RfNJrdgNjgFs2puMM3Tgmme5MNun0BuSVL5VifmeZOa71eX8KqjhLfrjbzpNPNug5m3q0t4UVfIw+IsTsdFsG6eH6tn+9DhFM52n1h2+kWzJziKQ6GJHI2UcLx6E7KZseSMjWCzZCnlAhVVwUaqwsqQz5OT6y6jNqmF9CkyGkUr0cZUsaP2C5LHx7OmYBWJY0JItwtCNS0J5TgvimeGEG3lQug/OxPwxwAqww3kOoSwXFDAVpGak43NnN+2gg0e0Sz3C+Bq2zIirMaTY+uH1NqfbFtf0oY5I7Vyo9DBi/IZYegdBaT9cQ5iKw9a3YWsESTRNNuLTvcgDgSEcC4ynJ7YeM7GCemJSaAnPpFeoYirolRupmdyM0tMnzif2xIFtyUK7kjl3JHKuZdfSH+hikdmC9+WlfKgspyHDTW8WNLK46Y6ni9q5llrI7fLzVwvMnNOUkDFpGBy7IIRjYlGODmJpHGRiBzDENoISLMLJM3Wh2SHAIQ2/iR+7EG2lTu1rlEsD8tAN82HsjlBWKb5UTsnhLKp/pinhaObEMrd+houWIo5UaLmdIXp/enMcYuWYxY1x8wqjpkMHDXq3wv0IZ2Gr9U6vtKo+bRIy06ZnC+z0jmZl8mDLWb+cqqRn7taede1hL90L+WvVzfw0412frzYyuOdH45Ay/4XgS6xW0DZ4KBlU4iIszl53DEOcmLpICfaTLxuN/PjxopBTpRxx9LIoRzjACcm+rBsWiibBZlcKKxnR1jWe04UOYuROmcQM9SLmGG+KOblIJ2ZTf78fBLHZbFnZRf1mc0kjYpCJyinPm4hNVHVaLwLyJouojykknbZBnYULOSeuoKe6ESuLGxhX/MAJ87psvm2rRG9ezjJjmGkjPYjbbQPaVbupA6bN8AJe2+yRzghtnKlcJw/ynECjLNDyB4x/z0n6ucFDHLCnwOBoXRFRHEuLoFLcUn0xiVxNTGZvuS0QU7kDnJCzhO5nAfiHO6mDaz43RUmc2+QE0+ihbwqLOL7Ej3fV1TyuMTCy9I6Hi9axV1pCXcKDAOcKNbyeaKYtJFziBnpR5KVPxJrD0TDnd9zQmrrjtTamdUBqdTM8GWhWwzK0fPRTvSjbG48ohGu5E8OpKd+FT0mPdctBQOcqCp8L9DnG010/4oT52qNnK81caayhNOVA+t+xy1ajprUvxJoLYf0GvYUFfJVvpJTJQpeby/jX8+08tOVdt5cXv8bTrzp+S0n3vb+l5cHP4Sa+D1+j8HJwihPtPb+aEd7orN2p9DKjdKJ/qxyiWCjVxjdWTLuGtU8qjfyfKmJV20mXq038OMGE2/Xm3mxrpoHLRU8a2rmuEjKkum+1I7xYeHseM6qFrIxWsLX4UVUzxCRNzmJXaqNCMeEEGsVROSwACoCTKQ4JCOdKiHHWc7+5hPUCVtJn5aDwc9E6nQhNbFVLExeRnVUA8uyl7Imfyk9rbvorVzEaf8keo7spMMjlHulOr7bVM2ylCzSJkSRPjaWLFtvJI7+5I0PImWkK1m23mTZ+5Ft50O2tSvqyQEU2LlinBmOdLQXcocAyufFUuseid7RneWzBBz0j+RUYAhdoeF0RUbTHRv/Hv63MrO5Lc7hTp6Y/gIJ9xUy7skl3M7J4EFGOreESdwWJXM7WcidJCFPErN5mangrVTPy1wdz8VGHqUZuStTc9ug5qZBRU9eAabpUaSM8kZoE0iqbQCZI9yRjfEle7QHYmtnCuxcUYyez6qANCyf+LLEKxHLJ76oxziz1C+ZXGsvCsZHcLaqjguVCi4bi7huKeZitYqzLXrONuvpbtLTXW+mu97MuVrj+zxRaeBEZQknKks4Vq7nSKmWY+VGjpYZOWTWs8+g5itNIbvE+RzUKXi+p5mfLizjx2sbeP1eoDfw5uJG3l3axg+9O3jX+xk/9O7ir1d28HNPJz+cW8erc8t4eXYpr84t4+GR5g+hMf5vBbre2Y9PA+L4NCCO3f6xbHIPpd0piDXzgmmdFkqpjQsrprtxXhhHvzKN72qLeL7CwMv2wdc4NpTwttPCu3Yjr1s0PCnJpzc9ju2+oSyb5sXaOZFs8Uhmp28i+/zT+DxIxvWmrezMb0EyOoRSp3w2ZS+iYEYqRi8NGeNSqQutJW1aBg1piwgcHs3S7I0kTs1kjXITWyo+JcghlB36jfj/01zC/p/ZpA+dw1lNOd0mLWnDxhH8hzmkTY0k1SqQ3QVLOV63kJ6Ni3j29Vba/KPZFCniQccuYqznIHHwZ9mCGHJsfUkf7kqutQeqsb5ox/rR7CREPGI+uSNdWOGXQ+XMIBa6htD4iQcbnf05EhxJd1gEXWERnImI5mxUDN2x8VxKFHItNZ3ryWncys3jtqSAO1I5d2UK7hcU0a8opl+l4UFlOc9bm3jS0sCzlkZeLmnlaUsDj5rqeFRTwSO1hqvyfE7LVCwNTcUSkIzCOwWJq4QUpwSEM6JInxpB3Ghvwoa5E2PjRdjHLkT9wZ3Mj4MxzY6jxjueWo8YyuYFY5khwDTZm6oZweimJCCzcuZWbSM9piKOqPM4UVrCmcoSTpZrOFmu4YipcODXqOWwYSAP6TUc0KrYr1XxpUrB5yoNWyUFfCmRcLZQxg/HV/Nvlzv518sdA6/WdC/jb9fa+KFvJX+5tJS7mz8cgZaM9ERjJ0Bj44nW2h2llRulEwSscg5no2co5zOl3ClR8W1dCd8tGeTEOgM/bCjh7XoT36+r5kFrJd81t3AyRcrS6b5U23uzaHYCZ4pa6IyRsSeskNpZKUgnJrCjqIOUceHEWQcTNTyQMr8S0hxTyJsuo8Bbw77GYzSlLCFtWjZ6XyMZs1Koia2iNXkZNVENLM1eyqq8RZxt2kZPaTNnQlPoPbqLTp9I7lo0PN9cy7LUbETjIklzjHrPCenYAEQjXMgc7UWmne8AL6xdUU3yR27vSsmMMKQ2XijGBFI2L5Yatwj0Y9xZPtOPg4JwTgUMcOJMRDTnY+K4nJT8nhO3xNncycuhvyCX+woZ/fJcbmcPciIpiVvJQm4JhdxOFPI4MZsXmXLeSrS8yNXxLNvAt6kl3JGpuWVQcVOv4oI0n5KpEYhGepNkHUCabQAZI92Q2Hu/50S+rQsK2wUs9RFimeLLQvc4LJ/4onF0psk1iuxR7hSMj6CrqoaeKiVXzSquWYq5UK2iq1k3wIlGPd31pt9w4mxNCccrDRz/FScOl2o5WmbkSGnJe058qVayS5zPYYOS7/Y0/YoT63/Dibc9W3l3eQdvez/lXe9O3l3c8rtA/x4fdHw8ZMgQUoY6IRnlhtLWg0IbN4pHe1IxJYgOnwQ6PEI4m57LTa2ShzX63wj0u41m3qwv5dW6cr5baOahVsH5eCErp/pRNcmfDVGFHJJU0RGYwedCPdIxQcSN9OdE3T6ih3shGhNF9IggGiKqiB4eiXxWAWJfNavUW4iYlMxG3U6aUpdQ6m8kd3Y+ZQmLWKfeTEOciUUJOk5XbmC/qoWuqGK+uXCKhxYzLzdV8rUxj7RxwaQ4pJIzIQ6xgx+ycYFIxwaQMtIVsYMfGbY+5I4RoJoSQsEYT/RTAtBNDUY5NgCJtQ9lc2OodovAMDGAhk8EbJrrw16fII4Fx3AseECiLw5O0G6kZXAzS8yt3DzuSAu4K5NzL1/Bndw87mZKuJWWw620bK4np9Mbn0xfRDg3IiO5FZ/ElagELkYmcEOp5xuDidsqJbfUWlY6+SF38EU43IPooV7EDnUn+eMFSB18yRrtjmS0K3J7N+Q281jqLaR6djCLPOKxfOJLsf0ClglEyOz8yLUP4kxFNd3lBVwxq7hqLqSnVvMPBfrX2VVn4VS16TcCfdii56BJxwGjlq91xXyhUrA9S8oBrZwX+1r5y6UV/Hyjk7dXNvLjlQ38eGUT7y518mPvDn66uosfrm7j7eXNvOlu5+351bw9u5KXXat52bWaN+fX8u3RZR9CY/zfCvSQIUP4LDCeHYExbPWNpsM9nDULglgzR0DLlADK7DypdXTmy8Bw7uRn8sScz/PFOp63GXndYeTNegOvNpXybn0F75aZeVqm4E5BOntDo1j6iTdLZ4SzJVTJZxH5rPMW0VXZxqYEA915bbR760kf6sui6DKMXoXUhpYinyVFNlWCyD6Z6oQ6oqyiSZuSSWPKYgwhZWyr/Jzy5Bpa0uop8JAS/JErOfahGKd4cEZTjH6KM7ljY4gaFUSOjTeXWjezv66aK5tX01VdxRZBPB3hiazOUhFh607C0Hm0uESTNcqZtJHupP55PpJRrhSM8UU1IRD99EAyh81DMzYQw3gf6ub6Y3B0ZfEMf3a5B3HQJ4jjQVHs9QvjeHAoXZExXIhN5mZKOteTkunLkXIzR8at3HzuSOX0K4vp1+m5azBw32TkUUU5T6ur+K6uhseNdTytr+SmoYSb5kqulddxt3Uxzz/dyItDW/n+yG7enviMt2e+4tX5Q7w68zWPD+yk//OtnGtfx8YqC3n+IsJHuRP2sQuyieFkjnKm0TeBXJv5GKaEUDLRn/q5EVTMjCbtT850RmdyRlXAKb2M02W/rDUNCPRRc9HAr0nNIb2GwwYt+zXF7FMXsU9dxNfFCj4rLmanQsOnBTL2y4X8++HV/MeVrfz7lU5+Pr+any8s51+ub+I/rm7kb93LeNCh+WBqQjR0wQAnRrtTaONKkY0H5ZMDWe8dT4d7CF1pYm5qFDyo0fJ8iYlXawY5scHE6/UWXrWX82yhmYcaOV2xSayc6kflJAHrIxQcllbTEZDBrgQN+WNDSLQJ5lj1HmJH+SC0jyBmZAi1oeXEjIhCPquAwlAL6027Ec7JZb16G00pizELjGTPklKWsJC1xZ00xltYnKDnSOk6DhS3cDq6mPtnjnLPbOTlxkq+MkhJHRtIin0K2eNjETv4/kNOiB38KJoUjHyMF7rJ/minBqF09Edq44NldhRVLuEYJvrTMMWPTfN82OsdxNGgaI4GhdEVGc2FuAR6kwY5kZlDX66MO9J87soK6M+Tc0cs406GhFtp2fSlZXFNmM6VuKRBTkTRF5fElehELkULuanQ8VBfwq1iJTeL1axyFiC39yFpmDvRQ72IG+qO6M9OyMb4kmXjTu5oV+SDg5ZFHglUzQqixTUG8xQfVA5ONLnFIhntg8ThF07IuWZRccVUSE+Nhq4W3a84YfotJ+rMnKm1cLLKyPEKw3/BiSI+L5azPUvCIb3iV5zYxNsrG/4XTmznp6u7eHd1G28udVKrSv5doH+PDzo+HjJkCKnW7hSMESAe5YR45ALkI11Z5BzLeu9YOjxC6UrP4VqxlAcVar4fFOiX63+5WV3K6/Yy3iwu4bleQk9UFCsnelI+WcAWoZ7NUQq2BItpEWSRbidAOkPEJukKEkb5Ej0ykPRx8WhcCsiemE7cyFjWlu5ihW4r2thaVhRtpiF7BYsSF2MKqqEqazX1uUtYJ66n0qOIvdrPqA8zcjG3jv5jm3m9uoqbK+tIsJ2G0CGW9LFRZDq6kWXrjdjBj9wxAlJGupI7RkDGaG9yHfyQ2HkjGe2G0tEbxVhvlGP9SR/qRMn0MMxzAlGN86d8soAVM73ZMt+bL7yDORQQysmwKM7HxHM5KZnrKWncyMjhVm4Bd6QK7kgV3Msv4q5EyZ3sAm5l5XEjXUJfVh592fncylNyVZzPjXwVN+UG+nUVXLeYua5ScqtIydnsPIpHTiZjhBsp1r6IRgeSbheAxM6P/LECJA7e5Nl7IbdzI2/UbNYEplM3N4RVghTMk70omeBBi3ss+fYCskf7c666nt46FbdrjFwyKuip19H1XqANnK8zc77eTHe9he6GUrobSjnXWMapGhPHKw0cqzBwpFTHsQoTR8tNHLaU8KWmiN2FcrZl5rFfW8Crgwv5a28bf+3byg/XO/n52qaBN217t/Dz1R38fH0HP17bzOtL63lzYQ3vLq7mx57VvLu44X0+OrbyQ2iM/61A7wyKZItfOBu9wljvFsrKuf6snu1Ly9RALGP8KLd3Z4OLgEsZIh5qsnnerOb1SjNv1pbxosPC9x0mXq8v481KM9/XqvhWI6E7PoYNcwQsnOzDitlh9Kqa+DKnnL3pFeyOK2e/fBVbhTVop4mo81VT7CRhYWwtJi81kUODMIeWUxNZR5FzEcHDwliauYqy6Fpasleww/IFZcI6dlXsJuOTBJKtAiidks1y32wqvTKI+uMsJI4CFgZmsyVdzZHmJm5+0UmHMIF270hOGEtJHbuAsI8XkDbci4xh07DMCyLHyo3skc4oHP2Qj/FFOc4fw8wgpLauyGy8qHVNwTQ7EPMMAWWT/Fk+M4ANsz3Z5SrgS19/vvaP4EhIHMeDY7gYm8g1YTJ3MnO4npnLbamc65I8rufLuVOs4m6RigdaPffUWu4ay7ltruZBTSMPWpfxaNEK7jU2cb+ljofL63i4bQ3f7dnM8/1beHl0Gy9Pbef58U6+P7KZl6e38/zMbl6c/Zw3F77i9aVjPD51mC9a1iFxjibWZh76uQloJoehsPdGbu2GZUoAxok+ZI/0QTV2Pn015RwvzuakqZBT5foBgS7TcMJUzEmzihOmYo6U6Dik17BPXcReVSFfFxezJ0/F51IVu6XFfCoW81VeEu++auF/XtzIv1xaxc+nG/jLuRb+drWDf7nRzt+6W3iwJu+DqYlUKzfyHPx+w4mFTtGs945hg0coZ9IyuVYk5X55Mc8XG3m1xsSLdQbedJh4s66U12vLeL3IwHe6XC5GRbFqkhdlkwV0CnVsiVayOSiHJp9M0u38kUwTskmyjERrAVEjAkgfF4fKKY/MCanEjoxlrWUna827UEVWsrywk8aclTQnLMQUVEN56jIapctoy66l3E3BzsIttMZU0JVTzd3Dm3ixqpLexRUIHWaSZB9FqkMEGWPcyBztRY69L7ljBIhGuJDrICBztDdiB1+k9j5IRruhGDPACYWjgIyhTuinhmCaHYh6rD/lkwSsmOHN5gXefOEdxEH/UE6ERXEuOp7LSSKuiVK5kZ5Dn7iA2xI5tyUK+vMKuSNRcjs7n1uZeVzPkHAzO4++nDz6ZHKuivO5LiviRoGWfm0ZN0ymQU4UciJNjG70dDJGuiOy8iHJWkCarT+5dn7kj/Mj194Lqa0nBaNdKbCew0o/EbWzg1npl4xpkiclE9xpWBBOnq0fYlt/zlbX0lun5lZNCT1GBRfrdZxp1nO2SU93o4FzdWbO1Vs4X2ehu76U7vpSzjaWcqraxLEKA8fKDRwu1XG03MiRMiMHLQa+0BSxSyFnW2Y+B/T5g5xo5y99W/nh+qbfcOKnq9v5+doO3l3p5FXPuv9Onv9P18Tv8XsMTqBHupBj40X6CFfSR7giG+ZKW0AUOyPi2e6fyLnMNG4WpvPAWMDzFh2vVpl53m7i9doSfmgv5U1bGd8t1PPYUEBPUgLrZvhQ6ejJhqACvkgysiE4jxqPfJST4lHPSUPrlEXSaH+ihgcinZ5E7rR4siYJSbFPob1iM8uLN1CdtIzCoCq2NR6iKmUh67M2oJynpiKuhs9kSyl0iKI9byV1onIOmRr598tf8vzgUuQznEi0CUBoP7D3nDMqfOAIbvB4LmnoAnLsfMi29kQ82pvMUe7IHAQUjA1E7uiFZkogGcPnIHf0QjHWG8PUEArtXKmf5kfbPH+2uAjY4xfOoaBYToTEcjlRxHWhiL6M7PdTs1+On+/KFPTLFNwrKOSWvJB+tYZvjSaelpfzsraOZxWVPDJbeFxaxrclFVwrLOaqtoSaGR6YpwgQ2vgTM9wToZU3KVaeSBz9ybJ1RmzniXS0H3k27uSNmsn64DRqZwhY5BxB9TRfyid7stA5iqw/O5M7OoAz1bVcbzVwp6WcLqOC8w0GzrQYOd9s5GKjka66Us41lHOm1vI+TzcaOVlfwrEaE4crTBwsM3GwTM+B0hL2mYx8rtGxraCIzekqvlSLeXWkmb9e2c7Pt3bzw81N/Hil8z/lu8sbedPTwdtLG97nDz3t7/PR8aUfQmP8bwV6uZcfnT7BtLsEstYpjFXzglk63Y/WqX5UjBOgt3Zj8TQvTsUn0afM4mmlitdLTLxcaeL7dWa+W2vgxToTb1ZpedWUz1N9DtfSEtjpEs0yRzdWT3Rh2WwfdgkS2RunpSNYwR5ROZtjDJTNy6bcTUlDjIU1aY2UOOURNSwIXaiZ4mATyvlKJLNkZM+SYo6ooiqpGYlLAZ/V7mNpwUo6CtegXpBNpU8+i8OLSB/pTvGEaBb6ZtMenc6OlGIu7d7CwwObWB/gzxqXIPrathD00RSShvmSYeWD8OM5FDh6k2/vTdqf55I1wonCcf7k23lhnB5CyfRwcq28UU0MRj8tkDqPSIrHCKiaGkjdFC/a5wvYuEDA5z6RfO0bzkFBOMcCw7kYFcO1hESupGZzNUPM1axcLudIuCSWcEWs4IpUw3WFnnuWCr6trqW/ooy7Zgv3LCXcLlFxr9FCf1s1D7Yu4emXa3m2r53vDq3j1bFO3h7u5NWJTbw80cnrU1t427WDH7s/HXxS8TNe9u7hpytnONi6hKxZnkhtvUn5aBZ5Vq7oxgVQYOtF8YQI0v80kxvVtRzOT+N8aTHnanScq9BzpkzLKYuak2YVx41FHDfrOFKi4ZBBxX6Nmr3FavYUqtgpV7BbLOOL9AyOSpN5pXBtwwAAIABJREFU3Gnhx4tr+dvVdn443cDPpxv5l8tr+NuNDfx0uYUnnfoPpiZSRrqQbe35nhN5w11ZLYhke3gc2/0TOZuRyg1lGg+M+Txv1vFypZnna028bvuFE6V816rjsaGAi0nxrJvhS+WYQU4kGukIyqPKPY/CyQmo5qSic8lGaBtAxDB/JNMSkUyPJ3NiEiL7FNrKNrFSvZEa0Qo04XVsrt1PVepC1maso9hZR0VsNbsliylyjGGNZDmN6dUcNjXyrz1f8HTvIgpnuRJvLSDJzo+00b5kjwp7z4ncMQKShi4g2/a3nJDa+5HvGIDc0Qv15AAyhs+hYIwnirHe6KcEU2TnSt1UX9bM9WOLi4CvBjlxPDiG3kQR15JE9KVn0yf++5rSe1ZIFfTnK7klLxy4KFti5ElZOS9qanlWXsG3ZguPSsv4xlDG1cJietV6Kqe5Y5zoi9BGQMxwD5JGeZFi5YHEUYDYwR2xrScSG19k1m4UWM9mjUBIzXQ/FjqFUzXVh/LJnjTNDydnqCu5tgGcqarheouBW42lnDUpOTfIiXNNRi40GOmqtXC2vuxXnDBzqqGEE3UlHK02vufEgVI9+y0G9hpL+FyjZWt+IZ1pxezRSXg5yImf+nbx7sY/5sTbSxu49/fTyN8F+vf4YOPjIUOGkDzciWxrT3JsvMix8UI3JpD1IXFsDY5mZ6CQCzmZ/61AP23R8I1WxoWEONbP8qNmvA+LnVPYHaujM0yOflYaFa5SWiMMKGYmI7QNIHJYACqXHFLHhZE6No4U+xSapK3owiw0C1fRlLqaFYWbaJasYXnKakqDashylrGnuI09oRr257Ui986kNamYd4cPIp41C7FDKIk2YaSM9SBjjAe51uFk2/m8F+iUka7kjQ9CPNobiZ0v6SNcybLyQGrvh9TWjeKJAnKsFiCzc0M5zgf5BC9yRs2icnoAJtsFLJkiYIuTP3t8wjgaGMW5qDiuC0XcyhRzI1v6vjneLyjiYaGaO8pivi0x8ri0lH5jCd9WV/JdcwPPWxp51ljPw+oKHlSW02+ycNNo5kS+mrQ/TMQwOZa4ET4kWPkMfk3Kl7zxQRRPCyLT2hWZrYA8azfUY13YGJ5J45wglrpFUzXVh/pZAdTNCuL/Z+89g9s804NdnDNnkrNxdtdq7JQoqvdKSey9995BgAQJAgQBEAQBAgR7LyJV2ESqV6tavVm992Z1WVbvvdi72W+/XOcHZcbeOIlzMpP4m/E98wzeAQHi13Nf19zvc9+vZnAAmda+HKuu40qLgW+aKzhhUnGspuBnBfpItYnDVUUcrir6WYHeWVzA9iIdWwv1vQK9PFXD7iIFH4/M7RXod1eW8u78v14/lug3Zxfz9sxiPp7o7l0P98z+NSTG/1CgBQIB3Q4hLHWJotshmLYJvrRN8GPmcGeqhvqgt/aibKAz692CuJwl4n5RLi+aCnk+18DzTgOvWwt41mXkbbee17NzeVoq4bZcxB6/OLqHezNrlAtzp4ay2k/B7tgCNgaI2B2rZkWIirKJaRSOz6TSS8sW1UL0EzMI/6M3XYoFZE0QoXPVkzJMSIFHIY3Js5md0Ult4ky0/kXMzJzDurK1dElnkzUhkQ0SPRKzaWSZebFTXc7VhWt5tPUI3x7Zw56mCjaFJtMdGMe13RuIN3Mn1doTkbUHSX0dSOvvQM5AD6TWbqSZO5Fu4UjeUC/y7N17jkLZ+ZLWZwb6MUHkDfPGMDoIucV0ysZ4Uz7YiTIrB1pH+zF/zHRWOnixdoYPO72COBUWzdGwKI6ExbArJJptQUkcipZyMlnFzTw9NzUF3Ckp4k65iWslBm7qDVxT53M9X82t8kLuzqvh3qpmHm3q4MmWbh5u7OTp1vk8376Ql7u7eLOnk/cHFvH+0DI+HFvFdyfX8v7kRt6d2cTLc1v4ePkQr08eoFtSgtjOg5S+k8k2cyOz7zR0w71J/MfJXCgr42xRLsf0BZyo0nO8QsexMh1HSrQcLdNxoFjDwdJ89hjy2GvM7xFoTY9Ar89VsUqhZk1mNkdkmdxq0fDhaCvfX1zEh2MzeXOojr+c7+J/X17Mx3PNPFrz6zkD3cMJF9ItXEm3cKVgkC8L/KNYGRDBOr8ETqWncUUp7BHomTpedv5rgX7UpOVegZRTsVG9nJgzPZl1kQUsDcpBPyGV0ulZNAZoezkR2scHtYOY1CEhpNhFkTwwhYbMJgzhZVRHzaYh6QdOzKM1sQOTTyUZM2RszO1gS7CWrZmN5HlLmJWg4cX2LcinOZBhG0CcRTBJg11IG+iCxCK4pyfGxoOsT3cqZfZ+ZFi6/YQT2bZeSK0dUQ/1It1sKtnWP+KE+UTKx/hg+hEntrgHsdc3jBNh0Xwdn8i1tIyfcOK2XMW3uXncVOZxr9DAg+JPnKgs52ljPc+a6nncUMvdynK+rSjlVlExVwxF7JeqEX42jIKh4T/iRM+Z7Wx7P5QjfRBbOpFt5UW2hSMF9k4s8E+hfqIfcxzDqRjlTt0EX6rG+qCx+8SJqhquNBu43ljCiWI1x2p1PxXo2h6B/oERh6uMnwS68CcC/WNOfJn/SaBT8thTouTDJ058vLaOt5f/bU74Oo//TaB/i199/EEgEBDX14nk/m6kmnkgNPdEN9iVDvcYNoSnsNoviJNiId/kpvOgOJencwy8WljK64XFvO3W836hkTfzjTxr0XJfn8mJuFC6xnhTbevDXMcwuoPFdAYWIhsUhnxsHJXhOqIsvUi08iXawgfN9EwSbcNJGhhN+jAhDcl1lAUXEW8diWRcFh2KpcwzrqElfxl1uQvI9ixgs3ELSwKNXC1eRtZIL9aWtHDli61IJgYgGhFBtIUnKbYBJFv6kG7tR/ZAdxT23kiserqr5XaepJg5kTnIG6GFC6nmzoit3VFau6EZ6IXK2p08W0+UVm4UjvBHaeVM5dgw9DbuqPo40DxkOssmu7PB0Yv9vkFciIrhYnwyV0RZ3JAquJqdww1VHt8U6LhRqOdeZTnPWhp50FTH3fpqnrY08qChhifNDTyb1cS31eVc0ai5VpLLXI8QEj6bhmZ8KKG2rsQPCSLazIc0G18Uw7zJsnPqEWibHoHWD3NheaSExhkh1E4NoHCYI6ZRrhSNdKZ8UjTC/i6crG3kUmMR1xoqOFGWx8UmE2dmFnG8Qc/BWi2Hq0o5XFXKkeoyDleVcrCimMP1xRysNbG/qpQ9ZaXsLilhh0nHNmMBWwv1bNBoWavMZ5lIzv76PN6f6+L7G1/y3dUVvLvUxrsL3by7sIB355fw4cIKPl5ayZuvl/DmYs/IojenunhzbB7fHeni1fFunp/o5uFXzb+GxPiLBHqxUwTLXKPpmOTPnHFetE7ypWGcBxUjfdDbeqOzcKJtjBsn4hO5rZdyrzaPx20GnnYYeNWm43lnIW/mG3ndpuZNnZxHWgln4yJZPtWFuqEz6HDM4GBWA0u9wtkYmMTueCW7haVUT0pBP05EtZuOkqlZKMeJCLYMYI6wmSiLIHKn5pA9PhuNSwElgaUUempoSqhDMiGT2eK5zMxopjq5itVFyzAGynH7h0kYJ8fSESrnUMNirm/bw4vjW1mSLmKRVxK71UWsLS0mzsqVNFtfUi3dEJo59Ui0pStiWy8kA73IG9HTS6Ad5oXS3h3VEE+ybZxIN5uK0t4Dpb0nEpupKAY5UjchHPWAGSg+n0J+3zEYbaZRPdSZrvFuLJ3sSt0IJ1qneLHOP5FDiTmckeZxMU/NZaWcG/kabhbquabX8XV+HhfVSq6qNHyjLeBOhZE7HdU8WDaT++vbeLixkwdf9oj0o03zeLyxldfbu3i7eyFv9y/h7cFlvD+6kr8c3sJ3Jzbz3bkdfH9xH/905Sh/vnyGg/PmE209iZQ+Lkj+6IKsvzPh//d4NqZncrlay3GdhjMVJo5V5nO4rIADpRqOVOjYX5zHPpOa3Xol+4ry2a3XsFmTx2ZNPl/mqFido+aLnFz2SLM4W5DOn7bO5C8nm/j+SD1v91bzT6db+euVxXw4N5dHX/56BDquryPJ/V1JGeCO0NyDgsFudHjEsD4smTV+wZwQpXJTIea+ScHT2QZeLSjl1QLTTzjx9BMnjseG0TXWi5pBPsydEUF3kJgO/wLkdmHIxsRSEVZA/EB/kqz9iDL3Ru2QTvKgCBJto3o5URFaQsrgeLIny2mTLaJdv4rmvKXU5nQh89KxXreBZUFFXDQsRDEhkG5FCUfalyEe50vasHCiLbxItvEj2cILsZUv2YM8UNh7k2HlTErfqcgGeZLy6Sy00MKFFDMnxFbu5Fq5kjfQi1xLV1Q2Hiit3SgY5ovSypmKMaHorN1Q9XFg5pBpLJvsxoYZXuzzDeJ8VAwXE5K5LMrkelYOV7Pl3FDmcUtbwHW9jnsVZTxtbuBBY+1POPF4Zj1PWxq5U13OVa2GayUq5niEkPiZA6oxIYTZuBI3OIAYM1/SbHzJGepF5iAn0i2dyLb2ItvckcLhriwJT6d2agBNM0IxjnCmZIw7hhFOFI8JI7W/Cydq6rnUaOJyXQknSvO40FjEmZlGjjXoOVij5XBlCYcqSz/xooSD5aZeTuyrLOGr0hJ2lxSzw1TwiRM6NmjyWZOrYalQxsEmDe/PdfP99Q18vLqcdxfbeHe+i3fnF/Du/GLeX1jBh0sreHNpyS+R5//pPfFb/BafmkPM3Um39iWpnytCc08KBrsyyzGM5b6RrA0I4VxWxk8E+sX8Yl7OL+LNzwj0sfhQWsd6UmrrxUzHEFYmq8gdHE6WTRCx5p4sVsxFOCyMrBFRJA0KRj4hlWS7SFIHxxNtFk6beh6zxC0k2EYjGZVBnksBLZnzqMvqpMO4hobsLmaLO9mmXsTunFYaPTJYklhIhp0TOeNCiB/oT7y1L+lDwkgw80Rk6UOWjWuvQKcNmIZqmD8Ztp6IrNyQDPQisd90hBYuyG3cUNh6ILN2JcvCCbW9DzmDXFEN8UQ/0h/DMD/k/RzI/v0YiqwdaB/vxQYXf06ERXM+NpELyWIuiTO5nCXjWq6Km5p8buRpuF1o4EltNU8a6nqmB8xt4fHM+p8I9NfKfM5osika4Ujq555I7QOItvcmfkgQSbbBZNgFkj82iHSbaWRYu5Bh5ka2uSMlY31YGpFB1SRfqib5UjTShapJvphGudLknEqmtTfHquu4PLOEb2c3cKJUx6kqI6caSjheX8zh2qKfFeiDtUXsrzayt6KY3SXF7DSZ2GbUsqUwn826AtbnaVityGNpmozz88r/Q4H+7tJK3l1YxLuzC3h3sov3R+fx9nAnj4908PJgI+92lPFoWcGvITH+sgr09FA6pgQwZ6I3TeM8qR/jQdUodypHemAY5E2emSsVgx3ZGRrF1dw07pereTzHwJMOAy/a9bzqLOTVgiLed+t5O0vJM1Mm18SJfOkZSrdDLF9G5bHIM5EVrsHsCI5hY4iI9eEy6icnohkRT7l7AWXTlchHpqLz1KD1yiPMIhDR0HikI1KQjkpB66ggZ4qE4kADhY55hPYLQu4op0vWTWNqMx05C2mJn8Ue7SJ2KKs539rNm0sXeXVyK12xUayMiOL96lXkTQ8iziaIFMue29vyoQEILVx6egmsPUi39STDygWFvS/Sgd7kDPJCae/RW6XLtJpB7kA3dMP9UNq6UjQyEOOIAPJs3Ujv44CwrxNKS0cKbGdQM9KNDUHJnEpTcjVHzdeKTE5L07gkk3M5J5eruUpu5Gm4kqvkcq6SywolV5UarhfquVll5E5bNQ+WNPJw7VzurW/nwfpWHm+Y27O+bOXF5g5ebe/i5e4FvN63mDeHlvHmyCq+P7WJ9yc28eHsTr67tJ+Plw/x6sZebqzdSNznDoj+6ELE/zWK2N85UO8awSlTLod1cvZXGjlRruVIeQGHyrQcKNGwvziPPQYluwwqdhnz2GXMZ4e+gC35WjapNazPVrEmR8buHCGHVPHcqJfzckUBL1fn8Wilmr8cm80/X53PX7+ey7Mtv54mwkQzN0SW3j2cMPPo4cSMUJb69HDibGY6t3LTewR6joHn84t52W3kTbeO9wuMvOn+QaAlHIvr4USZrRczZ4SyLEGBamgkWTZBxFl6055eT9qIcDKHR5I0KJjsccmkDI4ixS6WaPMI5uZ2MCu9hSS7WDJGpqNyLqBZ0sOJtsIvaJDOY7a4g02KbnbltNLoKaErJh/pMHdkY4KJH+hPnLUvYvtQEsw8SbPw+lecUA7xRWztTpql679wwryHEzk27sit3ZBaOKOy8ybHzg2lvQf6Ef4UDvVF3s8B2R/GUmQ9jfZxnmxw8ed4aBTnYhN6OfF1ZjbXclXcyNN84kQhj2uqeNJQy5Om+t4pM0+aG3ja0sjt6nIuq7Wc1sgwDu/hRKadP9H2XsTbB5FoE0z6oAA0YwIRW08nw9qZDDNXpOYzKB3nw6JQEeXjvahzCKR4tBtVk3wxjnCmZloCEisvjlXVcXlmMbeaazlequNkpZFT9cUcqzdxuMbI4cqSXlYcrirlYLmJAzVG9lcb2VNuYlex6RMn8j9xQss6dR5f5KhZmibjQnd5r0B/d2U57y628u5CF+/Oz+fd+cU9hZaLK3h6sus3gf4t/o+I3gp0ygB3Evu6IDT3RGnpQOOUAJZ4hrE5PJozEvFPBPpZVxHPuwy87tL9rEDPHOuOcaAH9U4hzA4RkjEoiLQB3sjHxqF1z0LvJiV7VAyiYZHIxqcgHhZPjEUo4X2DKc9sZG5OO/VhVeRPUlLoqKMyopaSuAaK01pYXL6Z+dovmJPXzpamDbTEGmiL0jE7Lp9Ee2+iLL1IHRxMvIU34kHBpJp5oh7uj3FiJJnWLqRbOFIwJoQUMyekg33JtvdDaOFCuo0HqWbTkNp5IB/ijWKYLxJbV3JH+pBl50KuvQem8SFoBnsi7O+CqM8MCiwdaBvtzDoHVzY7ufOVXwjHYhI5kZTKaXEGF7Ky+UaZx22NljuFBh6UlfK0rufBD/frq7lbW8m9uiquFhv4WmngkDSDklFepPcLJnNQMIkjg0gYGox4SBRZQ0IwTo4gy84J5XB/Mi09yBownapJgXQHpjDbLYqqSb6UjfOkyTG059VZiGyQP0crazlXq+dSdRn7tHnszlexv6SQfaWF7C03/KxAH6gxsq/KwFdlRew0FbHdaGSrQcNmvYaN2nzWKNWskqtYIszm9qqWnsT47wj095dW8vHMAj6c7ObD0Xl8ONTBx/1tvNxcya3WdPYq/Cl3mPJrSIy/SKAFAgEtk/xoHO9L3Th/ascHUDnaj4pRvhTaB5AzwAOdpRMrXQI4nyHktkHGo0YdTzqMPJ1n5FW3gefdJt4tNPK2VcWrqmxuqiQcjRey0iWahmHudE4NZJmjP9u8/NgcmMquGCWdLiISfjeNdJsoDFNyMDrksDxnAUmDI4i1DCDOOhDFKCH5U7ORjxeTNT4NxZRM8qYpqAmrQDI+naSRyeT76qiKr0MyOpH2qHyuSzV8HZ/A+eZKHu/cxPzAQE7rJVyZU0KUtQtxNhGk23qSPdi3dxykyMqNdGsPsgd6k2HpRtoAJ7IHeiMb6I3UxhGlnTtKa/eeOzqDvMmyckQ/LohsW2eM40MoG+NPmZ0DensPioe6si5IyN5oMWeFUs6LhJzN6NlD5yRZXMqW83W2nBuyXG7KldyQ53I9R8k1eS43VBpuFRq4U1XK3VmV3O6s4uGCRh6vnMnjlTN5snImj1e18OSLFp6tn8uLrZ282N7Fy68W8Gr/Yt4eXsG7o+t4c3Q9H8/s5P35PXx/6TBvrn3Fn66e5PrydUR/PpSEP0wk/g9upPQZxWWtnLMGKcfqSjhSrudIac80jgPFPVM49hjy2KVXscuo/iTROrYVFLBZk89qVQ6b1XL252ZyQpXKmfwETukiOa9P4GyVhO/2z+GfLy/gny628nzjr+cMdGwfx15OpJp5oLB0oH6SP4s9w9kUFsXpDBE3FWIeFOfyZI6BZ/OKeD7PwOt5PxbofO7rMzkaF8LMMW4YB3rS4Bzawwm7YIQDvJGNjUPnmU3edBGSYeGfOJFM2pAYYixCCesbTJmkgdacDsr9TagnKtA7FlARVkNZfCNlotksLt3IPM1K5ig72DZzI42ROmaF5VEfpiDBzpMYKx9S7AJJsPRBZBtEqpkH6mG+GCeEI7FyQWzuRP6ooN47ldLBvqSaO/dwYsA0sga5I7P3ImeoN5kD3VCM8EFq50quvSem8aFoB7uT1s8Rcd8Z6KwcaB3tzGoHVzY6ubPbL4SjMQm9nLgolXErN4/b+QXc0Rt5UFbGk7panjY3cL++irvVFdyvreRaUSGXVXoOSTMxDfcgvV8wkkFBJIwIJGFIMGn2EWTaB1E4KQLJQCdk9j5ILNzJMp9B1eRAugJTaJwRQuOMEMrHe9HkGErpWHdqpyWSPciPo1U1nKvVc7GymH3aPHZqlOwr1rOv1MC+ciMHK0s5WFHC4aofcaLayN7KQnaXGtlpMrHdaGRLYR6bdHm9nFiRncsSoZTbq1v4cGFBTwX6ynLeXWz/VIH+QaCX892F5b9Unv+n98Rv8X9AfCkQCP5ZIBB4/eg9D4FAcFYgEHwnEAhuCwSC7L/5zt8JBII2gUDwQiAQvBMIBJsFAoHNv/H/ewS6nzOpZh4k9nUhsa8LaX0d0Q/3Z6F3Iis8gzkhFHM9V8qDigIezTbxbF4pr9tNvO4s5u2CUt53FfKqUc0dvZzDMTEYLKZROEXM3fYtNPkmsVQ+i+C+HsjGJ6Gdlkb2iHCy7AORDo5BMiSERBsvosx9Ce8fhiKsiKWmNXRmdKB3zSd7ipT0yel0yuahCyphVvZCtGG1tBatY0XDDpYWLuVo62621C4jfXIs4QO8iLX0J9kmGJFNKCJLP8rG+1A51Z+MAR6k9femcIpvz4zPT13XQgsXRFZuCPs5kWHphtTWHc0oP3KHeqIZ4U7uMC8ybdwoGx/C3KlBmIa6obFxwjTUjdIhztSOcqfNwZ+lbuGscI9kW7CQQzEyjsXLuSjN46I8n2u6Eq4ZSvm2opY7DU1cL6/ksqGYq4XFnM5WcUaWzT6xBs0gH1It/UgcGEL8sCjiBocgGhKK0NoH3fg4xNYepFp4IDb3QjnYh6LxniyJkdDgHEatQwCV471pnBxA5Wg3aiZHohzsx4XGJs5XazhpyGOjTMoKYQobZVJ2qJXszFOxy2hku17PvtJS9pWWsr+059jGnrJSdpqKPlWgi9hZbGBTgZZNBXrW5OazOCOH5TIxj7Z08udrq/j+xhI+XlzI9+cW8uFcFx/OdfHdhfl8ONfFu9NdfDg5nw+HZ/NmTw3P11VweZaatQkR6IZNJOn3E4j8R4dfkhj/W/bEL1l1EwKoHONH9egAaseGUTUylNJhvpiGBqC29iPr91OpHzaDo4mJfKMU86Q6n2dtRTzpNPK8y8CLbiPvFpbyodvA61kavtVnc06cwpcuYbSOcKJtvDdLXCJZ7RzCJp9YtgZncD5vFjr7UNKtQtBNzaUztYGciUJEw6JRTU0nc3QCyvEi1JMyKZiWS4GjCq2TipzJUtJHCSkPLmV26mzaMuaQPiaT7CkyNikaeFRYyu2ERE7pdOxfsYIDiVm8WVLBFoOKWOtQEqxiSLNxJ93Go1coEvtNR2LrhcTKneyB3qQNcELY35EMW09kVq6oB3oit3JFZe+NdKA7imG+KId7kjPMC6mtO+Xjgpg1yZ/Wqf6s8Ijkq6g0zguzuCQUcyYxhZNpYs6kS7iQlc2lbDmXpDKuZudwU6HimkzBjRwl1+W53Fbn862+iAfVJu41FPNtSxn32mt4tKCOxwvreLSonseLG3i6ehaPV8/ixeZOnm5u5+Xu+bzcu6inCn14DR9PfMn7k1t5d2YnH87v5+3lA7y6eYi/Xj/F1+sXEjhgOOF/50Tk78ZzTqvnoi6DkzUGjtUWs6dEzoHigt6HSewx5LFbr2KnsacKvV2vZodex9Z8LRvVeWxRKTiizuGMVsp5nYSL+SmclMVwpiiNjzta4PIS/vflTp5t0P1q9sQPhZaEPs4k9HFG2NcR/XA/5nvFs8IzmOOpaVxTZPGgQsujWSaedZbwqr2IV53FvJnfw4mXjWru6GQcjonBaDkNwxQxV5vXMCdYxILMhh5OjEtEO11E9ohwMgcHkTU4+hMnPD9xIpScUCNLi9bSJm5D56pBNjWbLIcs2qWd6INLacrsRh/ZQKtxLSsadrBEt4SDLdvYXL2UjClxhA3wItbCnyTrINKsQxBZ+FI81ouKKX6k93NH2M8T7QQv0ixdSbN0/QknUvs5kW7hSpaNO3kjfVEM8UAzwh3FUE8ybdwoHRfMrEn+FA1xQ2P7iRNDXagb5U7bVH+WuoWx8kecOJ4g56JUzaUcLdf1JVwzlvJtZR136hu5UV7JFUMx1wqLOS1TckYm4yuh+l84YRtM/NBI4uyCSRsSgtDah4Jxsb2cEJl7kjvYG9MELxZGimlwCqXRMZSqT5yoGO1C1YQwVEP8OFffwIXqfE4UqtkozWKlMJVNsuxeTuw0GHo4UVLSs/6GE7uKTewoMrLDVMhGrZaN+TpWKzQszshhpSKdx1s6+dPVlXx/fTEfLizg49kFvD87j/dn5/HxfDfvz87j3elfXH3+TaB/i383hAKBYJdAIPjfgn9JjIMEAsFHQU8y/H8EAoGbQCB4KxAIwn/0vTaBQHBB0JMM/1EgECwRCATn/o3f6D3CkWbhRUIfZ2J+P53kPzigG+bL3BlhdE/3ZE9UDFfkEu6VanjQYuwV6FftRbzqMvGmo4CXDSpu5WexLTiWFq9Y/nzxJEWOEejHRNAQlUW0pT8xlr6UesrJsA8kZ0QYypHJJJh7kGrnS3h/L8L7h5HjraFZ1sGm+l1Ip8kwOOURax9FaUQZKm89xXFNtKm+QCceW7ZsAAAgAElEQVRsZnXLHupEDaRPTqAtp5YdjevReCnw/dyFkP6exFj6k2juTfWUIGqmB5H2uQupfT1Qj3FFaOGC0MLlJ4lRbOb6qUHGGZmdK/LBbuTaO5Nt54rI3BH1QBcaxnjSMT2Ixa6RbA5OYW+MmKNJEs6KZXydreK6qoDzchUXcvO4ptXzjbaAWwU67paXcreynJulJdyqqOFuYzPfNjZzb/YcnnR383jFAm4s6GSlSofCMYaYIZHED48h3j4E0dBQ0gcFoB4Zgdjag4T+zmTa+JMzyAvDGHeWx0upmR5E/bQgysd60jIthJLhjlRNDEc7IoSrs2ZzoSafPfIM1iansDQqmjVJyWwUidmUnsGGLBlrM7LYpsxjV56WvQWF7Co2sbe8rOdMW5GRbYZCthRq2awrYK0qjxXZShZn5LCzRMO7gwv4/soi3l9t483Z2bw/3cG7M528O9PJ+7PzeHu6g7cn2/l4ZC6PN1Zxb0k5O5VZGMdMJ7y/A9F9nIn6hxmIzFz/o8T437Ynfska8Pef0TAxkPrxQdSMCaF+fBRVI0Mw2HuSa+6BrK8L6s/HsNE3hK8lSTwuVfNkViFP24t42WHidVcxb+aX8WFhMe/bCnhYKueKPJ29QTG0j3Vl7kRf5jtGsNIljM1ekRyIkXNJM5MOn1wUdtHkj5OxRNKGaFg0wiGRiIfHIBwcj3qKAuVkGe2pc6gIKaMitJySkBJMfiZ0HgUUBxQgm5pOm7CNhqhGlsk7uFTWyeVEOWfqqzi3ZBHXDRo+rm8kZchwws1CEdqHk24WgtDCBclAL3KGBZI8wBHpYB9S+s4g3cqNjIGeJPWfQaq5M0IzJ7JsXJAO9kAx1AfFEA9y7N3QjHBDMcSjp8HJYjoN4/2YNy2ADd7h7I9K4XRSOudTxJxLSuV4irBHooViLmf1yPONHCU3c9Vcl+dyRZrDVXkON/OU3C8u4GGlkbu1RdxtKeN2Sxl3Wyt53FXNva4qHi1p4N7Sep6umc2jdbN5srGVJ1vn8XzXYl7uW87rg6v47uRG3h7bwNuT23hzZjfvz+/n47l9/OnKPt5f2MMSjY6AvxtP1P/rzBaxgoPaFI4WqzhdU8nBShX7i7U/keivCtXsMeb1HuPYWahjW4GOzfn57NLkcrRIw8VyDV+bsjinTeBUTiRXijP5+NUc/np9CX+91MrdVYpfzZ5INHNDaO5JQh9non8/naQ/OFAw1KeHEzO8+CoyhsuyDO6W5nG/2dgr0C9/xInn9UpuajLZGhTLbO8EXh/eS61PMsWT42hJyCXK0o9YK1+K3bNJHxxIzohwFMMTSDDzIGWQD+H9vQjrF4LcS0OLvJN11VvJdVGhm6EifkgM5VEVqH0KKY5rYo5iBQWpM/mi+Stq0+rJmJpIh6KeLTWryfNU4NfH9RMn/Ei28KZyUgBVDoEI/+hMSh93lKNcEFo491aehRYuiCzdEJm5kG7+L5yQ2bmiGOyEdJDLTzjR5uDPIpdwNgWn8FW0mCOJEs6IZFySqrim1HJOpuS8Qs1ltZZb+dqf4UQtdxuaud04k3uzZ/O4q4tHy+dzraudZQotuU6xxA6NIn54NHH2IQjtQxDb+qMeHo7YxoPEAS5IrH3JGeSJcYw7S2Ik1DmG0OQUSuX4nqlNJcNnUDEulIIRIVxqmsn5ag27ZWLWJPVwYnViIhtFYjaKM1ifmd3DiVw1O9X57NHq2WkqYk9ZKbtKTL2c2KzXsukTJ5ZLc1mckcOuMg1vD87nuysLeHeljddnZ/PudDvvznTy9nRHLyd2zNP8JtC/xX85bAQCwd1Prz+uLJQIeqoKP45mgUDw1afrvxf0VBxCfvT3fgKB4C8CgcD5Z37nDwKBgFx7PzKtPEkc4EZ0HxeSPvMgd+A0Gqb6UDfag52J0VzOFvKoJJ8HMwt50lHM0w4j9+cV8mJREX/uLOR5aR6Xcws4rNbyvy4cpHhyMMUTA8mfGoZ0fArBfT0I6eNKiYcM+ahI5MPDSLMLJ3N4LIWO2cRb+BNr5kt5cCld6sVoo0pZ07Cd5KkZBPXxI3FEEvWSuaxt2EFVWjN5QXoW5i+kK3s2y7JmkT00jIO1qzmxcj+5gSoCbUNIsA4iuZ8bRWN8qZ0STKKtH/G2QVRPCiGpnytiKx9Elt5IbP1JNfMgpa8rogFuZFi6I7FyRWrritLGGZm1O2IzV7IsZtA4MZBuBx+2B8VzPEHMRWEWF1NFnElJ662Wnc3I5FK2nKuKnnOaN3Q6bpqMXC/pWbd0hdzK1/JNiY5bM4u5vaSee6vn82zbKp7u/IIXe9dzpKseZbCIiBGhJA9LJMbMl6whfiTYuBNj5kGKmS+ygT6UTApkfoSE8mnBzPJKoGZqMM0zIqmeGIh+RAA5gz252drMxQoVO8UZLE8QsjlDxqqYFNbGClkXK2RzXCYbE7JYkyBhdUoW6zJz2ZCp5MtsNRtz8tmYp2dzgZEvtTrWawpYoypgUYaCjmQpB5v0fDjczj9fnMc/nW7hu2MtvD/R1pMUT3bw/al5fDzSytv9s3m6p4W7y8o4U1VA5XR/xBauRH7miLiPI/pBbpjGu/17ifG/dU/80tUwMZD6CYFUjw6kcmQw1aODKRnmhcrCHVl/N6SfjaN7sgdn01K5qpfxrMHAy7klvGwv5lWXiRddpXxYXMbbbh2PGpXczc/mTEIiSx18mTPOk/apwSxzjeCLKWEcFxvYFJXLmphC5LYhVLvpmRvViHxCCqn2kWSMSCTFLpbkgfGkjkhmoWIRHdJ5VAeWUOpfiT6wmpKAcgzeWpKGRZExVkihbxE7qzZwpGEJ53RN7ItWcffEV7yYWcqHLYuIHjCdOGt/kq3dSbcMIcPWm6xB3mTYepLUbxrpFo5IB3r8pKcgxcyJDFtPUvvNIN3clUxrN1TDvFEN9ybTxgG5nRMiCyfSzZwoGOxO6/QwVroGsT8mjcOxQk7Gp3IqPpXjCWmcE2VwOlXEJYmUazIF36rzuZWr4o5CwfVsKddzc7ilUfFtYT4Pygu5X1PEvfpi7jeU8LC5nPsdFdzrrOBeVxUPlzXwdPVsHq6YzcN1bTzeNI/nOxfxfM9SXu1fwYfjG/hwYiNvT2zhzZmdvD2zh/dn9/Lx/B6+u7KXP10+i8bVi/DPXJnnFs4xrYTjpmyOlxZzvN7IXlMe+4ry2W/ScrBE1yvSu0157CnRsrNYz/aiAjbr89hRoOCoScmFKiXnjWkcVUWwLzeaM4UpvN5Sx1++7uSvF2ZyZ7nkV7MnZHY+ZFp7k9TflejPnUn8zBXlQEfqJ3lTP9qNHfFRXJal8aBYw/0mPU/aTTxtN/Cws5AXC4x816HneXkeXyvUHMxR86fDu6n0CKPSMQLd1CjkkxIJ+YETnnLkIyOQDQ8h3T4SybBoCqZJiLcMIM4iEJOfgXbFfIqSallath7xdClhZkGkjEmlRtTCF7VbqRQ2owrUsUi7mAWyVrrT6skaFsqe6lUcXribXP9cAq0DSbAOQmjhTdFoX2qmBJFk40uCTQBlE4JI7u+KyNILkaUXGTa+pJp5kNrLCTckVi7IBvXM5JdauyIycybLfDqNEwOZ7+DDtsA4jiWIuSDM5GKqiNMpPxxNyuKsJIPzUimXFQquKJXcLNRzs8jA9RIj10wGvtEVclOr5VaJjpszi7m9qJ67q7t4tm0lz3at4elXG9nb2oA6JIPoEWEk2EcRb+FHlr0fCdbuxJp5kGrui3yQL6WTAugOz6B8WhAtnnFUTQpk5rRwqif4UzQmGNVQb6601HOhQsU2kZiViUI2ibNYFZPMmpgU1sUI2RQn4cuETNYkZLA6JZN1khzWZyn5Uq5mY24+G/N0bNIWsiG/gPUaLauV2k+cyOZQcw8n/nqhkz+fbubD0WbenWjj7akO3p3s4OPJDt4faeWz3/3dbwL9W/yXY5dAIMj4dP3jxLhBIBB0/M1nEwUCwctP1xMEPZUI87/5zA2BQKD4md/pEegRPp+6j91Jt/Qkva8fefZOGIc4UjbYk5W+4ZxJS+BekYoHMw29Av261cD7OUZezS7iXqOJb2fX8OctqymaMJWySbFk2jpytGYRkf08CerjTvDnLtQE5JE5NIQs+0BEgyNIsg6iJaIUsX0kKbYhpI9IoSjIxMLCVRRGlrFYu4ICbx264CKWlK5jgWEVUic5JZGV6AIMLFEvQu+dx8yYUlpTS+mUV7J39jaE4xOJtvAid2QoxjE+1EwJJsrMgygLXyomBJEywB2JrT9C854GEomtPxJLHySWXmRaeZJl447C3otcaydybD3ItPJEZuXMzEnBLJjuy+6wZI7GizibnM6FlDROJws5Lc7gfKa095bzZVkOVxU9TU+X1Wou5am5qFFzRaXhujqP64Y8HrTXcGtxHQ/WdvFs+1Ke7VrBsz0reX5wDc+PbuHy2pU0pcqJt/Mk3tqPJLsA4iy8STHrSYy1TpEsjZNTOjWQOqcIKib6M3N6BJXj/ahzTEI11IfbHbM5X65khyidHYpc9qry2JYhZXNqOpuTxXwRK2ZVtIhlESksDU9maWQKiyOSWRYvZkVKJivSpCwTSVmWmc2yTBlLM3JYJJIzL1HKqdYSvjvawV/PtvH9iSY+HGnmw48E+v2xVt4dms2zbdU8WlfMqfIcmpx9SfpsEkmfe5Np7YZpeAAtk0Opn+r77yXG/9Y98UtX/YQgmiZFUzculLpxQdSO86dshAcGe18U5l5I/mE0zSNcOBabxjWtjMc1Op63mHjRVsyLjiJetRfxfkEZbxcU8bwtnwclCq5litjkGU7bGCe6xrqycGIAC6dFci63mlUBInaLy8iy8EUyVkhlsImmyGKSBoWQMTIB9dRsRENSiLGNR+pewIKytShmZFM4Q4spvJG5yR3MSW2hOrSB6sh6lqgWMivewMbcWcxJKOFUVCmvt2/h8to6dhpkRPWdTpS5D6lDnBFZeZDS152CMSFk2biQZeOKyGw6ecMDep/c9sPISKGFC2nmLp/u6jgjG+iBYognWTZOqAe6kWXlTpa1JzIrR+rG+rFwhj87I1PZGxnNidg4TsWlcFaYyRmhmNOpIq5m53A1O4drMgU3s2Xclsm5JZdxU6Hgm3w13+ryuVOs5WGlkfu1Ju7VmXgws4xvZxVzp7WUR/PqeNjdwMPFTTxbNZeHa1p5/MOIu91LeL1/NW8Pr+XD8S95e2wjr09s49XJnbw+/RXvL27n7dcHeX9lF++Pbyei7ziUFlM5nCPluEnKvjIt+8sM7DXpOFSqZ7+ppxJ9pMLA/nI924u07Ck3ssOk46syI7tKCtlbqudUdT5fzyrgQoOUs5VCLjRkcKYihVdbq/jLpTb+dLmJR6vVv5o9kTvcB4W9DxlW7ogtPRD39UU92ImioY6UD/ZgpW9YDyeMSh40FfKkw8STDgOvWgt5N8fAq9lG7jYYudNSy6uVCyidOp2SCVFI7ZzZZZxLtJl3LycqfZVkDQ0h80ecaAo1kT4kihTbUMTDkikKKqZLu4yi2Cq6VIvJc9egCzGxuHgt3YUryHZWYAorRR9YxMLc+Rh986kJK6RLUkVXTjW7mjchnJBElLkH2UMDMY7xpXpyEJED3Im28KV0bACpZh5k2Pj9Cyds/Mmw8CbDoocTmdZuvZyQ23ggsfJAZuVM08QgFszwZVdoIkfiRJxNFnM+RcipZCGnRBmck2RxPlPaw4lsOVdzfuBE3k84cU2dx3Wjhvtt1dxaXMf9tV082/aJE3tX8uLQWp4e2cy5FUuoS8giYZAX8VZ+JA7yJ87CixQzH+R2ftQ6RrI4Vkbp1EDqnSMpn+DHzOkRVIzzo3ZGItpRAdyY28S50tweTuQo2JurZptEyuYUMZuSxaz+ESeWhCezJDKFRRHJLIsTszxFwnJhFktFUpZJpCyTZLMsI4dFaTK6ErM/caKd/3Wmle+ON/LhSHNPoeVUDyfeHW3l7cFZ/xl5/k2gf4ufDbmgJzH+EP8sEAg8P13vEQgEtX/z+QBBT+VAIBAIXAQ9ifHv/+YzJwQCgfFnfusPAoGA5shMKp1iKRwd1NPsY+6PZogzWptp6M08mT3On0MxUdzWyXnUbOwV6Gfteh52FPF0yWzerZrPo5kmNoV60TTck8qJIpall1EflE74Z9MJ+tyNoD86kzY4CP00IfkT4gj43QySbYKpCyxEMyUdxbgU8ifJ8PzMnWX6L6hNaiR9nBiNv57y1EZW1W4h3VFGSaAJnZeR1oxuSsIrqU1uokE0k2vLj9KRpEEyIYLtlasJ/HwyKTYuFAx3p3y8H1FmHsRZB1LvEEH85069SfEHmU4390I0oOcstNjcCfUIfxRWjuQO8kY+yI/0/lOpGe3Nwhn+HIgRf6qWCTmfLORUUionhCLOpEt6zmtmy/k6S8bN7Fxu5ii5mvNpakCukmt5Wm4X6LhTZuDu3EruLm/i8cZ2nm7v5tGObp7vW8Kzg0t5fWANLw+s4P2xDVxft4KqOAlRVj2PHQ7/3QyE/Z2onh7OgqgsDOO9qXeOpGZqMPVTQjCN8KBguD+aEf5cndXA+XIlB+VyDurU7FXlcFyXz1fSTHZJMvgyS8UGkZy1iZmsiRKxKjiJRYFxdPlF0+EfRVdYAm0hsXRExNEVncj8mDRmB8Yx0yeW/TUaXu1t4c8nZ/PucC3vDzfx4WR7r0C/O9rKhyOtPFpbzVFdLiXDpiHvMwWJ+XRyRnqgH+VK/QRf2qcE0zjZ599KjP/te+KXLqvf/ZH6CUE0TgqkfqIvVWPcqRjpRrGdG4bB7mgsplI7bAb7IxO4qcnhfoWW5zOLeDrLyNO5hTxrN/B+XhnvFhbzukvH41oFt3JF7AuPpXOsC22j3emYHMKygAy2Co1s9UpkZ6IR0+RUIj73othFTfqQaJLtQlBPlaB1yiVuYAyFPkbCBiaza8EZKhKqEA6MR+uqJ32SkPSJ6TQmtzJPvZzm1Go644oocy1klqKbFbmzebF+He+PLiBvygzSrEMI7eNForUnSRa+iK18kdq6IbfzRG7nibD/VNQj/RFZ9zQV/jCxINXcmXQrd9LN3RCZuSH5dFcnd4gPCusZqOy8kA30JX3ADKTWjlRPC2F5YAy7oxM4EhnFiZgETiemczxRyNm0dG4qVD3TbWQKbsqVfJMt46Y0m1uKHG6oc7ldoOG2UcOdkgLuVRu5W2vifkMpj5rKuDenkocdtTzqauDu/HoeLmnm4RdzeLB+Fg83tvFk+yKe713Bq/1reHtkLW+ObuDVsS28Pr2T12d28e78Vt6cP8SbS3v58+XtfLtqNYl/GMsxSSqnjCr2FWs4VGPiQKmBfUX57DVq2GNQs7con91GLV8V6dlcmMeXWiVrlDI2qBRszFexqyCX0xVaTlZIuNOt5tEXOi40pvBxfQn/dKGZP12o4/GKol/NnmgKy6DcMQb9qEDUA72RmvuhGeKExtrhR5yI5psCGQ9nGnjSbuJJu6GHE+1FPF08izcr5vG4uZitkX40DvegcoKQJWnFNIZkEv7ZdAI/cUJkH0LB1GQ04+MI/MyRJOsgagP05E/NQD4mCdV4Cd6/92SpbhU1iQ1IJmSgDTBQJWpmVe0WMpzkmPyLKPQx0ZLWQVlUDdUJ9dSnNXFp0X7mJWuRTo5mc+kKgvtNJdXWlYJhHpSO9SVqgDtxNgFUTw4joU8PJ4TmnqQMcCfDxg+xuRei/m6k9XdCZOaIargfCmsncgd5k23rS3q/qVSP9maRoz/7okUciknlZHwq55JSOfkTTsi4JJX1cuKGvIcTXyty+VrR86juWwUFfFtm4M7cCu4sa+TRxnaebOvq5cTTA0t5dWA1Lw+s5N3RDVz+YikVMRlEWrv0cOIfZiAyc6ZyWhjdERKME3yocwqnenLQJ064oxvuj35sMF831XC2RMEBuYz9BSr2qnI4WpDHV1IJOyUZfJmpZH2anLUJElZHprEyOIlFAT2c6AyIZl5oPG3BsbRHxP6EE82+ceyv1fBqbzN/OjGLd4dqeH94Ju9PtPHmVHsvJ8YNtf5NoH+L/1LYCwSCxwKBwPZH7/1nKgvjBf8/Kgv+4x3wHzUJj0EjEQ2fRvFIX4rGOZJj54D0c2cax3pxKDKce7ocHjcZeDzHwLO5hbxoL+bhPBMvlpbyuMPAbaOKA3FptE4LZUmClFtLthNj7kbU5z6E/dGNyL6ehP7BFfUkEXNjKvH6O0eizYMwuiuoDy9EM0NEgUsugf19iR0SxVLtUpbqllERW0aOq4w5klYSR4toSm2lJqqG4pBK2pUrqExqpiunnRWGTpbKGlDYhlIepmd+Vh05/RwpsPdGOyqUmN9PJOXz0RSP8SCpnysiS++eoxsD3JHaBZE5zJ9ECyeSzJ3ItvNFau2JcogLhnEhyG28yTBzJG+YO50+0XwZkcD+iGhOxcVzKj6Vk0kizoslvec1r0jlvY1ON3KUP2l8uqrO56bJyI2aIu501vBgRTP3N7TzeHMXDzd28nz7Ql7tWsLrg8t4cWgVTw99wZPD63h1ZgcbZ7eTPC6YsM/ckFqFUDghlNZQEZoRLhRP8MU02pPyMT4UjfDCMCIE0xh/rjaVc6xYzqmSCg4Y8tmrU3PAkM9XWiXblNnslKvYnp3Llkw5X4oz+SIpjRXRKSwKSaTLP5ZOnzha3WNp94thWWwyXySn0B4YQelEb/YU5/D9wTb+dGI2H0/M5uPJbt6f6eLNmbl8ON7K+90tvFpXw8lKGaXTfUnrOw7TmGCqJgZRMc4N0eDxuJsPwtNiMO7mg34uMf6P7In/zGqeFkjz1EBmO4TQNNGf+jHeVAx3pWSYC6ahzlSPcmJrWAJfq1R8W5zH0zoDT5oNPRNt2gp511nC+0Um3swv4HGzggeGbM4lJ7F8cjDNg13onBjB9ngdS/yErPeI5oSsghYvGRkDIymZkUtcPy9EdmHEWwYQYxVM5lgRotEiUoZL2DXnGBVR9cxJn4faXcdcUQfpw8QkjZNTk9VFm7qLDZkt5NhFMU/USEVMPs2xau6s2U2U3SSyxscTb+tH+pAwkq18SbHwIdPGHfUwb7TDvUj9gydp5i5kDZ7aO1M93cYTsXWPdKQN8CDDwosMCw9S+01HYe+N0t4T3Whf5LYeyG18yLSYQdHEALq8wtkSmcDR2ATOJSVzOlXEnog4zoslXM7M5qpUzjVZDtdz5NySZnMrW8ZNuYybytzeYxy3jXncK9Zyt6KQe9VGHtSXcKeljLtzK7nfXsODrnruzK/nwcpm7q9t4uGXc3m0uYvHO5bwYvdqXh/YxOtDm3l1eAsvj2/j1akdvDq9kzenD/H6/F7eX1nPh1M7aInNZmdMOBeL8thdIGO9OptNMhnrxELWZ6SxISOD9ZIsVoskrBZLWJiYyoKoFFpD42gMjKQpNI554cl8ERXHvrw0Xu+u5+XuUm42pLDaEIc6yRlVvAPJTqN+NXvCf7wD/iMn4jFoJGnDp2Ea4dPDiUEOSPu40DDOiwMR4dwtkPO4sfCnnOgs4sWSUh61F/KNQcX+mDTapoWxNDGby91fEmvpTuQfvQn7oxsRfTwI+6MbqolptESU4vV3TkSZB2LyVFITqkMzQ4TG+f9j7z2j2jy3RV1+nLVXSeI4LmCwjXuPe6cjehFVIERHgGiiCQkJRC82zRSb3o17793GvZf0OAaDO4kLxiWJk+x773N/yCHJ2mvfc9c649ydfUfmGPOv/s35PHrf+c4vDocPBPhOFtGW3EpLcitZXpkkCRKolK4mdH4kxf5VrPReSaZrHrXxGyjwL6c+upoNafW0ylaQOM6DHGEqdaH5yEeYoJpoQ8p0V3yGzCfog1lkzLQkYLj54CFLwAgLZOOdCJ9kh2SUCQH6JkSPsx3khGaWMzFjrAc5USvwZJe7mJMe3lz2EXPZN4hL/qGDY0mfRUbzRVTs4Gz/z3kzRs6t2Pi3nEjj1gotvb/ixKM9Db/hRP/pdTw9s5HHZ7fw9bntPLm8n+2rVhM4xxX3dyyIMnJBPceVNS4hKGdYkDPfgYwZVr/ihAu58135rCSTs9oYLmVkc/ItJ07+zIn4aA7HJnAgOp69kTHsDI1gkySY9V6BtLr40WDvQ72NL2ssRdTYe7PON4DNAQHUOLiRO9+OE1mxfHe6mu8vVvLtRR0nXl5rZODqGl5fqObl4fJ/Vp7/EOg/4j9EiJ6e3g96enpP9HSvo5/q6RrjgJ6eXr2enl6m3j8/2zZCT0/vR73/h9m2RmUGHen5tEWl0uAWzmpzf4rNHEicYkL4u0tZOd3iHwr0s+oMntZm8KhWxaNVCu6nJdPpF8qu2DSq3QKpcovEx8AS12G2eHxghftQS2Jn+VPtU8AaUT5uw+xxG27HJnkDCYuCyHdKJsjYE5GBM2kWySSZxhE4Q0JJUBEtSc1IZgWgsNEQY5JMechqCgMqKJI10Zq5k/rEevKFiayPL0fjnEjwRDc2JazGZ4olCZMcCBtrj2ikCSGjlpG31GNwbCPMyHbwBDphjgchxlYEG5kTOsqcuHF2JE2xIHuhF0kTHZGNMiVlmoAaaw92efhxViTmvKc31/xCuB4cydWgUK6HSPksMpqvYuO5nZBMd3wSN2Pkg3k7IZlulYY7udncLc/TrdvaXMXd7dU83F0/2BgfH2jh2bFGnp9sYeD0Op5f2MbLK3t4fv0AXYf3E2shxtvAgnAjcyrtg0maYkLGHFu0M6woWuBC5gwbEscKWLHEi09WajmtieRGXiHnMtWc0ao4o1VxUqPgRGoSx1M1HE1RcSg5hT1x8WyLjGJ7WDQbAyJY6xNGk3swlTa+tLqIOBgezmFZGB3unuTMMuFCoYLvTlXzw+U1vLmyhu+vtfD6Rjsvrtfy+nwpTzfncEoeTKrRFELenUvmDFvKl7pQNt+W0jk2VCxzos7CgwZzD4rn2fyjxvhfUhP/TJvCdCUAACAASURBVMqmLqFqoTNV852omuNA1Uw7SqZakD3FhJXT7amY7cRWBz9uxMbTm6Ggb4WaRyVqnlZpeV6dzotaLa9aMnjZpuFpnYKvC+LojgrgsL0PtVMtqZrlzPmoQloXe7Pb3JdbWZWs9VYRYeSIfLqEqA8lhBi74jncGv9x7qhMkih0LCDfpZDthYcpltYStkxOq3ILFZGNZHgX0xKxjvhFStKdMtkTW8set3SuyisInWpPlruULOdAZDMsCJzkit84R8RGtgSMdiDEyJlIQxty59r96sGVNRlLnAjSNxsciwo2sCbS2BGpoS1SAwHBw02JHCsgbrw9MWNtSJxsSvYCXV1FGZmTNFVA+TIH9nsEclrkx0WRiHMiPy4E6erpdkwctyJldMfF0iWPoysmht6YWHrkcnoS47mTmkS3Mp5edRL3tCnczU6lN0/NncJ07pVk8ag0hwfluTyoXcGDllIerCvn/pYyHu6o4vGeJr7e08aTg5t5dmwHzzp38fTUbp6e20f/hQO8vHCQb68dYeDaWZ7fOMHTi9t4eWIfW0XufK6K5XBsFDWuXjQKfah2dKfRwY1qa0eqBe5UWbtTauFE4TInshc4o5ppg2z8UgJHz0c6TkDyVFOupyv4/vgKBs5ruVkVzOOtWv79Yj4vNqrY4e/2u6mJxpQMOtLyaJWpqHeTUmXmR5GJPYmTTQh/bxkrplv+Y4Feo+VJrZZHNTpO3NMk0SkJZU+slgavMKo9oxHpmyMcZoP7UEvch1oSNV1MpWcOlZ45uA2zw2OkAx1RNSQvCSXHPoGQ8d6IDJxRmcaTZBpH2JxgyoJLaJTXEzQnmCTrVOTmSspDqijwL2dlZBOtGTuoT6inwC2JjrhS1A5ypFO92Bhfhf90GxInOSIda4/PCBNCDZeTs9idkFECwsfYE2poozuBHmtP/Gz3QU6E/cyJyeZkzfcg8WdOTBdQbeXOLncxZ7x9Oe/pzVW/YK4HR/yGEzdj5HTHJ9EVn/SbMaXuhGS6VGp6c7K4U57Hg5YSHSe2rRn8QNDjAy1vOdHA884Wnp9ex/PzW3l5ZTfPrx/ki727iDX3RTTKEqmRORV2QSRPNSVzrh3a6ZasXOBM5gwbkowFrDL34+MV6ZzSRHItJ5+zGamcTldyOl3JSY2C46okjqnUHFGoOJiUzJ5YOdsiZGwLjWaDfzjtolCa3IKotPGhxdmbg+HhHIoMpV3oQf5scy4UJvPdqWreXKri+ytr+P5qC69vtDFwrYbX50q5tzb9D4H+I/6X4y96enpGf5f/l56eno+ent5QPT09Yz3d6+ooPT29P+np6Znr6Zrmr19XV+vpXlOP1dPTe09P97r675vpz6FrjJo8NqysYFtOGdvic2j0iqZaIEQzzYqAdxZTMN2KU54+3ElN4NGqVPpq1HxTo+FpdRrP6tLor0/lcXkKvep4bqSqubtjN7V2gWQu8MVjpDluI6xxH2KKy9+W4jHEjCzzWCrdM2gKKWBj7GpUyyJQLZURPN4b+dxQFItlNPiXIhrjQqJlHLluGYTMlOA32ZeYJfGobLTkeBdRm9BBk3Y7DembaEhrZ62iESd9C/YUbSVokiNplhHsylmLfIILIWOd8dK3Rqy/DO1CDyLGOhBp7EjoaDskBpYEjbElboo90nE2SCc4EDjKnJTpzihm2VKyyJWMKfZEjLZBMcOWKhMn9nn4c87Hj6tiCdcCw7jkH8pFSSBfRMXyuSxGt14rPpmeuHhuxcTyZXQMN+Vx3E5O5m6GhvsFWdwpzeLOmnzutRTzYHMlj7at4cGONTzaXcvD3bX0H6xj4FgTL0+28/Lsel6e20j/lc08vbaXRxdPohH6IxqxkOzFPkQaLkE1TUDKeHNKFrmTO0dI5EgT6uzEfJKv4USKjCt5eVzITedstoYzmamc0io5pVXRma7laKqaQ0oV+5OS2S2PZ0dsIltl8WwKj2NtkIx6UQgdXn4cjwnkbEwAOzy8qTERcKs5ix8uNfDT9QbeXK3nzbVmfrrewZsLVfzYuZKPi7UoJ9sSNdyG7KmO1Jj5Ur7YkdL5dlQucqFJ4MZaexFNlu6U/OMRjv+Smvhncvi//ZWGhULWzLKnYoYtZTMElM60oXC6FQVTrSmd6cB6azHnpbF0aVTcyVfydVkaTyu19K/RMlCj5VVDFi/btQw0a3lWouBBchjn3DyonWlGxWI3TsUV0TTPg6MCGeeSc9nonUzuwhAiJ3uzPqkZbyM7fEc7Ix7tRpFrPv5j/VAtV1Gt3EBT+nYKgmtIcMxnXcEhCkJXUx/cSKZFNlFWSjI8tGwIb+RUSAlbJJnUuMbTIk5FPtuJgEkOeI2ywdfAgYDRzgSPdSXA0IH0aTbkLhQQob8ckZErmQt9iR6j+yBTsIE1QfpWSEfbET7GHulEW/wNTQkYZUqYoQXy8fYop9ugmWnP6sVuxI+zxW/YcvJmO7LDVcJ5/1DOe/tw0cuHW1IZn/oH0yWN4FZEJF3R0XTHy7kZE01PbDS98TH0JsbSo0ygO0XObVUCd9MU3MlU0pOt4k5BGveKMnlQlMm9smzuVOXyqKWUh00l3G0rpm/Lap7sbubr3a083r+RJ4e38OTEDvrP7OX52X0MnNvPywsH+e7qQV5evcDzq1d5/fFxXn50nG8Ob+S8PJhNXiJK5lpRbeJGxlxzCj90oGiuC/lzbMiZIyBtpiXKqdbEj7VGNno5vsPn4z10KZ5DTfAdMoc9oWH8cDCDN9fUPN6n4tm+DL7ZKuPz3CBK5i773dREoyaXDSvL2Zpdyta4LJo8o1gjEKKeZkngO0somGbFSQ8RvSo5D8tU9NWk8k2NWseJ2jSe1aXyzaoUbqvk3FCrubVhC2ts/clcIMJzpDnC4Za4/ZoTZrFUeWTSGLKC9VFVqE1lKBZHEDpRhHxuKMmLIqkVF+Mz1oUkSzn5HpmEzvLHb4qYmKXxpAjSyfJcQbW8nab07TRoN9GQ1kZz3BpcR1mxKbsd6VRXtNYyNmvqiR3vTICRPT6jbJCMWk76Ancixug4ETLaFomBJcGDnBAQOs6OoFHmJE91Inm6gKKFrmRMdSDCyBrFDBtWmzixz13COZGYK2IJV/1DuegfMsiJwYOW+CRux8XzVUwsX0RHczPuLSe0Gu4XZHKnJIve6jzuthRzf3MlD7et5sH2NTzaVcOD3TX0H6hl4OhbTpxZ95YTm3h6bR/3zx5H7SLBZ8QishaLkBktJXWaDcrxZhQtcCVrljOykaY0uwTySb6GTqWMy7m5nM9J42yWepATJ9OVnEjXciRVzcEUJfuSktkVF8+OmES2RsrZKI2lPVBGnVcIHV5ijkcHcjran21unjRY2PFVcxZvLtXz47UG3lyt4821Zn68tpY35yv54cRKlk0b/4dA/xH/W+LX64n09HQriW7o6U4QevV0TfLX8W96enpr9HTXda/09PT26enpjf5PflvXGJOy2FNWz97SBvblr6EjOYMWLwlZM+0IGG5K/lRrTntI6E1N5kG5km8aU3nckMbT+nSe1Knor0/hWVUqX2nk/J8H97AvK4N1bnEEGwoImixEPNySkDGO+BvYEDLGkdSFIXgOMSF1uT8RU12InOZJwBgXYqYHobSIJWW5DD9DRxzeN2Nz9iZ8x7kRMcOf+EXRBE4LpsCzhGRBGiqHLGrj26hNamFb8R42ZG/Da4IHCabBfNJ8lGz7OE7mbSNgtACRkR0iIzv8RpmgmS9EamRL+Bh7Qozt8TOyJmiCA8lT7QgdIyBgrD3BYwWkz/Ugepw1dUudWGvtS4i+OZFGppTOs+awZyBnRWI+DgrmjI+ETi8xH0sj6ZInDo5vdMfEv33sFMtXsTHcSoqnOyWJ+9mpPCjUcr8sm96KHO43FPGoo4S+DWX0ba6gb1sVfTvX8GxfPc8PNTNwvI0Xp9fx7cXNukdO1/bw/KODPL1wglSBJ4rZQhIm2JE43oqsmS4ULRCSP8+b0A+Wsiswio+zlJxQxHA2W8v5vHTO5mg4nZVKpzZFt3YrI5MTaekcU2s4okrlUIqSXQlKdsgVbItNYkt0AmtDZayXhHEkRsTZaA/2eXux39+Lr3et4IdrTb/JN1db6e8s5OvNCvZHhBPxwXySxy6nxkRIg4UnDZaelC+yp83Wl40u3qx39KbJ0o3yJQ7/bxvj//aa+Gezao4DFbPtqZhtT9VcRyrm6EY5tMbLyZlgRtMyF04HxvClQsPtHAWPSjQ8Lk/n2Rotz2rSed6SxsuOTAbaM3haoeJRmoxP/dxYt1jIUT8l6+3DqJ4rZK9zDMeCktniGk3Oh77EzQpgt3o9biMs8RsrxH24PfkOmQQYS3D/wI2CiDJasrdQGLCGuqhN5PpV0qrdxqroZgoj6siNrCFTVERr3Dr2K1o5kb+FItck6vwyaY0uIt4iBO8xTghHCnAdKcBzlB1iYxfkE+woXeKGapotLsOt8TMUkDFNgO/7ywfnRQNGWCAb50T0NBfCJ9oiHW9DmKEFMmMb5BOtSJliToepC7UmnkQZWRI3wpLKhfZ0+sk45uDK54FB3I6I4mZoJLfCwvkyVEp3ZAS9kRHcjY6iOzqS2zEyuuOiuJ0UR7dCTleKnG5lPLfVidzOTKE3T83dFVruF2q5W6Tl7qpsHqwp4F51AXfrV3B/YzkPN62mb2cj3+xr45tD6/jm2HaenNzFs7cS/eL8AV5ePszzK4cZuHaEVx8d5+mlA/zwxRn6NlSzytycNbOdKDX1InuRgPLF9lQudaFkoS1Fi5wpXOBA5kwzlDMtiJ2wnECDxfjpL8drmAneQ5ZQvsSJr6pTeXkikx/OF/DDqTx6yyNotzQh3Xjp76YmGpOy2F1ax96SevbmrmZtopZmTz+yZtgSMMyUvCnWdLqJ6VEl8mCVkq8bUvmmXsPTurRBTjypUPKlOpY3u7ZwpCCPta7RSMfYETTJFfFwS4JHOyDRFxA61gnl/CA83zdBudSPyGkuRExxJ3CsKzHTg1BZxJFqGoP/aGcch5qzPr0D/0leSKdLiFsgI3BqMLnuRSQL0kh1zKZW3kadooXNK3axPnMLPpO8UdnIuFi1G60giuPZmwkeY4fI0A5vQ1sko0xRzxMSZmiLdIw9ocb2SEYLCP57ToyxRjPHjehxVtQucaTFQqTjxGhTyhbYcMgzgDPevnwUEPQbTtyKSxjkRFeMXMeJmBgdJxLlg5y4X5jOvdIsHSfqi3i0toS+9WX0bSof5MTTvXU8P9TE8+NtvDi1jtcXN/P64k4Gru2m/6OD9J0+QqqNF8kfuhI/3paEcZZkznBixTwXcuZ4IR22lH0hMXycqeREio4T53LTOJOtHtwkczJDxUltBsc1aRxNVXNEqeKQQsnO+BS2xyWzLTaJzVHxrA2RsUESypFob87I3Nnr6cmhIBF9u1bw5mojb642DnLi+6st9J8o5NHGf2p13R8C/Uf8bmKInp4etZGpbMxZxdbiavaWNbC5aBXbEpIosRYTNNKcldNsOO3+i0A/adbwtEm327O/UcOLplSeVCrpzVLw3dpWKry8OZ9ejdMHS3AcuoyQD6yRjnMh0NAO9aJQEmaJCR7tQPQMHwLHOhAy3gWNSTihE51xHG6B1yh7EueFINS3IdpCRoEwA099B+QLo5AvSUA6N5pyyRqUlmlUhlazKX0LLapWcn3yaU9oJcs1kc0pVVT4aomeJybdNR47A0uEhgJCxlqRucCTuElCIo0dCRpji+8oSwLG2ZEy3YGoSY5IJwsJGm1FxgIvlFO82WjhyS5HEYnjLIj8wJTiD605KQnnkiSQC14izvr680lk7OAjp0GBjo3XzWrGxNAdL9fNaaamDAr0g7Icesqz6anOp69xBX2tRfSt1Yn015sreLK7hmcHGug/2sLzk2t5eW4DP57bzfeX9vHio318++Vp+k4dJ3KaBWEjliEzWErmDGfSJ1uSMUNI0JCFnElM43JqPCeVsZzOTPuHAt2ZrqUzXctxTdqgQO9TaNiTlMruRBVbYxLZEBHL9tBYTsT7cz7OjaOBbtxQB/HdyUp+utHyG4H+6VoDA0cy+XxVBO0O3qjHWrDaxJV2K3caTZxosXCl1VLIbo9gdokCBwW6Yqnj76Ex/ksC7WowmdXznCj/0I7V85xYNcuWFVOtyBhnRobxMsrnWLPdyZeL4XK6MlK4s0LF15UZPK7O4FmtlueNWl6s1TLQkcVAXSqPciL5IiKQnfahdGfWs2KyFfXz3DkoTmFPgIL9LonkzpEgMXBgj3oTYZPdERk64vSeBVm28QRN9CBkYgABU4PZV3WYLPcVFLhXkudeTF18B/XqzRTHNFGbtoWKxHYaFBtYFVXLjrKjbMvdxZbM9ezIX8+ZlkOsUzZTJM7DxdgJl9EuiEfZIZ/qQvoMG3Jn2yLSt8R7tCMly1wIMdA9tAocaUmQvpVuVeQYG+TTnQkystFJx2grsheJUEwSssnSi8PufqyaLSTo3YXkLBTSYe3NCXc/Ppb4czMkjM+Dw+gOD6dLGkZPZAS9ski6w6V0RUjpiorgdlwU3Qkx3EqOo/tngU5NpDs9md6cVO7kqrlXkEZPYRq9xRncLdc9LLxfu4L7LYX0rdONUX29q5Gv97fSd2gTfce26ST61F6enzvMwKUT9F8+xMC1I7y8cYwfvzzLt5908ubjM+yIjqVpiSvVJu6sthbSZu1Ms70HtXauVFk5sdrKjXJTF1YuF5I+zxHlHGcSp9oTPtKM2NE25E2x4mhCBK8OV8D1NQwc0nBMHknxYkdWLHL63dTEz5zYUrSGPaX1bFpRxtb4JIqtfAkcac6KqQJOCn8R6CdNGp40ptPfoOVZg5qBxlQelyvoyUjm5doWGoKCOKOuxGXY0kFOhBk7E2RkT9JsCfEzfQgysidquojAsY6EjHchdWkYoROccR5hiaeBHXEfBuCmb0OsVTR5Lml4GTgQt0BG3GI5EfNjKRNXobTQUBFSzca0TTQrW8kTF9IibyLbNYlt6hrKvDXELw4kzUmOg6E1QkMBoeOsyVzgQdwkIRHGjgSPtcPX0IrA8XYopjkgm+hI2CQXgsZYkz7fE+VkTzaYe7LTUUTiOEtkw8wom2tLp5+US36BnPcScdbHn48jYgdHN37ebd71lhNd0dF0vV3L2KNScD8rlQeF6dwvy+Z2eTY9a/Loayykr3WljhPry/h6UzlPdtfw9EDD4OfpX57bwA/ndvPdpb0MfLSX11+covfwAaJnWBM6fCky/aVkTHckbbIl6dNdCRm6mLNJaVxKjeekMo7TWWn/UKBPpKXTma7lmDqNw0odJ/Yq1OxOVLEzPoUt0QmsD49he2gsx+V+nItx40iAGx+nBfNtZwU/Xm/WMeKtRP94tZ7nhzPYo/b+Q6D/iP+WMURPT49Sj0Q2KIrYXVzN4cYWTlW3sE2TSrV7BKF/WUzBZCtOekq4l5ZCX5Wapy1pPGvS8qw5k+ft2Qw0ZPF0VSoPc5J407SaTRFJKOa44D3MBK8Rlri+vwyJkR3CIctJM4lEYmRH6ARXfA3s8RouQLUkkiInDdEz/Ag0dkBsZEupRwY2Q8zwGONKrmsOKebJ+E30JXqBjPDZYSRZJLPCr5jCgFJqE1spilhNjbKF7YUbKPJKIGySNbdbzyIeZ8tXW07gOcoaf0MX/IYtI2WmgEj9pUQYmBJhZEXgSHMCR1mTPE1A+HhrAo2sCBi2lNwPhWRPdmKXUESnSELJNBfEf5tL6RIhh72lHHcUctVbRFe4jE/eXjN3yaJ+uWaOjqY7Kppb0dHcToinKzmBO2old7JUPCrQcvftztqHFXk8aizkfmMB95oKefT2JPrx7hqe7K/n+bFWnh1vZeDMOl6c28J3V/bw/fXDfP9JJ999cpqP23cSOk6A+K8fohhriXyMJcmTXQkbvpgv8ou4qIrmjDqWC/lazuQoOZOj5HR2Cp0ZSZzKUnAqI41TGWl0pqs5rlFxNDWFfQoN+1PSBk8YdsgV7JOFciVFykcKH06EW3FvVRzfXmjm20/X8/p6M//+aRs/XK/l1bVSvtmWzllZJEWLnMmf48Q6S3/qzFxoFbizzsaNbQ4eHPAQs0MoptXalQYLIbU2Xr+HxvgvCbSenh5Vcx0pmW5N8TQrSqZbUzTVkqwJVmRPMKP0Q2uaTV04ESzjM7WKroIU+iq0PK3Jpr8uixdNWbxoS+e7dVpeNCp5XpRKb1IaRwJTWO8rp3iaHZXzfLiQWM5aYSTb3OLQzhMRON6FUq88YmaL8TV0xGmIOVm2ctxHWiCd6k/41EhKwkrIc80kaKKYkCkhRM6NIdd9JVrPQrJDKikMqaYssoVSWSttFUdpyd9BtlcWIdPdiZjhwtmyHWwtbOX6uoukOafgMnw5fkYmJEwUULxUTLC+KT5DPiR7gQvxE22QjrZDOtqOUCNbxIZWSKe4oJhmT8R4O2TTPQkxtkMx05X0KS40mQk56y9mr4M/Cn0TQvXnUL9cyFF3fz4S+fKFny+f+wdwKyyM2xHh9ERGcCdKRne4lNsR4XwVKaUrJpKuOBm3EmPoUugEukcRz21VAncylfRmqejNSeV2vpruAjW9ZZn0VuVyZ00+D+rzedBSwMMNq3i0vY6He5r5et9aHh/ZwNPjW3nWuYv+Mwd5fuEE/ZeP8PzqYV7eOMbLG8d4/fEJXn/SyeurR6gyt6HdypMORz/WufrS6uZJh6eYVqEPjY4iagReVFp6UmjqQM5iRzLmO5A534m8pc5ULHZiV0AQvW3Z/Hi8lEe1ahqtzClb6ETBnH/4LuD/6xiip6dHiXsC65NXsqtoDYcaWji5poltGjVr3MIJ/csS8idZccLDj7saBX2VqTxtTuNpk5ZnzRn0t2cx0JDJ41IVD7ITeVm7ivXSBJLnOOPx/tJBTvgZ2uL+vgmqJWE6Tox3xUffFs9h1igXhVNoryJquhj/MfaIDKwodFFj/4GljhMu2SSbJvyGE8kWCgp8V7LCv5S6pDZKoqqpUTazNX8dJaIkZNPt+bz2GP6THLjRvg/XEeaIhtsRMNIU5SzbQU5IR1kQ8CtOSMdZE2BoQcCwpWTPciF7siO7hN4c9/KjeKozfu/Mo2ypG4e9pBx3EHJVJOKWNPIXTkTKdMIsj+NmdBRdUVHcio6iO17OreR4etVv1zIWpHO3MJ17JZk8KNdx4l5jAfeaCni0oZRHmyv4Zlc1T/bX03+0hWfHW3n+Mycu7+a764f57pNOvv34FFcaNxM23hq/d2aTPNYK+WgLEic5Ix2+mM9yC7mgjOK0OobzuWmc/vnT9FkKOjOSOJmRwkmthpNazW84sV+hZp9Cww65QseJuGT2R4VyOSWUGwoRJ8KtuF8Zr+PEJx28vt7MT5+28sP1Wl5eKebrzWnMH2v0h0D/Ef8tY4ienh7Ji31ojctlX1kdR5paOdPYwa68LBoDEwkbakr6eNP/qUC/WpPJ3Qw531SupEEcTpljJJ5Dl+M53ByP4Wb4j7YncKwj0TNE+BnaEjjWkSBjIeJRDqx0VJNnoyBiiojI8a6Ihpohm+xFhnUyVn9aRoFbHlHzI1FaKEhYJifVSknQtAC09umUB1eSaK1gdXQ9FXH1HG88yVrFaoQjlpBiGkm6fQKvz93E/H/MxmOoNT5DFpMwxYK4MeaEDFtCxGhrAkaYEWBgRcYCIWHGlgQaWRGib0LqRAEFk2w57uPLOZGIurmuBL37IYWzbdjp5MclkYQvg0Pojojiy5BwboWF81X4381pvh3h+LVA92gVPMhL+41A363J4V5DPg9bV3K/o5ivt1TSt2O17pPDR5oHBbr/9CZeX9zFt1cP8u3HJ/jpywu8+fIaldI4vIbOI3aUNSHvzUc11Qm/v33IF/lFnIwP5Yw6lrPZ6n8o0J3p6sH8RwL98yjH4Sgp5+MDuZLszakkZx6t0/LqSivff76R7z5q5cePW/j+ajUvL66itz6FDgsbiufaUm/uzVoTIc3WHrTZeLDJwYujviHsFYpos3Si0dyRDgcfmhzFv4fG+C8LdOkMwaA8r5hszsopFmSPMydvnAWFk8ypmmfDTncJ1xOUdOcrebhKy0BDLk8btDxt1tLXoeXJphyet2ZxvyyLh6vr6dbksc7cg5UTLcmb4cyXheuoM/Nji1cM6jk+RE1wI26mD5HTvBAZWOM2zJ6EhSFEzhThbeCK/1hf0pw01MXXU+q7kgBjX5LnJxA5V0a+dx51MU3ITBPJ9C2jIqaDKJcMthQeoD2hgdWSArQW0WQ7JLJXu5okUwl1kUU0yysJHm5CwihTtHO8CBxlhdjAjIhxVqjnOCMzdkI62o6QsXZIRgsIm+JC3EQbkma6ITYwJ8TQmkgDE7Km2lO9wIVzfl6cdvOkdIIVoX+bTdViFw64BnBD7E9PaDBf+Ev4KiSMO1EyeiIj6ImM4HZEOLcjwumKiqArOpKvoiLoipVySy6lK1HGrYRoelWJ9KYpuK1V0JOl4naemp7CNO6UZHJvVQ73V+VwvyKbu405PGwtom9jFQ+21tK3u5m+gx18c3gDj49to//0fgYuHOf5pWP0XznEi+tHeXnjGK8+Oq47hf7kGI+2b2CFiS31NiJahb50ePux3lvCWg8/2t0kNDj4UGfrwyqBB6tsvFlh5sJKCxcqrb1ptPJno60Hl+Uh3M6IYb+vN1UWXtSbiamzEf1uakKxyIeW2Bz2ltZypLGV041r2ZWXTUNAPNIPzEgfb8rx/0yg23QCPVCVzl1tHN+sLqHZP5IVNiG4vbcEj2HmeAwzG2RD/BwJ4lE2BI51JGCMCz76dhTYKcmxTiJ8sjcR413xfM+E6Gk+aMziEfzZhBznTGIWRpFsmkj80jhUlimEzAhC66DjhMJeTVVUHZXxDRxr6KQtsRLhyCWoLWNId0jk6bGPsfrLPITvWiD+YCmJUy2JG2NOJ9MyCgAAIABJREFU6LAlhBta4j/cjAADS7TzXQkztiR4tDXBI01QTbCiYLKOE2e8vamZ7Urwux9SOMeGnY5iLnr56TgRLuPL4HC+CpXyVXiETpjlcdyMieZ2dIzupjJBzq3kBHrVKdzWKrifqxnkxIOKPO685cSDlpXc6yjWjfy95cTTw01vBbqD52c28erCTr69eoBvPz7Bj1+e580X1ygNjMJ76DziDAWEvDePpIl2BA2Zx6c5hXTGh3BGHcfZ7NRBTgwKdKaCE2mpg/kLJ3QC/WtOHIqSci4+gMvJXpxKdqFvfYaOE59t4LuPWvnho2a+u7KGF+dX0V2d9K/K8391TfwRf4SuMYoMllIkiuNgRSNHm9s4v34LB1YV0RGXTsD7y4kzmMsJLwl33wr0k+afBTqD5+1ZDDRmMlCl5WFOEqcjA7nXtg3NYi8c/zwPyWh7XN9fhv9oe9JNZfgaCPA1EOA/2gE/Q11zzLdTUumVS8h4d9Sz/Qkcbo3vB1akLpKhWCBDaZqI73hvcpyzUFooKPZeSXNEPTFzIyl0y0O+TM5G9RYq4hrZXnGI4uB8gmd54WbowKGiffz00QNs312M51ABkmHLUUy3RjnFHpmhORGjBQQbWBJiZEPmAiHe789HNtkZ/w+WoJ5sS91Cd467u3FR5EnjbAf8/8dE8mZYctAjlAtevnwRFMyXIVK+CovgZkgYN8PC6Y6OHmyMvXFx9MjjfiPQ3enJ3MtRc7cwnfvFmTwsz6VndSZ36/O437yCvo2r6NtcwcNtVfTtrubJoUaeHm/j+el1un2fF3bw+sp+Xt04xqsbnTz78ijfXOrEb4wJwe+aIxu2iOD3ZxM6bCGf563kZHwol7MVXCrM0DXG7F8JdKaCY2olxzWqwdSdLGjYn6JrjLsSUtgaHc/B8GCuKcO5V57Ao/ZUBo6s4tW1Nn74YhNvPmnnzY1Gvr28moFTZVzODKNxnhn1Ju60WLjRvtSOjc4Stgr92enmxw5nb9pNbWgytaNNIGSjs4RGB9/fQ2P8lwXadvh4Vk6xoGiqJZkTrMifYkfueGuyx5iTa2xC5VwBWxx9uBabTG9mEn2lGp5Ua3lWn6EbiWpN501LNi878nlYn09Xbho342M5JPBi1SQzsmY5sC+ykA3OCbTZySg0jyN5hpjVHhlkW8UhneKOj5EDbsMtSbNIwHOkE75GXngaedCev4W1qnUkLY4j1SyZmIVRBM0MIM87n0zPQiqiWqhVrCPFJQ2FYyqrpavpSF5L+CIpNXF1fFq/m7SFASRNFlEmzuFQVgfek8yJneBA8Bh7/MY44jpkITmmfkiNBMjGORE+3gmJoTWSMTaEjbYicbotUmMBIWNtCB6xDNV4K2rmu3PI0ZXzbu7ssnBEPmQWSmMBW2xFXBIHczsslC5pMF+GR9Aji6T3bf4s0Lcjw7ktC6EnOoyu6DC64qR0JUTQnRTDbYWcO8oEelQJ9GQouJeroTcnlfv5aTxcmcH94iwerMrhXk0WDxrzuddaxN0Nq3mwvY6He1p5uL+dx0e38qRzN/1nD/Hs/DGevR3jGLh2jJfXT/Lqo1O8+ewUP1zv5EzBClaYOlLj6MU6sYyN4gA2iAJY6yGh0dGHWhtvGp0DqXb2Z7WtmFo7Ces8QtnkHcQuVzG7PVzZ7+XABidvmqw8abP1ZJPL70egRaOWUSSKY/+qeo42t3G2YyP7VxXRHqMmYOhyYvXncsTdl7uaZPoqU3nSlMbTpnSeNqfT35bJ88ZMnpVruJ+VwCmpP19VryXL1A/Hv8xDbGQ7eFOpXByKj741PvrWSIzsEI9yQGLkRK6NghJXLUHGQpSz/PD7wByvIWYo5klJmh9JikkC4vHeZDtlkGKeTJHXChrDanWccM9HYaFgvWoTlfJGdlQeoiggl6Dp7rgZ2rM7ZyvfXe3BYdhy3IZYETjSlJQZ1qgm6zghNbQiSN+CECMBGfNc8P1gAWHj7PAfthTFeCtqF7hyTCjkvKcnDR/aE/hvk8ifac0B9xAueIn5PDCIL4PDuBkazs2QUG6GSemKiqI7NoZbsTH0xsbSI3970KJIoCdVQXdaMndzUnUn0MUZOk5U6Thxr6mQvg2r6Nv0lhO7qnl8sJEnx3Sc6D+9iZcXdvDqyn5e3TjKqxud9H95nPunD+M3ejkh71oQMXQRQe/PI9poOZ/l5nEyPpRLWQou5KcNckIn0Mmc/DtOHFMr33IilX0panbIFeyUJ7E9Ko5D0iCup0ZwtzKBB+0qnh9dxcvrrfzw+UbefNLG99freX2pioETxchsFv4h0H/Ef9sYoqenh9v7S8m2CWNfcQ3HN6znZPsGTtSvoj1egc87i4j8YCHHPL3oUcvpq9TwvC2LF2vTedaopL9FQ3+blm/WpNKXLedSmD8bJdGsdAjHdYQJXoYC3IeZEjZRSJCxE/6j7QclWqxvj+sIa1b5F5JsEoX3CBs0iwNx/us8fAx0n3RVmcWQ55BC8GQP5IvC0dpryBbmUSAuJss1m2x7LdFLYti+4gCbiveyvWQXWiclknFCQqeJuN5yhofnP2f5e/Nxfc+C0BFmKCdbULbMB+koC4JG2xOob0WYgRnpH7rgN2wRfvpmRI61JsHYlFZzR057ijhoacWm5Q6E/XUWq5e6cUgYwA2xhJv+fnwu8edmSAhdUt01c68skp7ICO7FRHM7RkZPfAx3FPH0qhJ/WbWVoeRurlq3q7Yk+5ePPTSVcL+1lK/XVfJwyxoe7aqjb28jT462039yAy/ObeP1pV06gb5+lO8+Oc3AF0f5P7o/ojFIifjfFuL3p3n4/20hCROW8lmBitMJMq5kpXOpUMnFXDXns1WcyVBwJkPBaa3iNw3xsDKZw8pkDqUkslepYmtMArsjZRwK8eNiiozeNRr6d+bRf7SQlxfW6MT507W6a7lrNXx3sYxvNqvY6etE7TI3miyFtAicaTT1ZKu9B/s8fNjp5cs6B1/qzTxpMHNig42Irc7BrP4dnbb9q5k+1QalsSnp4y3ImmBF4RQ7Mg1NyRtvQfEiNxoEPpwMjqZLlcy9FSk8LEvlWV0G/c1anq/V8F17Bi/as3nWnENfiYqHyVJueLjTNseKfOPlVC7240T4SjYLEyhYHoliph8xs3ypDl2JxNiByGleeOoLUJlEIx7jho+hG14GHoTZKdiYt5s9BQfIcs9FtSwR6UQJvhNFrI6up1m7mcKQVSRbKcj3LqHYv5Is90IKJKuoiaikPrqY/ZktrPBJx/7dZeSYRnC0dg9hw60IMrTDfZQdEmN7tIt8SJxsR/QEF8INzAk3tCTE0JogQwEZC4SEGJkSOdmJgBGmhI82I2+mFUfcfThoZc0ZNy9WTTMnYtgyNgvcOO3hTVdoMN1hAXwVLqU7KmpQoH+dXeFBdEUGc0sWwq3YMHpiw+mJiXhbd3LuqpPpSUvmbqaKu1rdCFVvnprb+WrulWZxtzKTe7XZ3KrOoqelhK+3VvNgWw3397bw8MA6Hh/bwePOvTw7e4Sn5w7x5MJhnl06ysDVEwxcPcHLa5389NUZXl86TrO/P/VLHam18aFeKKLd3Yd2dzEbRKGscfKiViimVhhMrYs/rR5BbPINYEegH7t8xRzwCmSHiw9bnX1Yb+vOFkcvjnm4/m5q4mdO7C2q4di6dXS2r+d4XRmtsYmI31tMxAcLOOLhRU+qnEeVGvrbMhloT+NZYwrPmjX0t2r5enUqj7JiuRAmYXNAHLnWQbgOX47nKGvchpkSOsGVIGMnJEZ2+BoI8NEXIB5ph3CENWWSAlJMoxGNtEW9MACXv83H11CA23ALlKYx5NglETzJg9j5oaTZqgY5oXXOIMMmjbjlcjbn7mFj0R62Fe8k3SEF//FCQqZ4c6H2KPfPforFB0tweseUUH1zUiZZULJERPgocwIN7QgYaYnUwIy0WU5Ihi3Gf5QFEWOsSRhnSquZA6fcvTlkJWDDUjvC35lN5UJXDrkGcN1Xwpf+Yj6TSAY50R0uHfwjeCc6SscJeQy9inh6lAl0pcgHOXHn7WHLg+Is7lbl8bB2BY8a/3NOPOtcz4tzW3l9cSevruzn5fWjfPvJaQa+PMZPX12n1i8R8Z9+5sQiUqaa8mm+itOJUVzOSuNigZKLOWrOZSk5rU1+mwqOaZQcUys5olIMcuJgSiJ7UpRsiU5gd0Qkh4J/4cSznbk8e8uJ7z9p482n7fz0SQs/XKvm2/OlfL0h5X9Fnv+ra+KP+CN0jdF96FJSTfzYnlvOsfXrOLNuM8fqSmmJTcTzz/MIf38+h93c6VXH83iNlv5WXWN83qxioC2dgbWZPKnR8E1uAtejQtgRkohsqgBfY1vcR1oQYOxA8DhnxKNs8DUQIBpphf9oe3xG2OJr7MI2zTqi5wXh8q4pqvl++IwwRT5HjPcoW6QzfHEZaoZknAvxiyOQzgkh0yWH4sBy0h21aAVqkq1SaEvbTIN2PY2aFppja/A0sMNzlB0Xao/R2bYTs6GLcBtqTeJkVzTTBZQt8yXc0IKIiUKkY+wJN7QkcYY7EkNr/A0sCddfTMak5Wyxd2eXpQ0X3D3YLfBA+s5s6s1EHHD157OAIG4F+vNFQAC3wqS/mdH8Waa7oiLojpVxOzGW2ynxfJUcO9gYe7NV3MnXcG9lBr0VOdyrLuBB/cpfvpb2PxHoF1cP8/qjkzy7eZKnHx/n8eEjCP9sjOefZuL33nKyFzhyPSuJC8o4ruVkcLEgZVCgf5boTk0inelqjqamcCgliYOKRA4qEjmQHM/uZAWbZHL2RkXRKQuhu1nDwOGVvD5ZyOuzJfx4pYnXn6/l1Rdr+eGzVv79SjUvD+fySUEYbWYC1lt40m5hQYelDdvsgtgjFHPAW8wWoSdNlkLqzTxpt/Fkq6M/G+39/38h0HETTFCMNSF1rBlZE63JmGCBdtxyMsYvZ+V8V2qtxOzxDuOjaDm3s5K4X6TmSXUG/U1a+ts0vFir1f1BbcvjWbWWvtwkbkb4c0DgRfH4Zayc4UqzQEaHcxwVVknETHBHPNqOlphKouaKkU3zQjrVi6R5gYROtMdrpDWeBq44jBLSmNJBSVQNGwv2sCqmDv/5YQTPDCZHvJKj9RcIWRZFtlMmua55ZLnkUhhYTW3yeqpiaqmIKCL1Q0/CrUI4Xb4T/0k2aK1j+KjyMP6TnXEeY4uTvgWBBmYoZ9kQbWSCbJQZMiMrfN9fQpChgHDDZSgmC5COFSCb5Ix8vCXF8+3YZivkqL0TNyQB7HYWE/m3ydQtc+Kw0IsbYjG3gsXckoZyMyKC3qhI7sVEcydKNijQt6SBdIUHcTsyhDvRUnqjwuiRSbktj6Y3Wc7d1CR6NEn0aBX0ZqTQm6mkNyeVuyu03C3O5H5pJver8rlXU0BPXSF32su4t3k193c1cm9PC98c3sDT49t5dnIvT8/u5/H5Qzy9eIT+y8d4fuW4TqQvHWDgo2O8On+UCjNHqsyFrBL60ejuS61QTKOnPw0eEpq8AmgRRdLgFsY6sZRdklAO+Uk4KhZzzFvMEU8R+1w92Cv04oSvL6fEPr+bmnB7fxkqEzHbclZxdF0Hpzs2cay2lKYoOd5/nU/4+/M5JPSgRy3nm9W/5oSS523pDLRn8qRaw9c58VyLCmG3VEH8bCd8xghwH2mBZIzdf+CExMgO0QhbxMYubFK2EbswBJd3TVHO03EiaoY3olG2hE7zwWWoOX7GzsQukBIxN4xMlxxW+peisU8jzUpFilUKbZpN1KV30JzeTlP0Gjz1bfE0sOVU5X5OtO7A/IPFuL1vRdIUVzTTrSld6oPU0ILw8S6EGtkRPsqChOlu+I2yQqJvQbj+EjInm7DJVseJ80J3dli5EfHuHKqXeXDAVcKn/oHcCvTny19x4ueDli5pGN1vH8N2xcq4nRBDt0L+HzjR+3ecuP8zJ9rLebj5Hwj02W28vrSTV5f3M3D1MK8+6uTZzZP0f3qSh/v2I/zreDz/NAPfvy0hf6kL17MSuaCUczVHy8X8FC7kpHIuS8n5txJ9Qv0LJ3SMSOCgIpH9yXJ2JSnYJItjj0xGpyxUx4lDK3h1spBXZ0v44XIjrz9fy8sv2nnzaQv/frmagUPZXMsO+kOg/4j/1jFET08Pp78tJG6GiJ1p1RxvaON4xwYO1BbRGp2A6C8LiHl/Ifvc3biXEU//aiUvmtN41p7Dk5ZM+tdredaRwtPaRL7OjOKz2FD2RakJNXIjeIILomHLkE/2JWi0Nf4GVohHWBI4ygG3dyxw0XdDY53ATlUDMR+KCBztTMh4VzyHmZNhHk3gWEcCxzriNdQCXwM7JMZuBE7yRWOtoTy0jBRrBclLFUimhrGr+AAFMRVsLN5LVeQaygPK8J8p4XT9BaQWMZRK8hG+sxDlZEcyptij/dCZ2LFmBOsvI8jAlLCxAkLHmRM1wwWJvhmJxuaUzLDhuIOQS55eXPHxY7+rBOmfJ9Bu5cYRV08+85fQIw3kpjSMWxH/8Xq5O1zKV5HSwS0BXclxdCvjf1mzlaWkN0/NvZUZPCrJ5mF5LvfW5POotYx7bWXc31zGgx1VPNxTy+PDa3l+agsvzm3j28u7eXlpHy+uHubl9RO8un6Cn744w4uPjxBrYY7jXz7E8y+mVNt48GmKlDPpcjrz0riYo+BsrorT2Smcz1dzKkvB6ewUjmmSOJGewmFlCgcVKexPVLBPlsLOmFS2xSvZGRPOFY2MV511/PuNdby52szL86v59vJq3ny8XjcD/VktP10q5dkmFcfCnNloacc6Eyc2mAnZae/OHmcXDop8OODlz3p7L+pM3ag19aTdNYC1bsG0e4RTZP37kYV/NWe9o0/CaHOSRluSMsaS9AkWaMeboTFaSMFsOyqWebDO0pWLwZF8pUriboGavvJ0njdm0t+aTn97Gq8atbxsy6G/PpO+wmR6EqSccvGidro5K8bbscbEjWY3KZrZEiIMHQmf5Eaus4JUEymhxrbIJniQMFOMr4E5IgNLPPUd8dR3ozKokurYRsrj6knzzqNDsYGK0NVofQtYn70dv5mBrAqupjy4htXh1ai9VrCxuJO27B00ZnTQlLQWwVBzlNbhdK0/S4lnKn7jHDhXtw+XEcvxGm6H9/smZCz2JGGiFWkzhUj1zZCM/L/Ze8/gKM80UZs53zk7wWObICEQOdgYMMFE5ZxzaLXU6m51UmepWzm0skQSUYACEgrkYJNzFBlMBhtsgzLBZGywPWOPd+f6frSQ7ZnZ3VNnZ2s9U76r3qKKgn96nuvS/dzBHYW9N/ohnmSODySmnyOi/q5oBsykaKQDB/zCuCgQ8pFYyvEoCak2Y1nmFMMHXkFcihfzWYKIFmUCN5VKWrtfdl5JdIdWQ2uikla17K++tiQt7SYD7enJtGWaabWkWgU6P4POogy6yjK5Myebu/Mt3FlSTMfSElory2itm0vbqgV0blzK3W21PNjTxMODG3l0eAuPj+3k0el9PD57oEegv7zUzLPzB/niZjNPrzZzc2UNmZOnscwpnGX+kVSFxFAdKqQuMp5VcQrqhCrq4hLZKNWyU6Zgn0jIwdhwmiPCaY4ScDA8nOOxUZxXxHJCEv2zORNBv5uG6V0hW3KXcbi2iSOr17O3ah712mSEv5uK7s2p7AwNpcNi5OnSDL5YmcPTpkIe1efxbG0eT9dk8LjazOeFOm4YlezRZaMYHIp4aCDRfR0wjBIgsfdA1N+DmL5uxNv5EvG6B0H9gshyT+KD9BXo3hUQZ+eHbHgwUf3cyJyhQDzI38qJPm4IB/giHh6B7G0ROV45LJYvJss3E9M0Mwnj1bxftoM5hgo2lO9imXo582LmEPdOLIeWNqP3MTErqoDQ308jY3QAeW/7kv9uEPohLsjsnJD0d0Y2yB3FcHc07wQRb+eKeYgL88d5cdA/lHMRUVyIiWVXoJDE371FvUuIlRNiEa09nLCOYfxJHb9K0cOJ28k6bqUa/91xjPfmF3FvcTFdy8u417CArlULubNxoXUt/c4aHh5YzfNjm6yJlm5OfNHNiRdXjvLtzRO8uHYIg4srgb9+l4hfz6TGL5rrGSpOWZI5VprL2eI0TpZYyzdOl2RxvCDVWuqXk8KR3HQOZKSxLzWNPeZUdmvS2KbP4v2kNLbqlFyyaHnRXM2fLq/mDxdqeXFmKd9cWM4319byzY11fPNRNd+dXcCjdWlof9iy+YtA/xL/kGFd0fqbKWhGhbMpfREnGtfTvG4TB1YsoMmQQsxvp6D67YS/IdBFfyXQnxdouaqRsCHeQMybXshGhpI4KpDYNz0R2bki7OdCnK0ncTbeRPzeg+ghMWzJWEN94jwUb4UQY+NDZF83ZMODMU8WIx8RQtBrMxD09UAxMoJwGx8078oQjxYzX1LO3Jg5iEdI0M9IZXPZdlYWrGZPxV4MLonUJ1dTIirmYO1h6nOq2VxYT2DfyZgmhCIfOJOUEe6YR3mhHeqBepg3yqHeyAa4IB/kgXqwKzkjHdngFcqFmHiux4u5IpKwzS+apD7jWekcyJHwaD4Wi2iRx/OZSsltteavBfpVk5NB858K9L15BdxZWETn0tK/KdCf72viafNGnp/cbJ3xeXYnzy/s54uLh3l5+Sh//OgYX984wv4F8/H6X2/j96vJrIuWcyVFxpkCE8fKcjlTaO4R6FMlmd3NIal/U6C3Gc1s1ZnZpjbwvlzIp0vS+e7DJrixmT9daeKrDyv546Uq/vBxE1/fbOCry0v4w+FZfFqWwPYgFza4+7LawZ/VDoFs9gxiT2gYB4Sx7AgVsNo7nFrXcBq84lgTJmVVqJSGUDkVgdKfw8X4XxLoXr16YbR3xzzInbTBbuQOdyNvhCvpAx3JHupOtUMETc4h7AsT8rExmc/yU+icncbzyjye1uXzuDGPL+pyedlYxBcri/h8YQZ3c7Vcig+nYYo3ZYO9KJ8cTJNQieHtAJSDg4m086HIKwn9uGi0bwWTNCaa5HdEKIYHkjo1AcmQEMRDQkgYGYvk7XiqdXUsUlWSH1KIxklHhn8aG3M3IntPic7RjHKagSWqKqqS17AycwNVqQ28P3c7C9UV1OprKYvIYk6EidOzNrAgPIetRUvJ8VPh8zsHQn7jgHaEFykjnZk9JQK5nSsSe18k/T1QDnDFPC4C9VthSAZ5Yhjsxpyx7hwJj+NKbDxXhHGcEcRTPGwyBeN82OAZwtnYeD4SxdKmlHSXceh6mgnvGg106rRWiVYn0KqW0ZKYwG2VlDaNnM4krXXRSmoS7Zlm2nLMtOeaaM9Jois/hY6iVDpK0+mcm03n/DzaFxfRtXwWd1eW09W4gM/XVdD1fhV3d9Tx+d413N+3ic+PbOPBiV08OLW3Jwv94vIxnp4/xJcXTvDVleN8ef4Am9NMFE3zotw5iAr/CJYFC6kKj6chVkljnIpGmYYPtDq2ysQcTIjnlFjM8Zg4jsXEciJOwEWViBsmKZlOk382Z8L31++hHR3BhtSFHG9YR/PajRxYsYBGvZnY16ah+u1EdoSE0pmXxNOl3ZxoKuJRQ34PJx5Xm7hfoOGqRsx6kR7BG54kjAhBNSKAuN5exPV3IaavM8J+7sT28yL89+5EDRawKaWBOuUclG+FEt3Xk6h+bsiGBWMYLyRhWBAhrzsg6OeJbEQYEba+qN+VIX5LwnxxObOiyhCPkKKfmcrGkq2szF/FrsW7SXLXUmespDS+hEO1R6nNrGRtdnU3J4JRDnIkZYQ7ppEeaId6kDjUC8UQL2QDXZDZu6Me4krOCEfWe4ZyXiDiuiieK3FitvhEktxvAiudAjkcZuXEbXk8n6kU3Fb/daLldk8GWm0V6BTDD+MY/0Kg787N587CIjqWWrfYdjUtsAr0loofOHF0I89PbOblK06c38cXFw/z4tIR/vBRM199fIQds8rw/v/GEPCryawXyLmSIudMgZnm0lxOF6b0NJqfLM7gaJ6Z5vwUDueYuzmRxr7UH3FCa2abWs/7CiG3KjL57sMm/vzxJr691MBX5yr5w8VKKydu1PPV5SV8fbCMm8WS/6o8/0+fiV/il+i+GP9lMokjQ1mfuoBj9Ws5vuF9DtYtZE1SGtI+TiT+buL/vUCrxayMkKEaEolidDhCWydi3/TsyUAL+7kR288L2eBwlidUEz8ynBWyMvTvCoix8SGmvxfp02TIhgcjsvcloo8LQhsvjBPi8fmtIxnOJuJHxbNcvYwl0sXMCyunNLycptwNbJqzmQx/Ixuy6theuoGPd3/EEvN8/H8zioD/MxzTW77kTYhAZ+tE0hBnUt/yIaG/A8rBHiiHeqO190Ru60LO2ADmTHDiSHQU18UJfBQv4bwgllUOviT3e5eamb4cixTycbyIWwlx3EpU0fqj+syeBqdEFS06Nbd0if+pQN+Zk0fn/ALaK0r+pkDf39PA4yPreXp8Iy/ObOHZ6e08/XAvz84f5MXlo3x15TB//PQ4//bpJ/j9n3FE/saZvYmpXEyWcK4olebSXE7mJfUI9ImidI5YTBzNM/9Ngd5kNvCBRsdOqZydKgFdqwv47nwjf/5oI9+cr+Ob89V8d6WGP3yykq9uVvHyw3KebMji42Qh+wK82OYfyka3UDa6hbPFJ4zjonj2RgvY5BNCg0cIK90iWRcoY12EjKYQCZW+scxyjfw5XIz/ZYEO6vsuJnt30gd7kT7QjexBbqQNdCZ1oAuVDtE0uISzyTOUiyoxn6Uo6Mgz8HhxNs9q8nnUkMezBgsvG/J40ZjHk+pc7pca+UQdwyYvf+aM8iB/TBDbVFksCJAxOyyTkH4eiIcFUehhwDA2Es3IQPTvxCIfEUGZTzq5Tnp0Y+PQjxET0TcAf1tf0n3SWKGvYYliCXPjZ1MmLCV2rAjdjCQKg2dh9sgmzdvCIlklG/Pfpz6tkerkGuoy6mhKq6BOUUjwm1OokS2kMNR5LqRgAAAgAElEQVTMN2db8entQHhvT8S9HbGM92P2e6GYR/mhGRFCrI078TaOKIZ5IrZ3QjXMB/MIDxZNcuFknJBr4gSuiMVcEImpmeZG2pAprA2QcCougU8Ucj5Vyvise/RXW/cilTsGPZ1aLe06Na1aOW0aeU8ZR5tGTqdORVuynnazjjaTmtZ0PW2ZBtpzkui0mGjNTaatOJWOWRl0zMmiY24edxYVc3/ZLO5Wz+FO7Tzurqng3vrlPNhaz71da7i3fzP3m7dz7/guHp3ax/MzB3n24WGenT/M04vHeXbtJE+uHubl+SOUB4dRPNOLuZ4hLAkUUBkWx4ooKXUCGXVxCXygMLJDkshBaQLnlQmcEws4LRbyoTwW4bjRPydZ+MmZELkGcbRuDcfXb+Jg7SJWJ6cjs3FB9dokdv6FQD9pKuJRQwFP11l4ujqdJ1Um7hdquayWsDJchmpoBMrREQhtnBG+4Y5koAei/u4I+7kh7OuJ1D6UpeLlSEZHsTy+EM3YSAT9vBDYepI6RUrCsCDr6LvezsT088QwXoTf75xImWlAPFrMooSFLJEuYk7IXMoi5tOYs44NZRuxhKWxPrOOLUVrOb/5QypMCwh5czzBv3sb4yhvct8NQ9/f2cqJ0T7I+jugHOSOcogX6oEeKGxdyHrHj7kTnDgcGcXVeAnXRWLOC2JpmumD2XYitQ7+NEfG8JEojs8SYrmlUtGi+XcSLbpEbmkTuZ2k5ZbZ8JMMdEuPQOfTNfsHTtyrtwp018YFPQJ9f08Djw+v5+nxTXx5upsT5/ZYOXHpCC+vHuKPnx7nxfmz+P3LWCJ+7cAepYmLJinnilI5VprLibzkngkcxwvTOJJr4ojF3J2BTuNARhp7U9PZbUplk8nI+2odOxPk7E6M4c6aAr4938i/XV/PN+dr+eZ8Fd9eqeGbmyv56kYVL8/N49HaDI6pwv5Ld2yv//kz8Uv8EtaL0eN/T0AyNIDV6fPZXVXHyXVNHKqtYVVaPrpRziT1ns42/yDacw08WpzK85U5PKzP535dIXdrLTyozeDzRSl0FKfwoSGZbYnFKEcFkjA6mmgbb0S2ngj7uiO290Vg50mGkwrtBCFhbzohGx5MkYcRi7OGaBt3Ql53IHWKFN1YAeG9nYnq54bA1hvju2Ii+nhQ5GFGOSqKWNsgVO8ksDixkpXZ66kw1LIhaz3lUYXkB6SwQr+A1VmVnKo9QGNyDU26+UiGu5I5WUCCjRsqWwcyxwSSOtoPnb0LKSN9kA/wRNFvKmXveFI3xZ0T4UIuiMTdYI+nZpo7yQMns9oznGNRsdyUiGmRx3NTLuO2WkOnTkuXXtdzQbapE61PyToFt/UKbiepuG3W0JJioD3TTEd+Oh2FmXSWWkcVtc/L486SEu5WzuZuzVy61izkwftVPN7ZwIOdTTzet4nnzTt4fmIXz0/v4fmrxQ5X9/Di+hG+vHGM724eRjJqKkG9xnJAlsjJDCknLSlcmj+Lo0UG6+bB7uH4R3JTOZRt5qAlhYOWVA7kZLIjJYXt5hR2GdNZl2RmuzKRc0YZjz4o4+srjfzpWh1fnynnD+cW8aePVvHnG+v4/nIdL47M45OFWk4nRNIcGc42/yA2e4awxTuSbf7B7I8MZ3d4LBt9wqh3D6LeM4z1wfGsCk6gxieOSp94Shz/sedA//jT9fdAP8CdpIGuJNk7obOdhmmAEzUe4WwMimSTj5DTUikfJ4npyDFwb1YKz2oLeNZQyBf1Fl6szOZlUx7P6yw8LE+lI1VOc3go+QOdyZ2u4OGmk1gmhrMzez7CIcEE9Xah0NNI5jQJ6lGBJI2LQTo0FNXoaJZFlZLrqiPDUYFmggzh4DCSp2lIdTIiGxtPY1It8reFaCfKkY6RIB2rZK5wMbPC5mFyTGV15gaqU5tYpK2mMr2e5pXHWJ1eRdQQL/z7unF49k5u7j9JyGgvvF9zJK6PGwtdpaQNdSBnbADawc7oRngjHeCCaqg3MhsnlHZuWMYHsGyCC4eDorkoknBVKuWKRMwOnzDS7MZS5yvmTFQ0N5RKbiqV1rm5Oh2dBj13jHo6kjXc0su5rVfQalD+qP5Zzm2VlJbEBFq0CjqS1LQkqWhN0dCSpqUlU09HbjLtucm0FabQVpJGa1k6HaVZ3Judx71FJbQvLORe9Ry6Vsylc9ViOtcv5862Brp2r+Pe/o08PrKdp0d38/TkPp6e6a6HvnKcR1eP8fjSAV5eOUTrpkZSx01jlmsA5d5hVATFUBUuYnlIAg0xetZLE/lAKqc5UcFlgwLPYYN+rrLwN8/EAJt+5KvVrErLRz/aFWPv6WzxDaItR8+jRSk8r8vm4co87tUVcq82l4e1GdxfZKajOIVz+iQ2y/NRjQpCMjKSKBsv4mysnIgf6EN0fw9SZsjQTBAS0cfFyglPI9kOKgS2HoS+4Yh5shjNmKifcEI3No6IPh4UuCWjHBVFXP9g1OPkLFItpzZzLUuNdazLWMuc8DyKgjNYYVjAutwajlXupUazlFplGdKRbmRMikJu645mgBNZY4JIHeWHdqAL5hHeyOzcUfSbRukYd+qmuHM8rJsT8WLOx8VTPdUNs/0UVntGcCxSyA1xPLdlIm7IZdxWq+nUaenU/SjholbSmiijVafgtk5uHcVoUtOSoqctw0RHnpUTHSXZdMyx0D7XQteSEu5UzuZOzVy61izgweZK60r6nU083ruRZ807eH5iJ89O7ebZh/t4fvEAX/6IE3/8+DDS0dMJ+dU7HJApOZmZwElLChfLSzlaaOBYQQbHCzI5arGWbhz8ESf2Z2dYOWFKYacxjXVGE9uVKs4aZTzaYuXEd1dr+fp0Od+cW8R311fxrzfW8v2lFbw4NJeb5WpG9XnjF4H+Jf7ho0egxYP9qdYVsb+2kdMbVnOssZ5NllnoRjmjfW3yTwT6i/pcHq7M42FDGY+bynjWWMDjiixuW0zcyMxlm7oY47tRhPT1JNrGm3hbL4R93ZAO9ifK1p3EcdFEDfQibqAPMf09KfZMInmiiPhBfihHhSGw9SDxrQhE9r6I7H2J6W8V6PhBQSyLLkVkH0jwb90QDAhjrnQRDbkbqTI3sky9lOKQDJKmi3H59dvMDtITYz8D9WQ3Eif4U584lybNAnbnrGS1OI8iJxHakZ7IBzmhHu6OymYmpoEzWDbZmy2uflwRxnJZIuV6QgKXJVKWTXKiYKwHG/1jOC+W87H4hxroFs3fFujbKim3NbKfCPRts976pGxJoy0/nbaiTNpm5dI6J5eOhYV0VJTQubyMu+sWcX/zcj7fWtsj0E+PbONJ83aenNjJk7N7eHp+H19cOsAXl0/y/Poxvv/sEJtTcxG9NoXTBjPnLEpOWsycLs3jRJnpPxTog5Ysdqensystne06M+uTUtit0XHBpOTrfYt4eameP15ewcuTc3sE+rubdfzp/GIer0nlUnIMzYIojkYL2eoXyGbPEDZ7hLErOJw9YSG87xdGk7MvNU6+rPETsCk8gXr/eFb4iljqGUux4z9HBrpXr17ohvig6O+MaaQf6oHOqAa6oXhjJotmBrEhJILNfkIOR0u5rhfTnpLI/dmpPKrO40l9AU9XWviiLouXjRZerMzly4p07liMnIkTsHxaBLc2rGVWRDjmkSEsj7MQ3NeT4L7uiAb7U+xlRDnCn+yp8QS85kLMgGBSZ6hYLiql0CcJ3bh4BH39qZMsQWgfSNTIEBrSVhI3JBTlGBGGKVpMjqmoJqnJ9stltnAuc0TlpPpk0pC6hlLRPNaW72JFUhWxQ4NJniJHOjqSS1sOUiROw/33Mwh/zYHiiZGkjvAgZYQHKaO8UNo7oxnmjXywF4oBHshtHMkd6UrlRHcOB4bxsVjCVWkC12QSdoXFkdHfgVrfWJqjoripUvFJYiIdScm0JenpSNbTZdbRlaKj1aii1aiiLSmRLqOaTr2qpwb6VSlHi05Bi1FFa5KKVpOatlQtLRk6PkvTcCvXQEtRCrdLUrkzK4eOuRa6FhbStqCAzmVldCwrpb1hAe2rFtK1qZK72+vp2r2We/s28ujQDh437+bxib08PruHpxf28+T8ER5c2Muzy/v4+twBjliKsUzzpswlhHleISzwDWFJYDTV4fGsjI5ldL9+/wiy8J+eCZt/eQ3ta5P5wCeQthw9Dxen8MXKHB6uzONBfSmPGkt52pDPwyWZ3LaY+Cgjl62JRRjGRxLaz6sn0RLTxw3JID+ibN1RjY0iaqAXsQN9ENp5UehuIHmiiLiBPshHhBDT3xPV6HBE9r7dLPFBP05E/KAglkQUET8okJDXPBAMDGeOZCH1ORuoMjdSqVlOWVgWuvdicfnN2xT5JBI7dCbaqZ4Yp4dRr5pDQ+J8tqVX0RiXTYmzGM0ID2QDHUkc5obS1sqJpZO82OLqx+WYWC6LJVyTSrkYL2HpBMceTnwYL7PWQCu6OdGdaPmJQCequKWUcEud0CPQt0xqbpt1tGWaabOk/sCJshxaZ+fS3s2JjuVl3Fm7kPublnN/ay0PdjTxaO9GnhzZ+leceP4jTnx78wCr9KnEvTaJk/pkzuYqOWVJ4XRpHsdLTf+hQB/MzWR3ejo7U9PYpjOz3mhmt0bLBbOSl3utnPjDpRpenJzLN684caOO7z5cyKPVKVxM+n/ePPhzOhO/xC9hvRh9/vdEYvq5sSwhhz3LVnBsXR2HGqrZVDQL43gXtG9O5gPvEG5n6Hm2LItndRk8brLwaFUhT9bk83x1Ng8rkukqTeZaRjpVoUlI+7sjtvUmYZAXQpsZRPV1QzzIj9A3HIkb6INiVChxA32QDQ8m5T0J8hEhxA30Ia77stSNFRDZ15XQNxyJ7O2KeHAQoqFh1EiWEGobjMktBdVkFUW+Fhp19VSZGyhTLKQqaTk12kUEvDGdBUFmhG/OIGlEEOG/mUTqxCgUw9zJmhGBYaQrdVHJlDrGoB7igMxuCtLX3Zk1LpSmmb7s9vXjTFw0V+LVXJbFcVYuo3iEK1Xu8Wz3C+EjuYLrsgQ+USn5TKOhTafrbmhScddo6NmW1pKYQIs6gQ69kg69inZ9Iq3ddZltGSZac1K4W5JD66wc2srz6FhURMeyUjqqZnG3fjb31y7g883LeLizgUf71/DoyBaeHN9hzUCf2s2XZ/by1YX9vLh0lOdX9/Po/Do+37UfWZ+JnFBKOJWl50h+KsdLcjlRnENzXjonCrM4WZTNoWwzRy1p7MsxcSA3lf05GezLymJXWjrrjFq2GBM5oE/gbIaEl5vm8P3FpXx/ZRkvz8znm/PL+PPNNXz18XK+PbOAe0uSOCcO55gghgORMewNi2CTpy8b3X3YHhDMtoBIVjpGUOPoT4N3GOtCJGwM11Dvl0Cdn5RFboJ/mhKOXr16EWY7FcUAVxLt3UmwcURm60SinSuzJwSzKVLIltA4tgUGc0WtpDVZyd2CZB4uy+VRXR6Pay18UZ3PF/VFvKjP4/nSVO4XJXEhIZZtIYW8OLCfvImhyAdM4mRZE9G2XgT1diPoTWeEA7xIm6pkjWopfr9zw/l/TWFeWD4lfqkYJseiHSulwC+NJVElRNt4EzM8hIWqBcwKzUMyIqpni5thmg7jdD3GaTqKgwopCMynMWU1dTnrqcppYPu8HRinyQnr50nkAF+urT2L3FnDxpzV+L4xCfXbvqiGuJA6yoO0t7zQDHQiY7Q/ukGuqO3dUdk6kDPckbopnhwOCOa0SMB1sZaLCTEcEUjJsnGh2l3AnrhobqgUfKqxbhy8pbNOtekwWb87qXo6TBrak9W0GVR06lU/yUK3qmV06VW0dot0a5KKW8kqWtJ13M7Q0ZZtpD3PTEu+iY7SdFpKsuiYl0/r/Dw6Fhdzf/ls7tTM4c6qcjrWLObOByvo2NZolei9m3h0dCsPm7fx4OQOHp/bw+PzB/j83B4eXdjP00vb+frsdsqDhORNDWeuh4AFvqEs9A+k929+848kC//XZ+JXvXox2d6Op0szeFqbweMGC4+aCnm82sKzVVk8Wmaio9jItcwMKkMMSAd4EG/rjdTei1hbR6L7uRE/yI/wPi4IB3qTMCKoZ7mKaVI8ipGhP0qsePZwIuR1B6L6uCEeEoxoSCjLYucRahOIbpoW1SQlhQH5LFdWUmVqpEgyl1pTDdXqRQT1dmCeXzKC16dhHBFA5O/eI+XdSORDXcmZGUHy215UhydR5CBANdgBmd00Et5woeydQOqnebPbx4+zcdFciU/kcoKI0xIpJSOcWeYsZKtfKNcSFHyUIOVTlYLP1Graukv9WhNV3DHou9fSK3pGMbbpFLTrlbQbrJxoS02iLdNEa651d0BrWTat8yy0Lyrs4cSd+lncXzufzzcv58HOBh7tW8ujI1t4fGw7z07u4tmp3XxxZi8vzu/ny0vHeHb1AF9e20Lrpq3I+oznhCqBU9kGmgvSOF6Sy/HibJrz0nuSLYeyzRzJTWVfTrKVE9kZ7M3MZGdaOusNOrYY1ezTJXA2Q8rLzXP404Vl/OnyUl6cmsc355fyrzdW8/XHy/n29DzuLtazNsTjF4H+Jf4poqe7OqafGwuEqWxbuIzmtbUcbKhkY/Es0qZ4Y7SZxmbPYD5L0/F0aSbP6jJ40pTLw6YCHq3K41lTFs+r0mkrNNBZWsxqoQntEG/ibT2JHehJhI0j0TbuPZeeflwMmjFRP5Fl3VgBylFh1r/r79UzgSOmvyfxA/yIG+hPppOBuKGRFPgVED9WQkFoEVkBuejdzKzIWENuVDHZAVnsyN/MMtEsLO5qomyciXh9Booh3hhGByAf4ETaWH+SRnoj6TuV1DEBJNo7k2AzHY2NC4snBbHR2Z+jwcFcEMVxVSznYoKQg1ESsvo7s9QlkgNhEdxQKvlYoeAzjbUus6U7m9Cl11lrM3XanhKOVrWMdq3CCnbtD+O1OjLNtOWkcKc4m7aSLDpmW+icX0Dn4mI6l5Zyt66M+2vKub+xggfbV/Jw32oeHv6Ax8e28/zU7h6B/vrCPl5eOsbzy8f4w809/OvFM8T9fhAnVWLO5po4XpLJ8VILzQXZnCjM6pHo5rx0mvPSOZBr5qAljQM5mT0CvTU1mQMpBk6alJxMiqF1YRLf7C/m68OlfHl0Fn+8WAmfrOGraxX84egcWouVnBOGcDwimn0h0Wz3D2eDmz/rXf3YGRhF/QwfFo7zZrV3NBtChKwLkdDgK6XSLZZKjzhq/BOY7fbPU8LRq1cvlANcUdg5oxzgimqAKzI7d7JGuFDpGsVqn0g2+YbwoULGNXUCnRla7s3P5dGKYp6sKODL6jye1BbwfKWFL6rSeVBi4rI+g7vVFcxyc6V0ahzJ7/izQVuAsK8DIa+7EN7bnah+XiRPlLIorIAcRyOLouaw0bAC/TghypFCksYrkIyJRmAfgGF8PJ6/mUagnS9ZXhlkuqeT72chdkQM86LmMCe8jCVxC5GOlVDgnYvR2cSm0p3U5q+jPm81swWFFAZZMLklc6TqBA1FTZys3k2U3XS0g90wDfakeEIUpuFelM0UoRnsgmKQM5qRnqj6TqZ0TBBNM/3Y5x/I+Vghl+PFXJLEcEokI9fWnSrnCA7GivlIIeVmopzbejUt3XPVu0x6ulJ0tBiUPTLdolfSqbdK9Ks66FeNhR1aJS1aOS0GJbcNSlqNibSl6WhN19GWk8StHCMthWZuFaXRVpJJ++xcOucXcHdpGV0VpXQ1ltO1bgl3N1Zyf3Mt97atonP7au7v38TnR7bwefM2HpzeyZMzB3l89gCPLnzIowv7eH52I4927KA+Jotf9frVP6os/D+fifXmGB425fNolYWnTVk8q0qjrdBAe0kRTdHJaAd7E2/jSewAD8L7zSSqn1vPDGj9uBjUb0f2jLXTjRWgfSca5agwYgd4E9PfE+nQQCRDAoi2cSd+oB8i+wDSZmgQjxCQ5Z5FwrtyLEH55ATmYfbOoNLcSE5UMTmB2Wy1bGCxsBiLm5poWxciX5+BfLAXhtEByAY4Yn7bF+MIT2S200kdE4BqoBMJNtPQ2riwaGIgG538OBIUzAVRLFfEMi4mxLI/Mp5sO2eWuUZxICyCjxUKPpLLezhxW6OmvbuM49UkGetCoO7JMRr5D5wwamlPNVpfK7PNdBVl0VqSScdsCx3zC+hcZOXEnboy7q0u5/6mpTzYXseDvat5cOj9HoHuSbSc38eLS8d4frmZb27s4Y9njiPvN4JTKomVE6VZPZx49Ur5Kgt91JLGgVzzTwU6NY2tKcnsN+s5mazgZFIMbQuT+HpvEV8fLuWLo7P448Uq/u3mar6+WsE3h2fTUijnV3+n+7XXLwL9S/wPxxu9evUi9PWZhL/uQJ6fgh2LKn8i0HkuoaQOcmKjeyA3zWoeL0nvEegHjfk8aMzlSUMGD5ck01qgp7M4jyPaPFJH+iGy9SHUxofA/p7EDvBGNTqcYs8kNGOiENh6EN7bmcS3IlC/HYlseDBxA31QjQ5HOjSQmP6e5LloiezrinRQIKq3okieokQ7UUGOZw6CYQISZ+rZvPAAOQnlZMeUMUswD90kDUV+Fuo1NZQLS8kPSEEyOhDFCD+0w33Q2DqRPcoP7WBvlHZuaAd7I7d1IaGfExlDZ7Jiug+73H04GxrG5Zg4rkriuCgV8r5XLNm23qzwieKUOK7nWbnNaOS2Tkf7j8S5Q/vDM91fjtZqUct7BLorJ4323FQ6CjLoKMjgTkkOd+fkcbe8kHuLiumsKeZO01zurl/M/a0ruL+7kfsHNvHgVRb6lUBf3MPLi6d5fvEiX18/yB/O7qUxJoaLxkROZOjZalaxN9vMwZy0Hnk+UZjF6ZJcmvPSOZSfyuH8DA7mZvUI9N7UFI6lJHHRpOFKmoQrmSI+ni2grVrBsx0Wvr9UzZ9uruKrS4t5uaeQj1OiORvmz/GAMPb6RbHRLZT1LsFs8Y5ig2sIlRPcWTopgPdDxKwPFrI6KJ5aTxHLXYXUeIup8hUz3+cfe5X3X37y/s5IbJyI7+eKxNYNqZ0nhkGulI73psY5lK3BMRyKiuW6WkVrhpGu2RncX17Ao9pCvqjO53G1hSdNFr6uzOXhIguflRfwcEU5K6a5UzQigk2aYsrDjUTbeBLyuhsRfTwIfcOV+EFBLA4rwDQ+lrQZUajeDkQ/Lhrd2BgS3wpHMMiXkD4uhNu6Mys4l1AbXwT2oaS5pCB5O545EWXk+mSxQLSYWXHl5AUXkOuVhXaajtqUJpamraSueBMFwhIaTLXIp4nZumQ7SW4iIt4YR56THJHdVMwTBJgniVnoq6bQSUTqxDCkA2aQYDsZaW9nyt4Joe49Tw77BnEuPJKPRAlciw3muEiH2W4mte6xNAvjuC4X86lGyaeJCjo0Guv0Db2O9mQ1HSYNbUmJdJq1dJj03E3Wcqe7lKNDZxXqNo2cVo2cVqOq5/+0GlW0pWq5bVbTkqmnNctIqyWZtvwUWosyaCvLoX2uhc6Fhda+hOVldNXM5v6qpXStq6RjYx13tq2ia9da7u3fyINDW3jYvItHpw7w4NROHp09wd0zB9nXMPefQRb+LmficrmaB0uSac3X0VGcx0F1LikjfYm38yXUxpsAWw+Edl4oR4X9FSdUo8NJfCuip2lQOSoMyZAABLYeZDuoujkRgHJUJKapKtTvysj1ykUwTIDW2ciGeXvIk80nL24Os2PK0U5UU+RroUG7ggXCUgr8U0gYHUTCMB80w7xR2zqSOdIX7WAvlHZuaAZ5dXPCkYxhDtRM9Wa3hw9nQ8K4JIjlqjiOCxIhmzxiyLHzYYVPFCfjf8QJg5UTbTrrCMZXnOgZxdj9i94Pn5xWo472VGPPIqCO/Aw68tPpKs7m7mwrJ+4u7OZE4xzubljCvb/BiWcnXyVa9vDigpUTX1zewzdn9rA2LpaLSVZObE9JZG+2mUO5ad3ybC3jOFWcw1HLD5w4kJPJ3swsdqamsSfVzLEUIxdNaq6kirmcFceNOTFWTuzM4/vL1Xx3YxVfXVzEi135XE+O+i//HP3o+0Wgf4n/0XijV69eBPx2KpFvOJHuFsfmOYs43LSSg/W1bC6dzbxAEamDp7PB2ZfbKVqeLEzleU0az1dm87ghn6dNeXzZmMXzpSl0FRr5ODWJU+kFlEyNQjnQH0EfTwS2PiRNiEP7TnSPHAvtvAjv7Yz2nWiM78YiHmxdtqIZE4VurIC4gT5o34lGPiKEcFtXZvmZUQwJIWZAIOJxIvKDcwkb6ItsjACzh4HZ2gWUSmcTYx9G/NsJLFRWsW3RTk6uPoK/7RSEg11IGOyGepAHxsHeSAZ4IhvggczGiUQ7Z+R9plDythurHIM4EhDB2chYLojkXBMG8qFYQdlYf8omBLI5UMgFaTyfqBW0GDTc1qtpS9LRlqThbpqBDpPGWu+sV9Cisz4ltyQm9PzZ0b0hrS3FSHuGibaclO7ZtNZGkbbSbNrnWLizsIiuqiLurZzNw/UV3N1cxYMdDTw8sI4nhzfy7Nh2np3cy/OzR3h2/pC1SeTyIb66dpSXV4/QunoJ11PVHDJoqReK2KRQsUWhYLdRzV6zjuaCTI4WZnK4JJsDBdkcKsrlQEE2ey0Z7MxK4VCGmTN5aVyyJHMtR821dCkfagWcz5XyePtsvr9ay58/reOPH5byfFMaVzQxnAqN5EBAJO97BbPKJYC1XhGs9o6mYpof5e+6s9I9hM1hCawJllDlKWCRaxQLPCNY6h9HhW885V7xP4eL8e8m0F5vTEDa3wPlIF8ktu6I+rqgsvdCbzed4omhrPKNZZ1HICdiRdzQq+gsTKVrQTYPagp5UGPhcXUuL5fn8mR5AffrFvLV2hquJyewy1/GcscI6oVqFgSpiLZ1I8zOj5DXXQj53UwEfVzJnJJAnK0nmnfCMU4QEjvAm7mB6RjGx5PjqCFugBfhrzuQNimB2dln4qAAACAASURBVN5ZGMYlkDxFgWhoEIb35BimaygKKWFe3EIsIQWku6WjHKehJGoua0s2s7pkPbvKt1KVWM72sg20HWxl78LdbMhqZEdxLetTKqhXzmVusArLjCjypoSy2FdJ8igvZLYzUdg6UvCWKyunetAcGMG5qDguiGRcEgZzRCDFbDeNiplRnIwT85lUwi2FnBaVsmcCR6dWQ6tBSVuylq6UJDrNRjrNRrpMeu4Y1XQZEunQK2lPUnNbr+BTTQItBiVtSYl8prX2JLQYVdw2KmlN0dCWaaAtN5m2PBMtBWm0lWbRUpxJ19x87i4q5u6yUrqqyrjXuJC7a5fRvmY59z5YQdeOeu7utmai7x/exufNezhUX/H3lIR/qjPRq5e1zGOnQsIxUy6Fk8NQ2QcQ3dvKCeO7sejHxfTIcUx/TyL6uKAZE4VhvJD4QX5IhwZaOfGOAKGdF5oxUT2cKPVORjk0FOHAQMTjReSF5BA20BfFWCFmTyNlmnJKxLMQDo5AOlZBuWwZm+Z9wOG6vYQMmI5wiAuSQW4k2rtjGOSF2M6DBDt3EmycUPV3snLiLSsnDgdEcCYilgsiGddigjgbr6D0HT9KX3FCEs8nankPJ1qTtLQa1dxJ1dOerOaWXs4tvZwWnbynZr/nxUSfSFuyzsqJ9OR/lxNdCwq7OTGLz9cv4e6mKj7f0cCD/Wt5fGgjT5u38/TEnm5OHOzhxMurR3hx5TCf1s3jWqqaA3qNlRNyJVvkcnZ1c+JoQQZHCjM5XJzFgYJsDv4lJ9JNnLGkcik3mas5aq6lSfhQH2PlxI45fH+1jn/7ZAXfnivh2fpUNgp8/1nOxC/xS3TPgf71FEJ+O508PzlbyivYV1fN/toa3i+dw4IQMRlDZ7LO0ZtPkxN5VG7+mwL9oiqd+6VmTikkHE3OZvZMIbrhYQj7+RDZ15O4gT49z26RfV0R2fsiHxFCwrCgngy0aVI8mjFRCO28iB/kZ70UezsT+OZMCtz1xPf3JdLGl2z/TKp0lSgmiIiy8yXMxotAex82WVYTPdgfwzQtuf4ZlMfnY/FXIrJ1QDXEE+HrU9AM9kRp54rI1g1RXyfEfWagtXfDMMiZeRM92OgZyInwcM5GR3AhPp5L8dHsCo3D1H86Vc4CDgviuCoT84lawWdaFZ9pVd0SraHTrKXTrP2hscnww1PyqwkBd4za/1Cg28ty6Cov4N7iEjqXF9BRXUxn4zy6Nizj/rY67u9dzcOD63l8ZCvPTvy1QH99vZkvLh3k2zN7OGZOpNY7iAXTfVjuHUFVYDhrooRsipOwTa1ld7KJQ1mZ7LVksC8vk/35WRwszOFgYQ5Hsg1cKEnl41IT1/MUXEkTctEo5FqRiq8PVsCNRr7/uJrvTpbRUZHIqbhQDvlHst4thDpHb1a5BLDeO5JqhwDmjHNhhXMY6wOFrAuMoylARJWHgAr3GCqDRFQFS1jsHUfB9LCfw8X4d5UFsY0bElt3pP09EPV1Ib6fK9I+jqSN9KJiZjhV0z3Z6hPAdaOMO5lG7s7K4PPKAh7U5POwJpdH1dncqSvmy01zuF+VQ6cljWahlC3aHJaFiyn3FCK0cyOsnwuxNh5I7f3QjAonZYII07uxxA/wI6qfF+G93Sn1TiPHUYd8RATGkRHE9XYl/HVHwvq6YJquJNs1CcMkMdGDAsjxTMPslEySQzIrjNVop2pRvK0ky6eQVZYNbJyzCe00GRXiBcwW5lKtLSXVVUj4oHfQvONFbB9HkseFIB4wE+0IN5JGeqOwc8I4wh+5rQuyvjPJH+lMg0MgzaHRnI6M4EKckPPiWA5Fi1D8diIVrqE0x0XQopBzW6Xo2fLZrrE+gbfpNLQn62lL0vUIdKfJwL1UPe3dWeYfZ5zbk9W0GlW0GJQ9jYctSSpaTGpumRJpyzbSkptES67Jeha7txXeWVDIvSWldC0v5X7NAh40LaWzaQldGyu5s7WOO7saWV2c+d8hzT8XWfi7nokff75DJqAYEoCwnw8Rfa0vlX/JiYRhQciGB6N+O5KEYUGYJsWjfjsSoZ0X4sH+PZwI6u2AxVmDqJsTWX4ZLFNXkDhZgsA+gFAbL4KH+LEmYyXCYcEYpmvJ8UtnsawUi78Kka0Dym5OqAd5oOzvisjGFVEfJ+J7z0Az0BWD/V9wIiqCCyIRF0XR7AwWYrabQaVjFIcFsVyVibmZKP+bnHj1M/mXnHhV6tdl1Py1QOf9lBOd8/K5u7iYjuUFdFQX0dk4j84Ny7i3rY77e1bx8MB6Hh/Z8jcF+qtrR/ni8iG+ObGd492cWDjTj2Ve4VQFhP3AiUQNu5OTOZiZyZ7c9B5WHCiwJl6OZhu4UJLCRyXJXLfIuZIm5IJRyPXiRL45VMGfbzTyp4+q+PZ4CW2LlP9MZ+KX+CW6Bbo7A62ZHMyGknkcW9PEyfWr2VuxmAqBjPThDqxy8OJjo4oH88w8qU7jycpcHq8s4GljPl82ZfOsMpVHs1M4o5CwXWJklkMsmZPFRLzuRJydNwnDghDYevRckNKhgWjfiUY1OhzFSGtDofHdWIzjY4ixdSeqjzOx/T2I7ueKYKAPitFRSIeEk+aQhNExmfq0VdQn1SEbEYV6ZDSh/dyRjo1GMDwY/VQ5hb4pVMYXIh7sgrK/C9rBXigGuKIa5I60vzMiGxcifz8Nia0zSUM9yR/jx4ppbhyNEnIqKpzTUSFcEgs5KRSwZKIPqYNcWekRxi29lpsKKZ8lKvgsUUm7QUtnsoEuk77nObk9Wd3T1NRlSKRd80OGoU2rsG5IS9HTnp5EW7aJdksK7ZYUOgsz6CjNomN2Dnfm59O5rJD2ymLaamfRub6C+1tXcG93E5/vW9t9Me79q4vx6+vNfHXtKN9eOcrmxASWT/Ol7C03iid7UTbdi8UzAqhwDqbSJ5zaEAGrYiU0SRPYpNWw2aBlW2oy+/MyOVOazrUF6dyYZ+R8TiwnDMFcSBbSVZXFd6dq+LdPGvn+WiUvd2Zy0yKkOTKcD1zCqHjPk4ppnqxxD6fRNYy5451ZOMWbBq8Y1gTFU+ctoNZHSKVHNMs9hdSGy6gMlDDfPYb08T4/h4vxv02g4/o4I3zTkZjXp6EZ4EThOE/mT/alYqI3B2Kjua4U05Fv4vOKPB5U5/OoMocn1fncr8nn/oocPl+Wyd3CFD6RK7n1wRYqA4XMnxJnbbQa5IvKPgDl0CBibTzIdVAhsvdFNjwYyZBghHZ+mCfLWKWoQNDfB8sMJRJ7D4Jfm4pkeBBxQ4KIHRpKaF83BHa+SEZEopkgJ2GMjPzQPGq0VRT4FLFQUkmVuZGNhdtYqV7E7Mh0XH89Fr/fTaLMIxlRnxkk2LgjtXNFN9Ifme1M0kf6oB/qi7SfE8oB7sj7zUTRZxoFY7yocfDhUFg4pyKDOCeM4MPYKD7wi0TxLxNo8BByThrBLZWI1kRVj0C/Ko/q1FkXpbQYNHSa9T2C/OoX2Q6Thk6zhs4UHS0mNW1JiT3S8kqs283dX/eM6JacJNrzzbTnp9OWn07nbAt35hdyb3EJHYtK6Fo2l7srFtC+cgFnK4oRuDv8d4vzP92Z+Pe+915/B+nQwB5OCO2svTDqtyNRjgrraTQ3jBdiGCcgxsad6L4uxPb3JKqvCzH2vihGRyIZHEbKdANJTiZqklayVLEE6bBwEkdGE2HrRcI4ATEjgkmaoaIkMIOlsXkkDHNHYeuM2t6DBBtHlPbuSPs7EdfP2cqJfk7dnPBlxXR3DkfGcDIyjNNRIVzs5sSiid6kD7Fy4lOdmptyCZ+q5HyWqKDNoKUzSU/njzjxihWvOPHqldI6PaabE2Y9belG2rKTf8SJ9J9yYmkh7cuLaaudTef6Cu5tqfkLTnQL9Ic/Feivrh3l20tH2KSQsnyqL7PGeFA82ZPSaa84EWTlRKiAJqGYJmkCGzUaNulfcSKD0yVpXJufzkdzDXyYbeXE+eQY7lRn8+3pGv71ZgN/urqMl9sz+Tgn5u/9M/OLQP8S/6PxRq9evfD+9WQiXndENtaHLWULObF2NWffX8P+6gXUawwkDZ1BwwxvrupV3C9P5UFlGg9WWnhcV8Sz+iKer7LwZEUa9wt1XNOq2BabjOW9SCyOckJem4JiyA8ZhVfPcskTRQhsPXqaCaVDAzG+G4tmdCiKof7E9HVG1N8dqb03MQN8ibEPIs87k7hRscyOKmeubCkrTKvID8hBOjwSzdgY0hyVpLspaNLNI2aQI8mTgpAMckA20JXYPtNRDHJH1G8mkv5OSPo4ENvXGcUANzJHurNsqi+73P04JxBxPjaWc8IoTkYGsys8Ft3vJ1H+XgRbQ4P4LDGB2wo5t5UKWhNVdGg11tpnoxXaLQZlD5xbdAqrQP9oKkCbRk6r3vpv2lI0tGboacs20pGbTFd+Cp0l6XTNzrKuF64ooatyFu01s+lYvZD7H1Rxb2c99/as5snRrTw5vvuvLsYXVw7z1bWjfH29meOlRaycEcKSGWHMcgxgwTRvyicFMneSH7Pe86Fsqhcl07yZ6xTKfI9wFvhGsDw6lrVqLYcyTFybl8X1BXouz0rgcqmcC1nx3F9XwB8v1/D9zWq+OzOb+8vknJAFsN7Zn+Xj/Zg9xpkVziGs9hCwfEYgc8a70ugXy6pACSt8RVR6xrDEJYJl7tGsDJRSHSxjeYCU0hkR6Ee6/Rwuxr/7c7XE1h2FvQ8Jdp7EvOlI1JvOyN70ImO0E7kjHcgf5MXSif4ciYii1azm/twsPl9m4eHyXJ5W5vKkspBndQU8qcqka5aJS0mJ/Ou5I6zXGbla3EBQnxkE93NG8LoTgv7WLW2zfFOsjVWD/Igd6IfQzg/B0CDWpzYQZuOFoK8nWVNERPZ2IGliLNH9ra8+QlsvZMNDiervR/JUDfEjRSQ7GMlyNFEcUkRN6ipWZq+nPnMdVeqlVCZUUK1YRKiNI0WeGkLfnE5UXyekQ73Rjw4ksb8zpqE+SPu7kWDvjaivA5I+M/9/9t46vuo7y/+/KzOzM22BJERwd5e4y43fXHeN3rgRF0ggwQLBAoEECE6BFkpb3KECFUqBtkiIQXFoR3Znd2d3n98/bnKBmc7O7v6m7Tz64zwe53Ejl+QPct7P1+e8j5A9JISKCVFs8hNyTqriQ6WCD9UyzsliWeYdTnwvDzb4afnUqKY12cgtq4XWpER79rkj1Up7ajI3UuPtgrgjx2p/bc9OoT0vlfZZabaxdTnJtHd/vS0z2ZahzknhRnYSHXmptOWn0l5ki8P2ylw6Km0Cun2ebUb7nfpqbi+dS/uyGnKiQn8o0fy3IhZ+EAH9vAf2mYrCOYisyVqULsEkjZLYOZE+QUXKSBGWQeEoHX3ROAfYONFPiKJ/FAW+WehH66iRLqLWuIzmvC3MjizFMlJB8lgFeV7x5PqaWZ9Ui35oANlTRRgHemNy80Pt4I7J1dfGCWdvGyccfLG4BlA4LJAV04XsDxDygVzDeZWSD5RSzkij2S9SkvbaVBZOjeNNUTRfJRq5bjFzPaH779aaYmsazEixl/n1JFpupsY/q9XvKeXo5sStzKRnnChKf44T+XTUFHJ7sW0mdMeqedxqrKF90xLu7Gng9lvN3Hl3Mw+Pv/EcJw7/CSd+e+kkx8rLaHKPsXHCK4LFM2ycmD9Z+AInFvqIWBwUx+IeTiSlcKwgh88WFPLZIiuf1pj4uNrMR8U67m6fbePE1dX8/tw87qyIJ2Jk/59STLy0l9Y9xu4X04j9pTuGUUHsmVvHmS2buPDmdo43r+D1vCKs/ab9RQH9ZF0BTxbkckIu5i1tLlUeagpm6JA7eGFwCyCutw8SBz/kfQPJmqzFNCTa/rHKNcSekc4cLyd9jMR2IDr6Yh4oxDQ8CsOIGKL7+hPa25+UmUmk+2ezJLmRHTV72VS8mfmiEupiSlinX0DKKDFKRx+0jh4kDwohYWCQXTgrek1H6+CB+VUfTH18Se3vy5wxHmzyD+R4lIT3ZWouqNW8JxdzRhJN7pCZpDn5sT1Uy8cmKdcTdPZazJ4O6o5UK7fSkuzjtJ4X0D1TAZ4X0Destoamm9lJXM9L4WZhGh1l2bSVZtFamU1bz3rhpXNoX1FN6+p53NywkM6dK+ja10Tn2xu5f3QPD07u5/F7R3n84Z8ejN9+fpy7b29nwTgP1gVKaAiJpdk/gtX+MSxxD6d2WjizJ4ZSOCaYWSPCyB4eRPpwX1JHeVPqHcUWkZp9ZjVX6tK5v7OUL9em8tkiM98cXsC/X13Df3xezzdv53AlT8GekDAWjQuldIA/yydFsHZ6BMsmh7B8upB1ARJ2iC1sCNeyMlBOQ7CSFQEyVoeo2BhroSHKSH2ohrLJkaQM9vlbOBj/6mIhaaCQvJHRpA0Ow9IvmMT+wSQ5R5A3NIC8wdPJdPRnzohwtodGcyVez+2qPO4tL+feqlIeNZTwaHUJDxsLeNyYz6Plhdwoy+LbdY28XVZEtVcc4l4zbMsknAPtNaPFXolIHPy65+OGonaNQOIaxra89aTPMBPby4/4IbYJBukTlLbRYX18kTsFED9cTMJIOeG/9GJeaD6WYRLUfWPQDFaw2LKcKsNimgu3sSh1FYvjF7OrZCtvl++gwNdKmruZPUXNxDh7YBoeiqrPTHJGRJHoFoimrz+yV2ZgcvYjY4A/dZPC2e0TwocKHR9pNLwnk/CxTk6e0xisAz3YESHjktnAjUQ915Mt3ExKpC3F9kDakWYriWpLT7TXNveIks5cm3Du8bb8VFudc04Kt/KsdBZmcDMnmZs5ybTlp9KRl8rtwkzaCtJoLUijszSbrop8OuYU0VFVRHtNKeUxYX/Vv4n/g/+kYuJ/6oN+5Uqskw8ZE9X2jHTKGBmZ42SkjRbbOWEaEIZhWCTaIZFE9/UnpLc/yTOTyArKY3FSA9uq32BdbhNzowpYHF1Co7aW5FFxKB290Tp5kjw4mISBgWi6OSF/bZrtNuVVH4y9fUnt58ucMZ5s8g3gWDcnzqtUvC8Xc1ocRd6QmaQ5+bI1WM0Fo5RrCTpuJiTYH/pakxJtdftp3Vnn524qezjRnprwQi30davFVqef1c2JglTbAqCSFznRvnQ2bT2cWG/jROe+Jjr3d3PixH4enTvCow8P/Qknvvn8GO27N7J4greNE8GxNPlH0OBn40TNtHAqJ4RQMDqomxOBpA33JW2UN2XeUWyJ0/CWRc3Vugzu7yjh6poULtVZeHp4Pv9+ZQ3/cWkpT97K5Eqe4qcWEy/tpdkORoOrF9YhgVgnB7OzYgFnNu3g/FtvcHzHRrYXV5IzNJAtvpFcSk+koyaTB2sKeLChgvvNJXzdlM/j7cV8u6mSp4vL2REs5O2kcoonSkkYHIvcORCZSwASBz8UzkEYB0eRMCIO89AYewOI0iWY+OEiUscpMAyKtIvrxJFi5H0DEfXyti9YUbmGEPnLmWRMtrBQv4RtSw5SlbyctSnrmB1UQL53CqX+qcT18Ubp5EPS0AhUTn7o3YLRuwWjdLSNtVM4+KLvM5OSoT6smOjH3uBoTovkvC+O5rwkkg9VJpaNFaLrM5mqiYGcUGq5atHSlmKiNTn+hUyYTUDb6jHbstKea2hKt08E6BlRdD3BQGd6EteTjLaDNDuZtlnPNqO1V+XTPs+2WrhtYTkdy6vpaJzPrfULaduyhNtvNHL37fU8OLydxyf28uTMuzx87xAPPzjM4/NH+fWnp/jtZ2f4/een+cP5YywMFLIhXM22GA2bY+U0R0toCI1mRWAMCz3CqJzgT/YoH1IGe6FynIbCwQu5ox8Zw73ZpzfwYHcND07O5X5LJl0rUvn3s4v53VfL+N2nC3iwKY23NGEsmuhJaT9/qgZHsGxqBMtmCqmZEExDgJwN0Sa2yJJZHa6n3ktKvY+MpQEKVkebWSdJYlWkgVofMTkj/H+yArpgpJBZ4yLIGR1G3uhwCkZGkNU/iDmTQskfPY30Ab5kOgawfHoIHypldJVkcqe+iHtrC7m/toRHjeU8bCzk1xtKuL88h47qbC6lGzlXXkWTOp3sSXHE9fJG3T+M6Nc87NfePWMj1f3C0LgIkbqGsSN/AwtE+cS86oW0TxC6AeGkT1Ah656/K+rljdotnLTxWgyDYqkXz0bpIkTjFoN5uIaykGIaTatYm91ClakOq7sVyzgjG5Ma2Va0nWX5q9hft4NYx+mYBwai7jWDBDd/jM4+6Pv6oHLyQdXHh6yBviyfHsjugBDOSdR8KJNyQRHH0Tgjqa9MIX/QVA5JVVw1abmRoONGkq25qs0aT3uqbetgV/ftzvVU2wNpzwNsR46VjvznBXQGrTnptnrS/FQ6CzO4lWflVp7VlnkuTLdl+ArTaSvKoKMki/biLDboFAzq0/vHFs4/yZj4v7jbzx2JHy6yN6ObhsSgdgslfrgIed9AxH18iR8uQuESjMotlMhfziRrWiILDUvYVneA6uTlrE5cQ2XgLAp90ygPTEfi4IPSyZuEwUJUTn7oXIPRuQahdPRF/JoHij4+6PvMoHiINysm+vJmUBSnYmXdnIjiPYWBZWPD0PeeRNXEQI4rtFy1aLiVYqQ1+Vndfk/pUWtaMm1ZqbRlpdGenU57djodWWnfyYmOtESuJxltpUdZtrGLbSWZ3CrJpK0qj/a5BbTVFnJrYRnty6rpWFPLreaFtG1ZSteeNXz99nruH97Oo+Nv8vj0Ozx87+BznDjJby6e5vefn+L37x1iUVA4G4QqtkSr2RQjozlKzKqQaFYERrPAPYyK8f5kj/QheZAnKsfpyB28UDj5kTXCh/0mIw/31PDwxFzubkjn9so0/vXsYn73ZT2/+3g+9zZY2af6Xh5AXwrol/ajWi+BQEC1p5h5HmLmBCjYmFnJuS1b+OTAbs692cKb1VVUTBZ+p4B+sL6Ue+sLeLqzlPvrCrk3t4C9USKOZMylZLIcvUsYmv5CpM7+WMfK7UPv1W6h9no23YBw+/QNy7BYEkeKMQ+NsQ/Llzr6o3INQeroT/JoKfkzTBgHR6EeGIdksJTGvE20zN7DUusa8kPzqQzLY6t1JXLnAHRugagcvVE5+SF5zQOVkx/SXp7I+3ij7uVO1kBf6iaGsM1HyIkYCR9KlXwoieWsNI71nhEkvTqTrH6T2RMt5zOzkWvxWlpTzNxMTvhfC+ge8N9MMtleU8zcyrA1MbXmWbk+y8q1WVZuVmRxqzqfWzUFdNSUcrtuDrdX1nCneTF3NtfTtWs1t99q4u7BrTw4uodHp97m4blnB+M3H5/oFtEn+ddPTrAzOY0VQWI2xKrYLFOzVaahJU5JU6SChmAJS3xiKZ0SRsYIf3Qu7mhc/JH28UHvMImrc0v4t+M1fPNBJdeWGbm7OZ//+mgR/3V5Pn84NZ+LhfEsmuRDjstUyoYGM29cFHXTo5k7PoC66ZFsjDCyXZbCihAlNe7RLPWUsNhTzBJ/OeulKWxQpLJcqGX2jEgKx4ViHer3t3Aw/tXFgsOvXmWtOpN1ykxWhBuoD1Yx3zOORTPELPARkjfal/hXPKgY5seBSAXXMzPoWjCL++uKedBUalvxva6Upxtn821jBfcWzKK9LINvtm9ib0YJLYZSIn45FbFLAGJHX4yDo9APjEA/MAKpoz/6QRGE/sKHsNeC2ZmzluaE+Uj7+qN0CkXhHEyRZwKmIdH2h1zDoGiyJhuROoawJLYckVM4EU5RVIqrmBVaSKJfBlXxS1mZ2UxZRDmGYWr0o80UCEtYnrSIpYYSjE5eJDr7oe3jjqV/gK1syskbQx9fjA4+5A31Y/l0X/aFRHMmTsZ5qYj35XE0TAsk0dGPxdNj+Uin4Uuzhi/N2mflT8lm+41OZ3qSTWSkmO2NgT0CuivLyq3cbtGcl0lrTjpdhbm0z0q3C+uuokxuF2fRUWATzj3iebxL3x9dLH6H/6Ri4v+L//zvf4an4wQsw2LRD4xA0y8MiYMfyu7ypYQRcWRP0dn2CPSPQT5cydr8zTSX7WRZ2lqKw4uoiihgY8JSFC6BaN0CUDv52JMrSkffFziROcCXxROD2eYt5Hi0hA8kcj6UxPKeTMwGrwiSXp1BttsUdkfJ+NRk4CuLlhvJZm4mxf9J3X5rWgq3Mp8J6I6cDDqfE9A9nLiRaKTdmmBbrpKRyI0M2yr6Hk7cKM+itSrPtoK+ppSubk7cbl5k48TrDdze18TdAz2c2M+Dcwde4MS3n5zkd5dsnNiRaLVxIkbJJqmKrTI1LXEK1kXIWRUkps47lpLJYaQP90Pr4o7a2Q9Jb29MfSfzxbwS/vXEPJ6+V85XSw3c3ZLPf15YyH9ems+/Ha/h4zwjfX72s59aTLy0l2Y7GJcEiFgeoGC1OJntmfM40dzI+bc3c+aNRo4sXcBifzFbfMP/REA/3FDOg41FfLurnIfNxdyvKeSwXM2RjLksCU5B0ScAqVMACaNtg+/lfQPtY+yU3bOhlS7B6AaEkzbedo3cM7rOMiwWlWsIMqcADIMi7c2HSaMktrrpIWJUQxUYJ5iYo13IW6tPszStgdnCfLalrrIfjEoHLxQOPqj7+iPr7UXcKzNRO/licXJnzlghS8b5stc/nLOxIi7KVVyQxXIwMgLj37uSPVzOBv9Y3tcZ+Cpez40EHdeS47mR9L8X0B1pzxpFbqVYaO0u47ieHm+fRXuzKJ3Wymxuzsnl5tx8uqqL+XphJXeXzaWzoYaudQvp2LmKrr1r+frAFu4f2cWDE2+9cDA+uXCMbz4+wTefHOMPV89xs2UTC/yiWBurYLNKxxaZmi1SDU2RCtaEyVgRKGWudxzlM0RkT4hG4+yHyjkQs7M7H5Wl8c/H8/jmfD7ta1J49PZs/nChmn85kcP1xWbWTPEh39mfvIGhlIwKZd60SErHBDBvspDmEA07pSk0RxqodY9kkY+YBdOiqfeRsTrcwDZtNo1xCSwL01Dra7dhegAAIABJREFUI6ZsciTWIb5/Cwfj9yIWdubM5s1Zc9meXUlLcgEt2iw2RKWwOkzB/IkBWPsHE9/HgxbPKC4aE+mYk8fdhiIerS/lcXMFjzdU8nTTHL5ZN5unK8poL0/nfLKGz+bVUxukJtZhBsqBQsTOAd1rjkPQ9xeidAxE7RSK6JUgLOPiWSidTYOhipwZWgyDopD3DSR1nAL9wAh0A8IxD41B5hSIZZgYsUMQBd5pmEZpqAivJMo5ksKoUnbXH2WhaSFzExawrnQjyRN1qIfJWGWsZ3Z4Jk2WapQO7pjc/JC9OhWTmx/y16ahd/DE8itfdL3dKRrszeopARyKiONcrJTzkjg+UkvJ6zWE5L7T2SmUcEkr53Odgi/NWq7F62lNNr0wErKnt+BWmk08t6Yn0JWZTFeGzdtybNNuWnPSaZ+VTWdeOrdn2bLQbfmp3CnJ5nZxFreLsxjm0OdHF4Z/wX9yMfHX8J//3T8icvK1c0LlGoK2v5Dk0VKSRklQDohFPUxBwtQEqtTzeaP+CMvSVlMdU8x6Sx0qt2A0rs84oXLys3NC5eiDxXEGVWPCWDrOl72BkZwRxfGxTMGHsjj2hYRh/tkAsoZJWO8fw/taPV9adFyP1/FVspkbSc9K/dpTbVnoW2nJtubA5zLQndlpdGYkd2+rTaAjvXsBV4qFm1bbw+G19HhuZCdxsyCVm4XptFZkc3N2Djer8+msLubOwgq+rq9+xokdK+ncu5av393MvSO7eHBiHw/OHeDB+4de4MTTj4/wr5+f5vM1jSzwjWRtjIJNSi1bZGo2SzQ0RSpZHSZjRYCUaq9YyqZFkzU2Ak1fX5RO/iS5efBJeTr/crKQp+/n0dmYyqN3KvnDh1X8y9E8rtYYWTnJ+6cYEy/tpdkOxoX+MhpFCawzZrGtvIYTLdv4YO8uzu/dyrt1C1gYrWZLUBSfpJjpWpDNo8ZC7jWXcb+lhMebq/j1ttnca0qiY3Eejb4x7DcVUempR+4SjLp/GFrXYDTOwehcQzH0E6J1CSFxaCyGQZHoB0agdgu1Z5jjx0hQDRSSNcOAcUQsuqFRSBz9yJ9hQuUagmVYLJmTNCjcwpgbUYhiYBRFwVnMlVWw0DCfN6peR9UvDL1rCBpXfxQuvijcApA52bIKGgdfTM4BZI8KoGZsIG8GxXEwLJL3VRIuymNYMyMS6T9Ox+rsxRa/cD6QxnDVqOYLk4avLDp7l3TPWDr76uC0BHstZkeO1TYiKz2BztzUFzqur6dauGY126+c27NTaM9JsW1FK0ijrSyLm+VZtM+dRevcIjrrZtO+ZDbty6u507iAO1uWc3v7Ku6+1cLtd7dz9/he7p55h/vvHeTx+aM8/eg4335ykqcXDvO7yyd5evYQi2YGss5fwpo4PdsVOrbJdayPVtEolNMYpmJhQCzVnlGUTYkgZ0QoGYPDqBwcyAGriW8PzeE3p8r5zdG5PH47m4c70vmkTMcav2DyXH3JdvOjcGggs8eHUDzCmwUzw1kVImddjJ7GSAN1fgqqp4mYOz2O+TNjWBmqZaM8lRZNJstjTCwIklHlFUveuGCsw/3/Fg7G70UsjOo/iC1FVWyat4gdC5ayr2IJW7Oq2JyUzdpIKZXT4tA7eLN8UgRnpTo6Smfx9TKbgH60vpzHTZU83lTJNxvm8GBNCXcX5nIrz8JuhYYjufMQ9Z6Cekg4MQ7eZI/SYOhvu4ZWOQWg6RuK9LVAmpPWE93Ll0bNPGrD8+zz2BNHilE4B5E+QWWrpXYKQN8vAqVLGFXCQtKmJGAea2Gxtg7l0FiiHQMxjZIR7hKEbqKKWlkx4v5hLFVUk+Ouo9BLgWmQbXSktq8XemcvVA5eyB18kL7mjb7PTGonhLNuehDHIuN4P1bEidg41s2MQf5LLxZNjOR8dCCfa+Vc1iu4nmDiK7OJGwnx3Ey0vFDKcT3BYBfM7akJdKYn2T/vyLLSlptOV14at/PTbZnpvDTaC9JtJRz5qT+6APxf+E8uJr4Pz5mqt99wpk9QoewnpDIkF/WQWPL906iILWKBvpYdZVtR9ReidwlB42LjhNzV384JdR8fjM7+ZI/0o3ZcIHsCYjkojOR9pYSPZdGsmRGJ/GfTsTp7sMlHyHuSWK4YVFw1qrtvTF7kRM9ra+qLnOgZp9jDjB6/bjVzLcVkv1Vpy7I1vto5UZrFjbJM2qrzbZxYXElbXSXty6u53biA25uX07V9FXf32Tjx9R9x4smFYzZOnD/Eby4d5/7x/dS5B7HOX0KjWM82hfYZJ8LkrAlTssA/hiqPKMomR5AzPJSMQWFUDgnkULqFbw7N5jenyvj1kWoe78/i4fZ0PirR0uAbRLLzzJ9iTLy0v0GbIxAI/kMgEPxGIBD8tvt1+3PfnywQCM4IBILfCQSCO93v/2OrFggEX3f/+9MCgWDCf/P7egkEAhaFqdmoy6IxOZ8N5XM53rKNc3t2cG7XRg4sWchSseEvCugnm9LprMtn0SR/dqtzKZgsQ+YchMIlGPOgCCyDotA4B9uEcz8hiUNt128ypwAUzkGkjlOQN91I8gQFmsERlAenkzxBgXJAGLG9vClwt1AZkEbiSDEV/qkkjlWQPSOejBkW5saVsb96D+aJGhJHyKh0T0LvGIjMwQvlwEDkrv6IensgedUdraMfSf3DmDcxkrWeIRyRiDkYHcd2fxHxvcZieGUiBQMC2BUk5b3YCC5ppFzWK7kWr/9OAd0D7Z41wc+LZXs9pn2k1rMDs2ehQ4/fzE3hRr6V1uIMrpWk0zonlxtVBbQtLKd1UTnty6roWDWPjg1LaNtUT+eeJtsWtKNvcOfUfu6efZeHHxy2C+gnHx3h2y9P8c+fn2OjVMtKfxHLYtRsFMnZLFGzVWpkTZiM5kgdKyO11AXLqPGJYb6fiFrfWFa4R3EqP4PfHl4GF1fy+9NzuL3GyrGEWNZ7hTBveAiZLn4UDA1m3mQRleOCqZoUSr2viA2xJtbHmVgZqqZ6WhSVk6KpmSlhmb+CFkkK27TZNMmtLBZqWBKmomJmJHnjgske951j7H6UmPg+fFtJLbuq6nm7vol369bx1vwGts5ZwJuzClgqVJPU25+Sfn68ESHjRlY2XbWzeNRcxqP1ZTxuKuHh2nyetpTyZGMFD1YUcbcyg0uZKRzJLCd1uAzj4FgMg0Iwu0ahdwtE1tsLjXMQMkd/kicpSRwrReEchHWsnHI/Kwkj4tD2F6LpF2Z/OE0eLSWutw8a1zBMQ2Ip8bGi7huGfEAsc6RVVIiKSRivxjRUjKi3P7F9/FANjSVhipLVxgpkTlPROHtgdvEnfmAwOtdgDP2C7dfiur6+xDu6UzsxnMYJvhyNlfGBSsLZ6FA0/zCMbBcfDgVH855cwSWVgss6LV+ajFw16PnSZORGQjxfWXT2ebk9YrqnrKPNGm8v7WhPS6ArN42uPJt35Fh5P0H/o4u8/6P/JGPi+/Jhv+zPLE8LCaPl5MxMIH26maqYYnaVbsUySUPKaBXlMxLQOQYgc/BEMSDgTziR3D+UuRMjafQI4XCciANRInYGxpHUZyz6X02gYEAgOwMlnIsJ5zO1hMt6JV9ZdHxl0XEj0fiME917ADq+gxM9rOjIttoTKi/sEniOE19ZTXZO3CxOt3PielUBbQvKaV38jBNt6+uecWL/Fm4f2cOdky9y4puPT/LkwmGefnGS3148w0aJlhV+IpbF2jixSaxis1jPmjAZTd2cWBwkpcYnhlrfWGp9YljhHsmZgix+e2QZfLqcfz45m85VKRy1xNDkGUz1sCD6/MMvf4iYeGkvTTBHIBCc/TPfe1UgENwVCAQ1AoHg5wKBYKJAILgtEAhynntPoUAg6BQIBOMFAsEvBALBfIHtAP3Vn/mZthroIAUtmizWqNJoTi3m3cbVnN29g/d37+SdxUtoUJvZHBjOhUQDXfOzudeQz8ONlTzaXMmTbeX8Zkcpj5qL+bq+nKUenmyQ5WMeEkmMYyBylyBSR8ViGRSF3i2MlBFiVE6BaF1DyfQyo+gXgmFAOGmT1RjGiSmYkYBqYBQFwZmUhOagcg3H1C8a8yARlhEyFIOjMU5Uke6XQNrMeAq98sj3zmVr6VbSAxJR9A8lfkQcCqcAZL18MbqGIenticLRC3Ufd4xO7hSMEbJ0ZjBLvWLIGe6NpZ870t5TmTN0JlsDRLwTFsf7EjlXNGo+U6u4atBzzWLmK7OJm4kJ9mvkngOyKyOZGym27WbPNzJ15qW9MA3gVp6V1u55tDfTE+x1mz2lHK25KbQVpHOrJLN7I9qsZ5sJl1Xz9apa2tfW0Lmpjq7XG7jz1gZuH9jO/aNv8vjEOzw9d4hvPjzG4/NHeXz+BL/99Cy//eQ4R2srqPEMYaNQS5NUxxqRimaZnlXRclbHKmmI0bEyXMOyADmrg7WsCdLR5CPmaHYCD/bO5T/OLuPO+kJ2qk3UTBdSMS6Y4hHBVIyJYvFMGXMnCqmeGspKoZIWVTwtCgsNQg217lLKxkdQNMaPee5Clodo2KrJYqM2kzWKZBZH6ZjtEUvWyAByxwjJnxjz58TCDx4T34dvyZzN1vx57Jq3jNcXrOTdlRs4uHIdB+cv4PXsWcyZoSb+1ZksmhrEp8ZEOirz+HpFMU9aKvh2SzlP1hfyTUsZ326ZzaN15TyozeBmmpFL8+ai6uWBzk1E/IhItE6B6J1DUToGoOsvROEaQkmAlbi+tsUU4j6+5EzVkzhSTMKIOHQDwu2LjuKHi7AMs90OSVwDWBRdiMohGKlLOLNC81mZsoIN2RuIH6klcYSStIlaaiLz2Z6+krlB2Rj6RSJz8MHQPxCFgw8KBx/iXpmJwsGH2F9Ox+gSSLrrGOZPDGa7TzjvBIdwNE6Lpo87iUPCeTNUyokYKZd1eq5odFzR67hq0HNZp+Wq4cVa6NZksy2r1/3aM8mgZ4V3R1oiXblp7FNLf3RB91fwn2RM/BAuHhvNLM8ccr2y2VK8mbywNJT9wkgZLUXh6I+0lw861xAkfTyR9fFE2Xsmekd38kcLWTojhKWekRSM9CGh30wUvadQPtSLFt9Y3g0T8b5YymcqFRfVSq7otVyLN9kf9Ho4cT3BYH+wu55ssk+LuZVpm9zUkZdqG7nYXVrUmptin1t+Mz2BG2nx9gVA19IstOYkc6sgndbiDFq7N2e29nCivoo7K2toX1tLRzcnbu97jhMn3+HJ2UM8Pd/DieP8+uJZfvPxcQ5WFlHrGUqTUM06sZpGkYr1Uj0ro2SsjrFxYoVQTX2AjIZgDauDtTT5xnE8L5mHb9Xwh9NL6WzOY6dSz/wZYVSOCaJ4eNAPFRMv7aX9twejWSAQ3BcIBH//3NeyBQLBzec+bxMIBJnPff4PAoHgoUAg0P+Zn9lLIBCQMV7IwiAjCyLiWZdcwTurGzi3ewfn39jFkeUraTImszU4kguJBtrnZXyngP6mpZz7K2azITyC+X56VC6ByPqFI+sbgMHNtiHN0E9I2mgZOtdQdG6h5PolouwXiq5fGEljZehGi0gbq0YzJJYSYS51qrmU+2WgHyJC6ipkQWwZcc4hqAZG05i8FM1IKWLHGGpi57LAuIDDy98hfrISkbM/UudA5E4BqJyDULsEoHMLQOvkiamvB7reU1A4eqN1mEHeMF/mTwxmY0AcB6MUnBApOa/U87nOwBWdoRvcer4wGvjCaOBGQjzX4vV2iPdkwlpT4+2Zhb8koP94kH5bVrJtI1pOMq35qd8poDuWzuH2innc2biYrs11tG1bTuebzXS+s5V7R/bw6PjbPD57kCfvH+HJhWM8/ugkTz87yzcXj3PnnV1UegSyzEdEQ4yChhgFTVId6yRa1kl0rBVbWBOjY71Izza5mR0yI3uFao6opHTWZHO9Kp090ljqPSJY6h7DvAlBLJ4eRd30SOZNEjJvUjjLA2U0iQxs1iSyIkJO9XQhZePDKRodSvFYfxrCVWwQJ7PLNIsWXRYNsiTmh6koniIke1QgeWPDsQ4P/t+Khe8tJr4PnzZgOI26HDZlzWVP5TIOrGrmSHMLZ9dt5M3qCtbq89C84k6SwzQOieW0FWZyt76Upy1VfLu5nMdN+TxtKePJtmKetOTzoC6d2wWJnLKaqJwhImW4GstoBRLHILTOISgdAjAOjEDhEoTUNQi5W7A945w0SkLCiDj7EqOemtGeUg6poz8Rr7lT5peM0iGIfPc0ZkfXUiVbxOKk1ZxueJ+Wos1k+1tZb6qjKrSYytBcSvxSEDv4dJeQeNvKSJz9kfXxQvaqB0bnQKyDQ1jqHs2ekBC2BgRidJhI+iAvtvqLOC5S86nWaIs/g5kvjAYu61X26/HWZPOzDF+CgfZkEx1JBlrjtdxKsU0w6BHPa8JDfnTx9lf0n2RM/JD+s3/4GQlhCexfuIfEKSokbsFInQOROfqj7BuIytkfras/WidPjH090PWeitLRC63DdLKHeDNvfCDNfrEciJRxPFbJhwodl7R6rmj1fK7V2B/2rhr0XI+3cC3eYH/Q67kduWm1cCM93n72t2envMCJHgHdmp1sXwz0/K3ljYwEbmYn05pvtXGirFtAVxfRNr+M9qVz6Foxj9vrF9K5qY62rcvofLOJjre3cPfwHh4e38+jMwd43M2JRx+d5MlnZ3j66TFu7tnEbM8gOydWRcu7GWHjRGOcmTXROtbH6tkqM7FDZuTNMCVHNXLa52VxbU46uyUxLHWPYIl7NDUTQ5AOmvBDxcRLe2mCOQLbldoDgUDQLrBdyw3t/l69QCA49Efv9xYIBP8psGUdegkEgv8SCASef/SeIwKBYMmf+X29BAIB5kH+VM5UUxVgZpm+mNcX13Fsawvndm7jQN1SNidlsiMshguJRm5Vp32ngH7YnYHeJZNTPk1CXC8PxC6hmIfFonX2R903iNRRUiyDojD0E5I0PI5qUQEiR1+UfQMxDosh1z8R82AR0Q4BVEQVsCZ+KQ3KGsKdAtCPkTE3qojEUQpEr/iSPEVDvXYBWVPTqAwrZ7FlMfG+JuottahHxxLV1w/lQCGaQeGonP2R9JppOxidPMgdEcyK8b40Twtih3cY+wLCOR0r51OZlC+0Oi6qVHym0XHFYOaqwcBVg54rels27CuziS/NWvt67p65nW3pifYswV8S0J25qS9c13XkWLmVncyN7CRu5KZ8p4Buq6ukc1k17etq7Rnojj3raN+/mTsHd3H/yD4ennqHR+cO8fSj4zy5eIaHn5/l0aXj/Pr8MWb7h7HYL5Z6YRwrIqWsFWvYpLawUWFig9xKs8TEDo2JPXo9b+hV7JFr2CeN4ZAimjckMlYGq2jwkrPGU8LGYAWNPpGs9AigdmIw86dGsTZCx3qxiRWRcuZ5h1E5JZjCUSHkDw9iaYCcrcpktiozeN2YzyZ9NislCVQHSimaHEbmyACyRgYTP+A7x9j9KDHxfXnq8CjqRFm0ZFVzYFkTR5pbOLf1dQ6sWMyOolkkDQ3F9Jo7Dd7RXM9I5nZtAY/WlvFtSyWPNlbxqKWCp9vLeLx5Fo8asrk728rHqYls1RaQMioGRf8IZM7hqJ2C0DgFoe8ntDftZk3WYhwcZa97to6V21clJ42SYBwchXFwFNr+4Ugd/RE7+qHsF4NxhJqQVwLJ8Ewn0y+bSlkN9RlNLCvcSF1OE41pzWR6pjI3uogGbS3mYdHo+wejcvZB1T8IaV8f5I4+KPp4Y3AOpHBEBGtmBjN7UgjaXmMoGeXLZv8YTseK+Vyt4aJSwWdqNZd1Wq7otfa60q8sOr40a7lu0XErQUd7spHbqRY6U0zcMKu5lWigwsv9Rxdq35P/ZGPix/B+Dm7EDg0hqq8vigFhqAeEoezrh6TXDDQOHhid3MkZFsjScb40TQ9hu5eNEydipHwslXJFo+WiUs1nGh2X9SauGgxcMejsf7NfmU18Zda9cEtyI9Foa3hNT+Rm95KU9mzbpsy2/LRuT6U118rN7GeLgXqEdnt2ip0TN/NsnGh9QUCXPuPE2lo6Ny2mc+eq5zjxOveO7OPBqXd4eO6gLdHy6Wkefn6Gh58d48l7h5gTIGSRb4ydE41xajapLWxQmFgvS6FZYmK72sRunY49OhV75GreksZwSBHDHrGMFYEKVnnJWO0pYUOgjF4/+/kPFRMv7aUJxgsEgkHdH/cTCATbBLbMwa8EAsF6gUCw84/eP1ZgOxj7CwSCgQLbwTjmj97zukAgaPozv88moIcHkD0phmIPBUti0ti7cAXvvb6Nj/dt5f2WBnYXFLI5Jo4zFg2ds1N5siKfpxtn86BlHk+2VvHrHSV821LK10vn0OAbS9E4JfHDopAPCELpFohpgBDdgHCSRkmwDIvFNCSahBFxFPqkougXgcgxCPXAaKrDC5C5RBLdJ4RKYRGm8Tqa09chdgklurc/82NK2ZzSgPBXXshcgqgMzSBhogrTeA11+sWstCyjTJhHtoeFqN6eyF18UTj5onDww+zsS6abJ5VDPVg1LZRtviG8GyniuEjCabGED2UyPlHK+Uyt4pJGzRW97TD8yqLjsl7JFYOKL0wa+xVyj/dc093OTLFP2rA3MWVYuZWbwa3cDNrzs+wTAW7lWekqyrRlnHNTbK9ZSd0zaTO4WZTOzdJMWsvy6Kwq5uacAjoXVnCnvpquhnl0NdZyd/MKunas4es3N9G5bzP3juzm/sm9PDi7n0fnD/D446M8+Ogwjy8e4l8unmCt3sAc9xAWhohYEaNijUTPelU8G9SJrNMms0WfzD5jEod0Ro6oNRxW6HhHomFXlIKtkUrWh0hpEUrZKdKxLVLLWl8J9VMjqfOIY1mQiqaYeJYHq5nvKaJ8cigV08IpmRRC2ZQwVkeb2W7IYWdyHlvjc1gjT2GR0EjB5Ejyh4eQOTSA5ME+aN1mfNfB+KPExPflildnkjQ8nKroRN6Ys4zDzRs5tm07pzY1887COZT5y5H83SQKhvhyRqOga0423zQU8e2GMh5vmsOD9baH1sebC3jQkEVnTTZf5mVzKn8hpe5qLKMkaAeJ0Ln4I3fytK9FzpiopsDdgtIlmLjePqSNV5IyRkbyaCnmoTEUeSag7S9E5uSPvl8oKic/zAOFiPsGE9c3iJBX3YnrH4Gwjz/5HlbmSObSMnsPDQWbaKnYTV1uE1nuSdTKK9D0D0PvGozSxRfVgCCkzr6IerkjfmU6RkcPckeFYe7vh9bRnXkTQtnkHszpWDkXZDI+VSr4TK3iil7HF0YDn2s1dvF8K8FIa7yBG2YdbYl6biXo6Eg28rFeQfTQwT+6KPue/ScbEz+2j3plADInH+R9/DD29SbTzZOKoZ42TviE8E5ErI0TcWIbJxRyLqqUfKZWcVmntf+N9nDiqlHD9QTDd3KiZyrT85xof44TbXmZ3MrJoDUnzb7050Z20p9woq0g/TlO5NIxp4jWqkIbJ5ZW0bVqHp2NtXy9eTld29dw580WOvdt5m43J+53c+LRR0e5f+EQjz89xO8+Ocoare4FTqwW2zixXp3AOm1SNycSOag1cFil5rBcy9tiNbuiFGyJULI+2MaJHbE6tkZof8iYeGkv7U/s5wKB4PcCgSBM8D1mFsa82o8JvQYw2WEI5qnhHFjewFfH99P+/j46T+zmdF0tW+PieC9Rx+3qDLuAfrqxmt9tmcM/76jg6cZqDlutlI8JIWNwNPoBoUQ7emIeHoXWxbawIWmkxJ7xSp+gQtEvgriRQkSOQWgGxbAhYTmSvuHI+8VQr1qAZaKB1UmrWCydjWpAFAXeVlbrFpIyQUv0Kx5UBaSxK70RsVMo1inxzBdXkeOTgrRfKGJnfySOXmhd/Ehy9iDNcQrzRniyfkYQ+4KjOBYj4nScmHpvby5IY/lYGsNnahWfazX2so0relvG6wuT7UD8yqLjeoKBm0kmu//xbNqemug/FtCdBTm052fZhHS3gO4oSGejJJL2WWl09ix+KMygrTSLtooc2itn0VZZQPu8ku8U0B1bG+h4vZn2vZu4c3And4+/wd3T+3jwwTs8vHCYe+cP8vDjA/zmo8N8WFdH+bQA5gfFsCxKQUOclmalhdyAcFosKexJTuUts4mDOhWH1WJOyOQclSl5RyTjdaGInRFSjssVnFBo2BejoslPzAoPMcsDlKyNMrMiRMOcqeGUjg+irFs4V0wLZ3GgghZFGrstBexJK2SDLo3FETrKPERkjg1mRp/BTHi1H1N6DWDCK27/k4PxB4mJ78uH/YMLol95ET8knFXGAt6pX8PJ3Ts4s3k77yytpikpk4BfjCL51WnsCI2itSiN+3V5fNtczJOWSh5urOJ2cwV3Gkt5uKaMu3VFXCtO4/OKWhaHJJDQPwydcwjafiGI+voi7xuIaUg05X5WVK4hKJyD7BNvkkdLUbmGYB4aQ/oEFamj4jANCCPgtQlonAPQuwVjHhGFcVgUCudgNG6hqN1CULqGEe0UgXqkmkpxFSWiUmqVc1id1cje8h1YR0jQOwUh7eOBamAQEgcvlI5eqBw9MDp7onplIrmDfVk9OZAd3sEcE4k5J5FyQS7hokrJmqBALuu0XNKquaxX8YVexTWjhq8Mam4lGLlp0XPdpEU8YuiPLr5+QP/JxsTfko/+hSPVw9xpmh7E3qBIjkTFckoUR723F+clMXwsieGiWsnnWg2fazUvcOKqUW1vNr8Wr7c3Et5MMtlLOdpTE+yc6BHRPZxozUmnY1Y27flZNiHdLaDbZ6WxURJpWwLUnaVuK+zplcmhrSKfWxWzaHueE88J6Patq76DE3u5//7bPDh/iHvnD/Lg43f59YXDnKmppXz6i5xoUpjJCRDaOJFkZZ/ZyAGdksMqMcdlco5IleyPkdo5cUym4LhcQ8SQ4T9mTLy0lyb4uUAg+BeBQCAUCAQmwf+ttu2B4C/UtukG+WEeHEjSiDDmhSRyYfPmBi7AAAASSUlEQVR6bhx/kzsXDtBxahdXtq1kkySOc8kWuuZm8HhVPo9aynjYUs43W0r5dkcx99aX80FJEZtlmViHRKN28iNxZAyaASFo+4eSMlaGYVAk5kFRpI+SMWuiDrVbBH7DPBA7h5AySUdVdDGqvuEoXCNoNC8lcYKGOUF57CveisgllDjXMKqii9CNlJA4SollSAzF3iYWROVhGSbGOtFMRVQptcpqop2DEL3qifpXM5jlNoP5o/xYNz2YNwLCOCgUciJcyHuxMWhHjuATuYRP5BIuaRRc1qm4YlBzRW+D91W9kmsmLbcSTdyM13PdrOVmvI4bFi03LBo6rWZuxmvpSI3/kwam9vQkOnLT6MhN4/asTDpy0+jKfzaHtqMgncQZk7lTkk1bQRq3ulcJtxVn0FWRS3vFLG5VzKKjppTORZXcqa+mvb6a26sXcq9lBR2bl9O5s5GuvevpemcTXx/ayf0T+3hw9iAPPzjEg/PHefDRaX598V0eHHid4hkhzPWNZrVYS0OcmtVxJkJHTGSrIYW9CWm8rTNxymDkjFbFSZmK41IFR8QSDkvEnFDJ+Uiv4ZRczhuRUtYFSlgbZqAxKpn6YBOL/FTM9Yilclo4VTMiqJ4uZKFvHC1KK28kF7E3tYyN+mwapFbmBWjInRBJwiA/Jr06gJShASQN8iRr2P9oE+EPEhPfp8f+kw/yPr4U+WrYXbWEo80tHG3ZxuHmFeyuLGGa03C0/ziF2vGBfJJs4PbcLJ6uLuRpcxn3miq4u76Wh5uqeLqpkIercrhdk8OXRXnsMhWR0t+f1OFxKN0iEDoGonINpdAj3j5HvWfjYNZkrT37rB8YQcZENWljJKSOimNCr6Ho3YIxDopE5hSAqJc31rFy9AMjyJqstTUdDpGQPEGLcZSUysgCdhRtwjRZjcYtkkWBOZgHRBD7S3d0rqEonHzQ9QtC6+KLuo87mYP8aJgRznbfUI6KpJyVSLkgieUTSTSXNCqMY0Zz1ai2+5cGNdeMGm6YdXj3c/te/2/+hv0nHRN/az7oV6+w1sv7GSdGjOATmZhPZHFcUsu5rFNxWa/msl7N5zoVV/RKvjJpaE00csOi55qphxMarlu0dKSYuWnR0W612PtmnnEikfZuTnTlZ9CRm0bnd3DidnEWbQWp3JqVaudEZ3kubRX5tJbnv5BoaV9Wze3VC7jbsrybE2vo6ObEnUM7uXdiHw/OHuDhB4e4/+FR7l84ya8/fZfONzZTOjOEuX7RrBKpWSVSsTrOSMiIiWwxJPNmgpX9OhMnDQbOaFSckCk5LpVzWCzmkETMCaWSC1oVJ2WyHzsmXtr/D00pEAicuj92FQgEWwS2w+4VgS178LVAIJgnEAj+SWDrru4UvNhdXSAQCDoEtpFEvxQIBLUCWwf2f9tdrRngi3lwEPFDQyj3MXBp5yauH3uD1jN7uXViB9ffaKRFEse55AQ652bwYGUujzaV8nDzbJ5sreSbHeV0NZbylsXCimAD+r4BGFyCUPb1wzw8Cs3AMAxDokgcKSZ5eBxl0y3U+KaTPdHAhN4jyXFPYKGkkqSpBkz9YkgaraTBsAjFgEgqPFNpTlxGZWQBMS4hLFHPY760EuNQKfHDRcwJSSJlrAiVayhZUxMpE86iIqqADdZlyF7xwPBPU6kZ4cfKiYFscg9kf2Awx4RhvC+K5YJUgn7UKD5VKvhUqeCSVs5lvfIFeF83ablu0nLNqLFfH3emmOiymrmdaqHLauaGWU17yrPZtM8fjD0jtHrm0N7OT6ctP5VbeVbulGSTNHOqbbVwYbrd24sz6SzNpmtO0bMM9KJKvl42l/al1XStWsjXzfV0tNTTtXM1XXub6Hp7I18f3MG9Y3u5f/ogD947yIMPT3Dvwlm+/ext/u38AWb7xVHpLmJhiIjFwhhWxKgIGzmJ7YZk3jAmcNBg5oN4Cx/o1JxWqTmtVnBKJee8Rc3HiRo+Mmg4KpawPSSWdcFSGkI0LPTTMs9DRa23kgV+cuZ5xTLXPZJlAVJaZEm8lVLM/sxydiUVsUZmZUGogexx4SQODsDk6sPEVwaQNMiXgvGB1HtHf9fB+KPExPfp4/9uKLJevhjcwllrrOLgkibObHudUzu2cHBZDaFjpqL65XgKnf05EBtLe3kGD+pz+XZ9CQ82lPNw0xwebqnkyeZSvt1QzNeLsrleZOVS2XwWzIhjSVAyCf2jkfYOROoYjNrNNqauZ1ydeWgM5qExmIZEoxsQjso1hJQxMtLHyUkcLmJ8r2HdtdBC5H0D0fYXInHwQ9vfVoqVMkaGdmAk6VOMFPqlYZ1uZn3qKraUbiRtmpb4MRJSJ6mJc/InzskPmbM/Sic/FL3cyRrgQ8UQdzZ6CjkcJeKUKI4LMgmfysV8IpdzUSXHMGaUvWnwqlFNQ7A/jr/4xY8uqn5k/0nHxN+yD3rlFTQjR/CpUsEnCgWfaf6IE90PeD3ec0PSkWy0s6KnTr8t+b/nRM+4xa7nOHG7OIukmVPpKLCtnO/xtqIMOkuz6ZxT+NxNZSV36ns4sYA7zfW0b6ync0cDnW/aOHHn4A7uHtvL/dMHuP/eAR58cIJ7F87wzaf7+e3Z/VT5S6h0j2VBSCyLw2JYEa0mbOREthmS2GNI4KDBxAcWM+/rVJxSqTmlUnBaJeO8WcVHCWo+0mvYFRn1Q8fES3tpgv0CWybgdwLbgbZdIBAMf+77EwW27ut/FthGFVV+x8+oEggE97p/xmnB/2C+p9TVHXV/H9T9fUidEMOJNcu5uH8rFw9s5eK+Jj5oXsiamCgOmw1cLUvmxkIr7esKaFtbTvu6cjqbS/iyvoRNCh3zfbQkDAlH/NpMYnrNIHFcHJG9Z6IaFEbaZBX6QUJyJqjIGa8ie6qRMa8NpTQ0m10FG5ENi8Y0KAbzSCmLFLOJcPAja5Ie0zgFa5KWYpmsZnZsEcVh2cQ5hyLp649pZBhpU2QYhkUjdw2jJCCFWFdfZocmUReWQlY/H1ZMDWPt9CA2zvDiDT8fDoX6ciQinBMx0ahGjOCcTMo5mZT3FHF8oJJwXi2z+wWVlE81Ci7qVHymV3FRq+RTjZRLBiVXLRq+iNdyUSvjM6OKi0Y1lxMMXEk0ciXRyOUkI1+kJ/JFeiJfZiRxJTWeLzOS+DwjgUvp8VzNTsY0bRJf5lq5nJvC5dwUruRZ7X6jYhZXS3L5vCyXq9VFXFtQxpX5ZVxdNJsrS6u5tKqGy02LuLp1BV+8vpprb6zn2t4tXH9nNzcO7eLG0be4dvwAd97fzePT+1hvzKVOaKXKP445ASHUhoUTMHQkK+MkbFarOJhg5EySgZM6MUdUEo5rZZw0yDhvVfFBspwTSgl7hOGs9gymziuC8ilhFE6KpGSKiBo/FbUBCqp9RFTMELI0WE6zPInXE/LZnjyL9fpMZgfISB8fgnmwN2qXmaicZjDuVwPIGBnCAu8o1vh85xSOHyUmvk//O8H/a+/ug6yq6ziOv1FEIzUg1MEVn0YjFZ+yyRR5EFbSBvcJWR5EHgIESQWKyB4U8qE0w3KCUdNqsiiaFEvUMpQJK6lGVpQYdNL4Ix3Hh9FS6WmUb3/8zm3Pvay0d3fv3TXer5nfcO89Z/d37rn7+R3u75zf7xBj9zs16g84MxaeNiW+v+SGeOC2b8cDt98edy9fHmNO/nBccvyomLzPkLj5lLPjD/MuiqeWzo3tyy+N7SsWxTMrF8efbv1sPHvLoti+4rLYds3saFk0M1quWBz3Xrworhs2KWbUjI3G/iOjfsDIaK6pjcaDRkTdgGEx/pBRMfnwsdF86JiYMGh0zDmuKRoGDo9ZQxpi6lHnxeTDx8aQA46IiYfVRsPA4VHXf1iMG3BmfOID9THnuKaoGzAsZhxzfsw4pi7mnDgxxh08Oi49bX4sHv3puH72DXHX1ati0Zi5UX9kbdQOOD2aBo2I8QefEfX9zoipAz8Sc/oNiRtP+GisHl4bd48aHffXjol1550bGxrq45GG+niksSEmHnt0PNrcEH17793t/3nqQeX/OhPvltJ3773j1+NbjxOPNjfGxubG+H1zYzw2cXy0TGmOlinNsWnSBbFpUmM8fuEFsWX6xPjjjEnRMrkpWqbu/jixdf6s2DJvZjxxSTpGbJ4/M7ZcNjumnTI0ti5Ix4gnFsz57/HiyYUXx9bPLYwtVyxIx4llS2Lz1Uti87VXxJbrr4wnly9rPU7c+Y3YunplbPvJ7bFtzZ3x9Nofx1P3r46nf3FPPPXQffHcb1bHi+vXxB0XLYqv1s6JZcPPj6UjxqTjxFH548TU2DBrSjw8OR0n1k1qivVTG2Pj3Ob47eymeHhCQ5xdc2i1MyFVXQ09oFGyWEpKDd3HTFh6YjETFktx6c5MSPQi/REeaLH0kFJD+rvsLmbC0tOKmbBYikt3Z0KSJEmSJEmSJEmSJEmSJEmSpHeVL5HmDH2D/z2VUTkmkqZR+hvpDlh7lSw/CdhAmkLpOWBpF27bV4Ans7qfB35Iun1t3mBgLfA68BLwTaB3yTqfBLZn2/gYMLyd9QNcBTwD/DX7/T8HTi5Zp5L7IO8e0p3HRudeGwVsIk1z9Swwr+Rn+gArgZdJ+/Fedt2Hu7MUeIu0f9/I/l2VW16t994RZsJMmInq1LsnZ6In5QHMhFSWz5Am2D8e2Bf4MumP9J0m0y/HOaTGcSa7Noz7k+YmvZYUwKGkuUzzE/13ZtuuA04lNXQHkgL5eG55L1LD+V3SjQcGA08AX8+tMwF4DTgr+z3zSQFt77Q5xwLvyx73Bj5FujtYYdRwpfdBwTTSLXrfprVhPILUIM3Ltm0EqRGvz/3cSmAzqTHcH/ge0FJGvUtJB8a2VOu9d4SZMBNmopiZqEwmekoewExIZWvrdq4v8c63c+2IkezaME6nY7ea7ei2nZxtQ6GxGgn8C+ifW6eO1PDtkz1fDywv+T0twBc6UP++wMJsGwp3D6vGPjiMdLexwyjuWbiK1KuQdxOwLre9O4BxueXvB/4NDGtn3btrGKv9+ZfDTLQyE2aiWvXu6ZnorjyAmZDKdiApLKeXvP4g8LUurKethvEm0umqvDOy9favwLYtIQWt4HJgW8k6g7I6h2bPXyX1jOTdBtxVRr0fJ/VO7CSdproxt6wa++BBYFb2ON8wrgFuKVl3MvBK9rhwIDmkZJ2nKW6sdmcp6UDzIun05irgyGxZtT//9jITxcyEmTATxbo6E92dh8L6ZkIqQ+Hb5pCS11cD3+rCetpqGO8AflSy3gez9Q7t4m2rJQX0nNxrXwQ2lqy3X1bnmdnzt4CPlaxzPfDLMusH6Ec67TQ+91ql98F8UkNSsBM4O3v8EOn6v7xzST0HkE5Hvk3qYcj7HfD5dtQN6ZTa4OzxIOAHpJ6DvlT38y+HmShmJsyEmShWqUx0Rx7ATEgdsif0LIwjfbuvK3l9dz0LhQEIXdHblteLdP3YidnzSu6Do0nXjg3OvVZOz8JJdL5noVQf4B+kA1VP7VkwE8XMhJkwE8UqmYlq5gHMhNQpbV0/9CKVv7ZtGh27tqmcbbuQ1CjWtrFsBPBP2r62rU/2fD27hnATHbveE9IgjB1AU/a8kvtgOun9vUQaHf0yqaF5DbgVuJLyr20bSLoesL3XtpXqA/yd1MNTjc+/o8xEKzNhJqpVr5mobh7ATEidspg0eOAE4D2kUcl/oWtGsO5FCthYUsPYN3vei/Tt8XngGtIpsaGkkbT50bWd2bZLSY3AO4W4F2nk8HeybTmcNPo6P7r6AlLvwlmkASOXkKbYae+MA5cDB2ePDyKdUnqV1m/rldwH+5FOceXLTtKI8X7Z+30TmJu9t+Gk/ZUfXb2CNBhmMHAAaXR1aWO6OxNoHQxzCHAnqbF7L5X//DvDTJgJM1HMTFQmE92ZBzATUqctA14gBeVXdN0citNJYXw7K4XHI7LlQ0mjb3eQTiNd2YXbtpP0Lfh1iueXzDeUg4H7smUvAzfTOrK6YD4pnDtI83ue1c76Ic0d+kL2+58Hfgp8qGSdSu6DUvnpiSB9Di1Z3X8mNZJ5fUhznr5C2ndraf9/lAB+RuoJeJPUoK0inTIsqOZ7L1el6jUTZsJMFNuTM9HT8gBmQpIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkST3bfwBkMH+IDNy7uQAAAABJRU5ErkJggg==\">"
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "<matplotlib.text.Text at 0x7f0668c97400>"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Example of usage of the automatic alignment:\n",
- "import scipy.ndimage\n",
- "rotated = scipy.ndimage.rotate(image, 20, reshape=False)\n",
- "sa = sift.LinearAlign(image, devicetype=devicetype)\n",
- "fig,ax = subplots(1, 3, figsize=(9,3))\n",
- "ax[0].imshow(image)\n",
- "ax[0].set_title(\"original\")\n",
- "ax[1].imshow(rotated)\n",
- "ax[1].set_title(\"rotated\")\n",
- "ax[2].imshow(sa.align(rotated))\n",
- "ax[2].set_title(\"aligned\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### References\n",
- "\n",
- "- David G. Lowe, Distinctive image features from scale-invariant keypoints, International Journal of Computer Vision, vol. 60, no 2, 2004, p. 91–110 - \"http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf\"\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Total execution time: 42.012s\n"
- ]
- }
- ],
- "source": [
- "print(\"Total execution time: %.3fs\" % (time.time() - start_time))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.4.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 1
-}
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 234e4fa..23efd15 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -130,7 +130,7 @@ exclude_patterns = []
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
-# add_module_names = True
+add_module_names = False
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
diff --git a/doc/source/developers.rst b/doc/source/developers.rst
deleted file mode 100644
index e1122b6..0000000
--- a/doc/source/developers.rst
+++ /dev/null
@@ -1,98 +0,0 @@
-Developers documentation
-========================
-
-Development process
--------------------
-
-silx follows a peer-review development process based on the `github flow<https://guides.github.com/introduction/flow/>`_
-(See `scikit-image contribution documentation<http://scikit-image.org/docs/stable/contribute.html#development-process>`_).
-
-General guidelines
-------------------
-
-See `scikit-image guidelines<http://scikit-image.org/docs/stable/contribute.html#guidelines>`_.
-
-Coding convention
------------------
-
-silx follows `PEP 8<https://www.python.org/dev/peps/pep-0008/>`_ keeping in mind its recommendation:
-
-.. container::
-
- A style guide is about consistency.
- Consistency with this style guide is important.
- Consistency within a project is more important.
- Consistency within one module or function is the most important.
-
- However, know when to be inconsistent -- sometimes style guide recommendations just aren't applicable.
- When in doubt, use your best judgment.
- Look at other examples and decide what looks best.
- And don't hesitate to ask!
-
- In particular: do not break backwards compatibility just to comply with this PEP!
-
-Therefore in GUI with inheritance from Qt, camelCase will be the preferred coding style.
-External modules integrated in the library will follow the coding style of the external module.
-
-- Whenever possible refer to array as row, column not x, y
- (See `scikit-image coordinate conventions<http://scikit-image.org/docs/stable/user_guide/numpy_images.html#numpy-images-coordinate-conventions>`_)
- This might not be possible in the GUI part where coordinate convention is x, y.
-
-``silx.gui`` coding convention
-------------------------------
-
-This package mostly contains objects inherited from Qt, thus it follows Qt style.
-But the way to describe a ``QObject`` in Python (with getter, setter, properties) does not allow to respect it.
-Here are some recommendations:
-
-- Follow the Qt style as much as possible
-
- - That is particularly important for the public API
- - CamelCase for all the package
- - For widget constructor
-
- - ``parent=None`` as first argument, and no other mandatory arguments
- (it is needed to promote widget with Qt designer).
- - Avoid as much as possible other arguments
-
- - Avoid Python properties or attributes, use ``value()`` instead of ``value``
- - Prefer prefixing getter and setter with ``get``, ``is``, ``set``...
- (it avoid hiding getter when we also define a Qt property).
- - Lower case or camel case but no ``_`` for arguments
- (lower case is inherited from matplotlib conventions)
- - Signals can be prefixed by ``sig``
- (``sig`` allows to identify and list signals easily)
- - Manipulate as much as possible Qt style objects
-
-- Do not use right-click for interaction purpose, keep it for context menu.
-
-
-How-to add icons
-================
-
-silx icons are stored in ``silx/resources/gui/icons/``.
-Icons should be provided as both a SVG file and a 32x32 PNG file.
-
-Animated icons should be provided as both a MNG file and a folder with the same name containing a serie of PNG files with number as filename: 00.png, 01.png, ...
-
-For maximum compatibility, here are a few recommendation to produce SVG icons:
-
-- It should be SVG 1.1.
-- It should not contain raster images (even embedded).
- This makes files smaller and does not rely on a decompression library (it occured that libjpeg was not available)
-- The text should use a free font.
-- The text should be converted to paths.
- As its font might not be available everywhere.
-
-Steps to create an icon:
-
-- Create an icon with `inkscape <https://inkscape.org/fr/>`_ (or another authoring tool), save it as SVG and export it as a 32x32 PNG file.
-- Then, optimize the SVG file with `scour <https://github.com/scour-project/scour>`_::
-
- scour -i input.svg -o output.svg --enable-viewboxing --enable-id-stripping --enable-comment-stripping --shorten-ids --indent=none --remove-metadata
-
- .. warning:: By default all icons are copyrighted ESRF and available under the MIT license.
- If an icon has a different copyright/license, then provide the copyright/license in the SVG file and optimize it without the ``--remove-metadata`` option.
- Also update the ``copyright`` file at the root of the project.
-- Update the icons gallery in the documentation by running the ``doc/source/modules/gui/update_icons_rst.py`` script.
-
diff --git a/doc/source/ext/snapshotqt_directive.py b/doc/source/ext/snapshotqt_directive.py
deleted file mode 100644
index 1cd8dbe..0000000
--- a/doc/source/ext/snapshotqt_directive.py
+++ /dev/null
@@ -1,257 +0,0 @@
-"""RST directive to include snapshot of a Qt application in Sphinx doc.
-
-Configuration variable in conf.py:
-
-- snapshotqt_image_type: image file extension (default 'png').
-- snapshotqt_script_dir: relative path of the root directory for scripts from
- the documentation source directory (i.e., the directory of conf.py)
- (default: '..').
-"""
-
-from __future__ import absolute_import
-
-import logging
-import os
-import subprocess
-import sys
-
-from docutils.parsers.rst.directives.images import Figure
-
-
-logging.basicConfig()
-_logger = logging.getLogger(__name__)
-
-# TODO:
-# - Create image in build directory
-# - Check if it is needed to patch block_text?
-
-# RST directive ###############################################################
-
-class SnapshotQtDirective(Figure):
- """Figure of a Qt application snapshot.
-
- Directive Type: "snapshotqt"
- Doctree Elements: As for figure
- Directive Arguments: One or more, required (script URI + script arguments).
- Directive Options: Possible.
- Directive Content: Interpreted as the figure caption and optional legend.
-
- A "snapshotqt" is a rst `figure
- <http://docutils.sourceforge.net/docs/ref/rst/directives.html#figure>`_
- that is generated from a Python script that uses Qt.
-
- The path of the script to take a snapshot is relative to
- the path given in conf.py 'snapshotqt_script_dir' value.
-
- ::
-
- .. snapshotqt: ../examples/demo.py
- :align: center
- :height: 5cm
-
- Caption of the figure.
- """
-
- # TODO this should be configured in conf.py
- IMAGE_RELATIVE_DIR = os.path.join('images')
- """The path where to store images relative to doc directory."""
-
- def run(self):
- # Run script stored in arguments and replace by snapshot filename
-
- env = self.state.document.settings.env
-
- # Create an image filename from arguments
- image_ext = env.config.snapshotqt_image_type.lower()
- image_name = '_'.join(self.arguments) + '.' + image_ext
- image_name = image_name.replace('./\\', '_')
- image_name = ''.join([c for c in image_name
- if c.isalnum() or c in '_-.'])
- image_name = os.path.join(self.IMAGE_RELATIVE_DIR, image_name)
-
- # Change path to absolute path to run the script
- script_dir = os.path.join(env.srcdir, env.config.snapshotqt_script_dir)
- script_cmd = self.arguments[:]
- script_cmd[0] = os.path.join(script_dir, script_cmd[0])
-
- # Run snapshot
- snapshot_tool = os.path.abspath(__file__)
- _logger.info('Running script: %s', script_cmd)
- _logger.info('Saving snapshot to: %s', image_name)
- abs_image_name = os.path.join(env.srcdir, image_name)
- cmd = [sys.executable, snapshot_tool, '--output', abs_image_name]
- cmd += script_cmd
- subprocess.check_call(cmd)
-
- # Use created image as in Figure
- self.arguments = [image_name]
-
- return super(SnapshotQtDirective, self).run()
-
-
-def setup(app):
- app.add_config_value('snapshotqt_image_type', 'png', 'env')
- app.add_config_value('snapshotqt_script_dir', '..', 'env')
-
- app.add_directive('snapshotqt', SnapshotQtDirective)
-
- return {'version': '0.1'}
-
-
-# Qt monkey-patch #############################################################
-
-def monkeyPatchQApplication(filename, qt=None):
- """Monkey-patch QApplication to take a snapshot and close the application.
-
- :param str filename: The image filename where to save the snapshot.
- :param str qt: The Qt binding to patch.
- This MUST be the same as the one used by the script
- for which to take a snapshot.
- In: 'PyQt4', 'PyQt5', 'PySide' or None (the default).
- If None, it will try to use PyQt4, then PySide and
- finally PyQt4.
- """
-
- # Probe Qt binding
- if qt is None:
- try:
- import PyQt4.QtCore # noqa
- qt = 'PyQt4'
- except ImportError:
- try:
- import PySide.QtCore # noqa
- qt = 'PySide'
- except ImportError:
- try:
- import PyQt5.QtCore # noqa
- qt = 'PyQt5'
- except ImportError:
- raise RuntimeError('Cannot find any supported Qt binding.')
-
- if qt == 'PyQt4':
- from PyQt4.QtGui import QApplication, QPixmap
- from PyQt4.QtCore import QTimer
- import PyQt4.QtGui as _QApplicationPackage
-
- def grabWindow(winID):
- return QPixmap.grabWindow(winID)
-
- elif qt == 'PyQt5':
- from PyQt5.QtGui import QPixmap
- from PyQt5.QtWidgets import QApplication
- from PyQt5.QtCore import QTimer
- import PyQt5.QtWidgets as _QApplicationPackage
-
- def grabWindow(winID):
- screen = QApplication.primaryScreen()
- return screen.grabWindow(winID)
-
- elif qt == 'PySide':
- from PySide.QtGui import QApplication, QPixmap
- from PySide.QtCore import QTimer
- import PySide.QtGui as _QApplicationPackage
-
- def grabWindow(winID):
- return QPixmap.grabWindow(winID)
-
- else:
- raise ValueError('Unsupported Qt binding: %s' % qt)
-
- _logger.info('Using Qt bindings: %s', qt)
-
- class _QApplication(QApplication):
-
- _TIMEOUT = 1000.
- _FILENAME = filename
-
- def _grabActiveWindowAndClose(self):
- activeWindow = QApplication.activeWindow()
- if activeWindow is not None:
- if activeWindow.isVisible():
- pixmap = grabWindow(activeWindow.winId())
- saveOK = pixmap.save(self._FILENAME)
- if not saveOK:
- _logger.error(
- 'Cannot save snapshot to %s', self._FILENAME)
- else:
- _logger.error('activeWindow is not visible.')
- self.quit()
- else:
- self._count -= 1
- if self._count > 0:
- # Only restart a timer if everything is OK
- QTimer.singleShot(self._TIMEOUT,
- self._grabActiveWindowAndClose)
- else:
- raise RuntimeError(
- 'Aborted: It took too long to have an active window.')
-
- def exec_(self):
- self._count = 10
- QTimer.singleShot(self._TIMEOUT, self._grabActiveWindowAndClose)
-
- return super(_QApplication, self).exec_()
-
- _QApplicationPackage.QApplication = _QApplication
-
-
-# main ########################################################################
-
-if __name__ == '__main__':
- import argparse
- import runpy
-
- # Parse argv
-
- parser = argparse.ArgumentParser(
- description=__doc__,
- epilog="""Arguments provided after the script or module name are passed
- to the script or module.""")
- parser.add_argument(
- '-o', '--output', nargs=1, type=str,
- default='snapshot.png',
- help='Image filename of the snapshot (default: snapshot.png).')
- parser.add_argument(
- '--bindings', nargs='?',
- choices=('PySide', 'PyQt4', 'PyQt5', 'auto'),
- default='auto',
- help="""Qt bindings used by the script/module.
- If 'auto' (the default), it is probed from available python modules.
- """)
- parser.add_argument(
- '-m', '--module', action='store_true',
- help='Run the corresponding module as a script.')
- parser.add_argument(
- 'script_or_module', nargs=1, type=str,
- help='Python script to run for the snapshot.')
- args, unknown = parser.parse_known_args()
-
- script_or_module = args.script_or_module[0]
-
- # arguments provided after the script or module
- extra_args = sys.argv[sys.argv.index(script_or_module) + 1:]
-
- if unknown != extra_args:
- parser.print_usage()
- _logger.error(
- '%s: incorrect arguments', os.path.basename(sys.argv[0]))
- sys.exit(1)
-
- # Monkey-patch Qt
- monkeyPatchQApplication(args.output[0],
- args.bindings if args.bindings != 'auto' else None)
-
- # Update sys.argv and sys.path
- sys.argv = [script_or_module] + extra_args
- sys.path.insert(0, os.path.abspath(os.path.dirname(script_or_module)))
-
- if args.module:
- _logger.info('Running module: %s', ' '.join(sys.argv))
- runpy.run_module(script_or_module, run_name='__main__')
-
- else:
- with open(script_or_module) as f:
- code = f.read()
-
- _logger.info('Running script: %s', ' '.join(sys.argv))
- exec(code)
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 83629c2..1c4ad72 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -1,7 +1,7 @@
silx |version|
==============
-The silx project aims at providing a collection of Python packages to support the
+The silx project aims to provide a collection of Python packages to support the
development of data assessment, reduction and analysis at synchrotron radiation
facilities.
It intends to provide reading/writing tools for different file formats, data
@@ -44,6 +44,7 @@ The current version (v\ |version|) caters for:
changelog.rst
license.rst
virtualenv.rst
+ troubleshooting.rst
:doc:`overview`
Releases, repository, issue tracker, mailing list, ...
@@ -72,6 +73,9 @@ The current version (v\ |version|) caters for:
:doc:`license`
License and copyright information
+:doc:`troubleshooting`
+ When things do not work as expected
+
Indices
=======
diff --git a/doc/source/install.rst b/doc/source/install.rst
index 93b9df0..7941a7b 100644
--- a/doc/source/install.rst
+++ b/doc/source/install.rst
@@ -2,38 +2,71 @@
Installation steps
==================
-*silx* supports most operating systems, different version of the Python
+*silx* supports most operating systems and different versions of the Python
programming language.
-While `numpy <http://www.numpy.org/>`_ is the only mandatory dependency,
-graphical widgets require Qt, management of data files requires
-`h5py <http://docs.h5py.org/en/latest/build.html>`_ and
-`fabio <https://github.com/silx-kit/fabio>`_, and high performance data-analysis
-code on GPU requires `pyopencl <https://mathema.tician.de/software/pyopencl/>`_.
-This table summarized the the support matrix of silx v0.7:
+This table summarizes the support matrix of silx:
+------------+--------------+---------------------+
| System | Python vers. | Qt and its bindings |
+------------+--------------+---------------------+
-| `Windows`_ | 3.5, 3.6 | PyQt5.6+ |
+| `Windows`_ | 3.5, 3.6-3.7 | PyQt5.6+, PySide2 |
+------------+--------------+---------------------+
-| `MacOS`_ | 2.7, 3.5-3.6 | PyQt5.6+ |
+| `MacOS`_ | 2.7, 3.5-3.7 | PyQt5.6+, PySide2 |
+------------+--------------+---------------------+
-| `Linux`_ | 2.7, 3.4-3.6 | PyQt4.8+, PyQt5.3+ |
+| `Linux`_ | 2.7, 3.4-3.7 | PyQt5.3+, PySide2 |
+------------+--------------+---------------------+
-For all platform, you can install *silx* from the source, see `Installing from source`_.
+For the description of *silx* dependencies, see the Dependencies_ section.
+
+For all platforms, you can install *silx* with pip, see `Installing with pip`_.
To install *silx* in a `Virtual Environment`_, there is short version here-after
-and a `longer description :ref:`silx-venv`.
+and a longer description: :ref:`silx-venv`.
+
+You can also install *silx* from the source, see `Installing from source`_.
+
+
+Installing with pip
+-------------------
+
+To install silx (and all its dependencies_), run:
+
+.. code-block:: bash
+
+ pip install silx[full]
+
+To install silx with a minimal set of dependencies, run:
+
+.. code-block:: bash
+
+ pip install silx
+
+.. note::
+
+ Use pip's ``--user`` option to install locally for the current user.
+
+.. note::
+
+ - If numpy is not yet installed, you might need to install it first.
+ - Replace the ``pip`` command with ``pip3`` to install *silx* or any other library for Python 3.
+
Dependencies
------------
+.. _dependencies:
+
+The mandatory dependencies are:
+
+- `numpy <http://www.numpy.org/>`_
+- `h5py <http://docs.h5py.org/en/latest/build.html>`_
+- `fabio <https://github.com/silx-kit/fabio>`_
+
The GUI widgets depend on the following extra packages:
-* A Qt binding: either `PyQt5, PyQt4 <https://riverbankcomputing.com/software/pyqt/intro>`_,
- `PySide <https://pypi.python.org/pypi/PySide/>`_, or `PySide2 <https://wiki.qt.io/PySide2>`_
+* A Qt binding: either `PyQt5 <https://riverbankcomputing.com/software/pyqt/intro>`_,
+ or `PySide2 <https://wiki.qt.io/Qt_for_Python>`_
* `matplotlib <http://matplotlib.org/>`_
* `PyOpenGL <http://pyopengl.sourceforge.net/>`_
* `qt_console <https://pypi.python.org/pypi/qtconsole>`_
@@ -45,13 +78,13 @@ Tools for reading and writing files depend on the following packages:
* `h5py <http://docs.h5py.org/en/latest/build.html>`_ for HDF5 files
* `fabio <https://github.com/silx-kit/fabio>`_ for multiple image formats
-*silx.opencl* further depends on OpenCL and the following packages to :
+*silx.opencl* further depends on OpenCL and the following packages too :
* `pyopencl <https://mathema.tician.de/software/pyopencl/>`_
* `Mako <http://www.makotemplates.org/>`_
The complete list of dependencies with the minimal version is described in the
-`requirement.txt <https://github.com/silx-kit/silx/blob/0.7/requirements.txt>`_
+`requirement.txt <https://github.com/silx-kit/silx/blob/0.8/requirements.txt>`_
at the top level of the source package.
Build dependencies
@@ -64,63 +97,36 @@ On Windows it is recommended to use Python 3.5, because with previous versions
of Python, it might be difficult to compile extensions (i.e. binary modules).
This project uses Cython (version > 0.21) to generate C files.
-Cython is now mandatory to build *silx* from the development branch and is only
-needed when compiling binary modules.
+Cython is mandatory to build *silx* from the development branch.
The complete list of dependencies for building the package, including its
documentation, is described in the
-`requirement-dev.txt <https://github.com/silx-kit/silx/blob/0.7/requirements-dev.txt>`_
+`requirement-dev.txt <https://github.com/silx-kit/silx/blob/0.8/requirements-dev.txt>`_
at the top level of the source package.
-
Linux
-----
-If NumPy is not installed on your system, you need to install it first,
-preferably with the package manager of your system.
-If you cannot use the package manager of your system (which requires the root
-access), please refer to the `Virtual Environment`_ procedure.
-
-On Linux, you can install *silx* in your home directory
-
-.. code-block:: bash
-
- pip install silx --user
-
-.. note::
-
- Replace the ``pip`` command with ``pip3`` to install *silx* or any other library for Python 3.
-
-.. note::
-
- This installs *silx* without the optional dependencies.
-
-To install *silx* on Debian or Ubuntu systems, see `Installing a Debian package`_.
-This method requires **sudo** privileges, but has the benefit of installing
-dependencies in a simple way.
-
-`CentOS 7 RPM packages <http://pubrepo.maxiv.lu.se/rpm/el7/x86_64/>`_ and
-`Fedora 23 rpm packages <http://pubrepo.maxiv.lu.se/rpm/fc23/x86_64/>`_
-are provided by the Max IV institute at Lund, Sweden.
-
-An `Arch Linux (AUR) package <https://aur.archlinux.org/packages/python-silx>`_
-is provided by Leonid Bloch.
+Packages are available for a few distributions:
-You can also choose to compile and install *silx* from it's sources:
-see `Installing from source`_.
+- Debian 8: see `Installing a Debian package`_.
+- `CentOS 7 RPM packages <http://pubrepo.maxiv.lu.se/rpm/el7/x86_64/>`_ provided by the Max IV institute at Lund, Sweden.
+- `Fedora 23 rpm packages <http://pubrepo.maxiv.lu.se/rpm/fc23/x86_64/>`_ provided by the Max IV institute at Lund, Sweden.
+- `Arch Linux (AUR) package <https://aur.archlinux.org/packages/python-silx>`_ provided by Leonid Bloch.
-.. note::
+You can also follow one of those installation procedures:
- The Debian packages `python-silx` and `python3-silx` will not install executables
- (`silx view`, `silx convert` ...). Please install the silx package.
+- `Installing with pip`_
+- Installing in a `Virtual Environment`_
+- `Installing from source`_
Installing a Debian package
+++++++++++++++++++++++++++
Debian 8 (Jessie) packages are available on http://www.silx.org/pub/debian/ for amd64 computers.
-To install it, you need to download this file
+To install it, you need to download this file :
.. code-block:: bash
@@ -136,6 +142,9 @@ Then run ``apt-get update`` and ``apt-get install python-silx``
sudo apt-get update
sudo apt-get install python-silx python3-silx silx
+The `python-silx` and `python3-silx` packages provide the library,
+while the `silx` package provides the executable (`silx view`, `silx convert` ...).
+
.. note::
The packages are built automatically, hence not signed.
@@ -147,88 +156,42 @@ If the Pin-number of silx.org is too low compared to other sources:
download http://www.silx.org/pub/debian/silx.pref into /etc/apt/preferences.d
and start the update/install procedure again.
-Virtual Environment
--------------------
-
-Virtual environments are self-contained directory tree that contains a Python
-installation for a particular version of Python, plus a number of additional
-packages.
-They do require administrator privileges, nor *root* access.
-
-To create a virtual environment, decide upon a directory where you want to place
-it (for example *myenv*), and run the *venv* module as a script with the directory path:
-
-.. code-block:: bash
-
- python3 -m venv myenv
-
-This will create the *myenv* directory if it doesn’t exist, and also create
-directories inside it containing a copy of the Python interpreter, the standard
-library, and various supporting files.
-
-Once you’ve created a virtual environment, you may activate it.
-
-On Windows, run:
-
-.. code-block:: bash
-
- myenv\\Scripts\\activate.bat
-
-On Unix or MacOS, run:
-
-.. code-block:: bash
-
- source myenv/bin/activate
-
-You can install, upgrade, and remove packages using a program called *pip* within
-your virtual environment.
-
-.. code-block:: bash
-
- pip install numpy
- pip install -r https://github.com/silx-kit/silx/raw/0.7/requirements.txt
- pip install silx
Windows
-------
-The simple way of installing the *silx* library on Windows is to type the following
-commands in a command prompt:
+The simplest way of installing *silx* on Windows is to install it with ``pip``, see `Installing with pip`_::
-.. code-block:: bash
+ pip install silx[full]
- pip install silx
-
-.. note::
-
- This installs *silx* without the optional dependencies.
- Instructions on how to install dependencies are given in the
- `Installing dependencies`_ section.
-
-This assumes you have Python and pip installed and configured. If you don't,
-read the following sections.
+This assumes you have Python and pip installed and configured.
+If you don't, read the following sections.
+
+Alternatively, you can check:
+- Installing in a `Virtual Environment`_
+- `Installing from source`_
Installing Python
+++++++++++++++++
Download and install Python from `python.org <https://www.python.org/downloads/>`_.
-We recommend that you install the 64bits version of Python, which is not the
+We recommend that you install the 64bit version of Python, which is not the
default version suggested on the Python website.
-The 32bits version is limited to 2 GB of memory, and also we don't provide a
+The 32bit version has limited memory, and also we don't provide a
binary wheel for it.
This means that you would have to install *silx* from its sources, which requires
you to install a C compiler first.
-We also encourage you to use Python 3.5 or newer, former versions are no more
+We also encourage you to use Python 3.5 or newer as former versions are no longer
officially supported.
Configure Python as explained on
`docs.python.org <https://docs.python.org/3/using/windows.html#configuring-python>`_
to add the python installation directory to your PATH environment variable.
-Alternative Scientific Python stacks exists, such as
+Alternative Scientific Python stacks exists such as
`WinPython <http://winpython.github.io/>`_ or `Anaconda <https://www.anaconda.com/download/#windows>`_.
They all offer most of the scientific packages already installed which makes the
installation of dependencies much easier.
@@ -241,49 +204,63 @@ directory, the same way as described for Python.
The pip installation directory will likely be ``C:\Python35\Scripts\``.
-Then you will be able to use all pip commands listed in following in a command
+Then you will be able to use all the pip commands listed below in a command
prompt.
-Installing dependencies
-+++++++++++++++++++++++
+MacOS
+-----
-All dependencies may be simply installed with pip::
+While Apple ships Python 2.7 by default on their operating systems, we recommend
+using Python 3.5 or newer to ease the installation of the Qt library.
-.. code-block:: bash
+Then, install *silx* with ``pip``, see `Installing with pip`_::
- pip install -r https://github.com/silx-kit/silx/raw/0.7/requirements.txt
+ pip install silx[full]
+This should work without issues, as binary wheels of *silx* are provided on
+PyPi.
-Installing *silx*
-+++++++++++++++++
-Provided numpy is installed, you can install *silx* with::
+Virtual Environment
+-------------------
-.. code-block:: bash
+Virtual environments are self-contained directory trees that contain a Python
+installation for a particular version of Python, plus a number of additional
+packages.
+They do not require administrator privileges, nor *root* access.
- pip install silx
+To create a virtual environment, decide upon a directory where you want to place
+it (for example *myenv*), and run the *venv* module as a script with the directory path:
+.. code-block:: bash
-MacOS
------
+ python3 -m venv myenv
-While Apple ships Python 2.7 by default on their operating systems, we recommand
-using Python 3.5 or newer to ease the installation of the Qt library.
-This can simply be performed by:
+This will create the *myenv* directory if it doesn’t exist, and also create
+directories inside it containing a copy of the Python interpreter, the standard
+library, and various supporting files.
-.. code-block:: bash
+Once you’ve created a virtual environment, you may activate it.
- pip install -r https://github.com/silx-kit/silx/raw/0.7/requirements.txt
+On Windows, run:
-Then install *silx* with:
+.. code-block:: bash
-.. code-block:: bash
+ myenv\\Scripts\\activate.bat
- pip install silx
+On Unix or MacOS, run:
-This should work without issues, as binary wheels of *silx* are provided on
-PyPi.
+.. code-block:: bash
+
+ source myenv/bin/activate
+
+You can install, upgrade, and remove packages using a program called *pip* within
+your virtual environment (see `Installing with pip`_).
+
+.. code-block:: bash
+
+ pip install silx[full]
Installing from source
@@ -294,7 +271,7 @@ installed using:
.. code-block:: bash
- pip install -r https://github.com/silx-kit/silx/raw/0.7/requirements-dev.txt
+ pip install -r https://github.com/silx-kit/silx/raw/0.8/requirements-dev.txt
Building from source
@@ -326,8 +303,8 @@ There are specific issues related to MacOSX. If you get this error::
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1335: ordinal not in range(128)
-This is related to the two environment variable LC_ALL and LANG not defined (or wrongly defined to UTF-8).
-To set the environment variable, type on the command line:
+This is related to the two environment variables LC_ALL and LANG not being defined (or wrongly defined to UTF-8).
+To set the environment variables, type on the command line:
.. code-block:: bash
@@ -345,18 +322,12 @@ In case you want more control over the build procedure, the build command is:
There are few advanced options to ``setup.py build``:
-* ``--no-cython``: Prevent Cython (even if installed) to re-generate the C source code.
+* ``--no-cython``: Prevent Cython (even if installed) from re-generating the C source code.
Use the one provided by the development team.
* ``--no-openmp``: Recompiles the Cython code without OpenMP support (default for MacOSX).
* ``--openmp``: Recompiles the Cython code with OpenMP support (default for Windows and Linux).
-Run the test suite of silx (may take a couple of minutes):
-
-.. code-block:: bash
-
- python run_tests.py
-
-Package the built into a wheel and install it:
+Package the build into a wheel and install it:
.. code-block:: bash
@@ -373,7 +344,7 @@ To build the documentation, using `Sphinx <http://www.sphinx-doc.org/>`_:
Testing
+++++++
-To run the tests of an installed version of *silx*, from the python interpreter, run:
+To run the tests of an installed version of *silx*, run the following on the python interpreter:
.. code-block:: python
diff --git a/doc/source/modules/gui/dialog/datasetdialog.rst b/doc/source/modules/gui/dialog/datasetdialog.rst
new file mode 100644
index 0000000..4a8d43c
--- /dev/null
+++ b/doc/source/modules/gui/dialog/datasetdialog.rst
@@ -0,0 +1,7 @@
+
+.. currentmodule:: silx.gui.dialog
+
+:mod:`DatasetDialog`
+======================
+
+.. automodule:: silx.gui.dialog.DatasetDialog
diff --git a/doc/source/modules/gui/dialog/img/colormapdialog.png b/doc/source/modules/gui/dialog/img/colormapdialog.png
new file mode 100644
index 0000000..b5eb8e2
--- /dev/null
+++ b/doc/source/modules/gui/dialog/img/colormapdialog.png
Binary files differ
diff --git a/doc/source/modules/gui/dialog/img/datasetdialog.png b/doc/source/modules/gui/dialog/img/datasetdialog.png
new file mode 100644
index 0000000..af5f931
--- /dev/null
+++ b/doc/source/modules/gui/dialog/img/datasetdialog.png
Binary files differ
diff --git a/doc/source/modules/gui/dialog/index.rst b/doc/source/modules/gui/dialog/index.rst
index 7e2f687..2042ac4 100644
--- a/doc/source/modules/gui/dialog/index.rst
+++ b/doc/source/modules/gui/dialog/index.rst
@@ -17,14 +17,27 @@ Snapshot of the widgets:
:height: 150px
:align: middle
-.. |imgGroupDialog| image:: ./img/datafiledialog.png
+.. |imgColormapDialog| image:: ./img/colormapdialog.png
:height: 150px
:align: middle
-======================== ========================== ==========================
-|imgImageFileDialog| |imgDataFileDialog| |imgGroupDialog|
-:class:`ImageFileDialog` :class:`DataFileDialog` :class:`GroupDialog`
-======================== ========================== ==========================
+======================== ========================= ========================
+|imgImageFileDialog| |imgDataFileDialog| |imgColormapDialog|
+:class:`ImageFileDialog` :class:`DataFileDialog` :class:`ColormapDialog`
+======================== ========================= ========================
+
+.. |imgGroupDialog| image:: ./img/groupdialog.png
+ :height: 150px
+ :align: middle
+
+.. |imgDatasetDialog| image:: ./img/datasetdialog.png
+ :height: 150px
+ :align: middle
+
+========================== ==========================
+|imgGroupDialog| |imgDatasetDialog|
+:class:`GroupDialog` :class:`DatasetDialog`
+========================== ==========================
Public modules:
@@ -35,5 +48,6 @@ Public modules:
datafiledialog.rst
abstractdatafiledialog.rst
groupdialog.rst
+ datasetdialog.rst
colormapdialog.rst
diff --git a/doc/source/modules/gui/gallery.rst b/doc/source/modules/gui/gallery.rst
index c71a87a..fffcfd8 100644
--- a/doc/source/modules/gui/gallery.rst
+++ b/doc/source/modules/gui/gallery.rst
@@ -190,6 +190,10 @@ Plotting widgets:
:height: 150px
:align: center
- :class:`ScatterView` is a widget dedicated to visualize a scatter plot.
+ * - .. image:: plot/img/CompareImages.png
+ :height: 150px
+ :align: center
+ - :class:`CompareImages` is a widget dedicated to compare 2 images.
Additional widgets:
@@ -267,6 +271,26 @@ Additional widgets:
It displays current parameters of the :class:`ScalarFieldView` and allows to modify it.
See :ref:`plot3d-sample-code`.
+Additional widgets:
+
+.. list-table::
+ :widths: 1 4
+ :header-rows: 1
+
+ * - Widget
+ - Description
+ * - .. image:: plot3d/img/PositionInfoWidget.png
+ :width: 300px
+ :align: center
+ - :class:`~silx.gui.plot3d.tools.PositionInfoWidget.PositionInfoWidget` displays the position
+ and value of selected data point in a :class:`SceneWidget`.
+ * - .. image:: plot3d/img/GroupPropertiesWidget.png
+ :height: 150px
+ :align: center
+ - :class:`~silx.gui.plot3d.tools.GroupPropertiesWidget.GroupPropertiesWidget`
+ allows to reset properties of all items in a group in a :class:`SceneWidget`.
+
+
:mod:`silx.gui.widgets` Widgets
+++++++++++++++++++++++++++++++
@@ -289,6 +313,11 @@ Additional widgets:
:align: center
- :class:`FrameBrowser.HorizontalSliderWithBrowser` is a :class:`FrameBrowser`
with an additional slider.
+ * - .. image:: widgets/img/RangeSlider.png
+ :width: 150px
+ :align: center
+ - :class:`~silx.gui.widgets.RangeSlider.RangeSlider` is a slider with 2 thumbs dedicated
+ to the interactive selection of an interval.
* - .. image:: widgets/img/PeriodicCombo.png
:width: 150px
:align: center
diff --git a/doc/source/modules/gui/icons.rst b/doc/source/modules/gui/icons.rst
index 3105006..659bc4c 100644
--- a/doc/source/modules/gui/icons.rst
+++ b/doc/source/modules/gui/icons.rst
@@ -41,6 +41,8 @@ Available icons
- add-shape-polygon
* - |add-shape-rectangle|
- add-shape-rectangle
+ * - |add-shape-unknown|
+ - add-shape-unknown
* - |add-shape-vertical|
- add-shape-vertical
* - |arrow-keys|
@@ -63,6 +65,28 @@ Available icons
- colormap-range
* - |colormap|
- colormap
+ * - |compare-align-auto|
+ - compare-align-auto
+ * - |compare-align-center|
+ - compare-align-center
+ * - |compare-align-origin|
+ - compare-align-origin
+ * - |compare-align-stretch|
+ - compare-align-stretch
+ * - |compare-keypoints|
+ - compare-keypoints
+ * - |compare-mode-a|
+ - compare-mode-a
+ * - |compare-mode-b|
+ - compare-mode-b
+ * - |compare-mode-hline|
+ - compare-mode-hline
+ * - |compare-mode-rb-channel|
+ - compare-mode-rb-channel
+ * - |compare-mode-rbneg-channel|
+ - compare-mode-rbneg-channel
+ * - |compare-mode-vline|
+ - compare-mode-vline
* - |crop|
- crop
* - |crosshair|
@@ -145,6 +169,8 @@ Available icons
- math-fit
* - |math-imaginary|
- math-imaginary
+ * - |math-mean|
+ - math-mean
* - |math-normalize|
- math-normalize
* - |math-peak-reset|
@@ -327,6 +353,7 @@ Available icons
.. |add-shape-point| image:: ../../../../silx/resources/gui/icons/add-shape-point.png
.. |add-shape-polygon| image:: ../../../../silx/resources/gui/icons/add-shape-polygon.png
.. |add-shape-rectangle| image:: ../../../../silx/resources/gui/icons/add-shape-rectangle.png
+.. |add-shape-unknown| image:: ../../../../silx/resources/gui/icons/add-shape-unknown.png
.. |add-shape-vertical| image:: ../../../../silx/resources/gui/icons/add-shape-vertical.png
.. |arrow-keys| image:: ../../../../silx/resources/gui/icons/arrow-keys.png
.. |axis| image:: ../../../../silx/resources/gui/icons/axis.png
@@ -338,6 +365,17 @@ Available icons
.. |colormap-none| image:: ../../../../silx/resources/gui/icons/colormap-none.png
.. |colormap-range| image:: ../../../../silx/resources/gui/icons/colormap-range.png
.. |colormap| image:: ../../../../silx/resources/gui/icons/colormap.png
+.. |compare-align-auto| image:: ../../../../silx/resources/gui/icons/compare-align-auto.png
+.. |compare-align-center| image:: ../../../../silx/resources/gui/icons/compare-align-center.png
+.. |compare-align-origin| image:: ../../../../silx/resources/gui/icons/compare-align-origin.png
+.. |compare-align-stretch| image:: ../../../../silx/resources/gui/icons/compare-align-stretch.png
+.. |compare-keypoints| image:: ../../../../silx/resources/gui/icons/compare-keypoints.png
+.. |compare-mode-a| image:: ../../../../silx/resources/gui/icons/compare-mode-a.png
+.. |compare-mode-b| image:: ../../../../silx/resources/gui/icons/compare-mode-b.png
+.. |compare-mode-hline| image:: ../../../../silx/resources/gui/icons/compare-mode-hline.png
+.. |compare-mode-rb-channel| image:: ../../../../silx/resources/gui/icons/compare-mode-rb-channel.png
+.. |compare-mode-rbneg-channel| image:: ../../../../silx/resources/gui/icons/compare-mode-rbneg-channel.png
+.. |compare-mode-vline| image:: ../../../../silx/resources/gui/icons/compare-mode-vline.png
.. |crop| image:: ../../../../silx/resources/gui/icons/crop.png
.. |crosshair| image:: ../../../../silx/resources/gui/icons/crosshair.png
.. |cube-back| image:: ../../../../silx/resources/gui/icons/cube-back.png
@@ -379,6 +417,7 @@ Available icons
.. |math-energy| image:: ../../../../silx/resources/gui/icons/math-energy.png
.. |math-fit| image:: ../../../../silx/resources/gui/icons/math-fit.png
.. |math-imaginary| image:: ../../../../silx/resources/gui/icons/math-imaginary.png
+.. |math-mean| image:: ../../../../silx/resources/gui/icons/math-mean.png
.. |math-normalize| image:: ../../../../silx/resources/gui/icons/math-normalize.png
.. |math-peak-reset| image:: ../../../../silx/resources/gui/icons/math-peak-reset.png
.. |math-peak-search| image:: ../../../../silx/resources/gui/icons/math-peak-search.png
diff --git a/doc/source/modules/gui/plot/compareimages.rst b/doc/source/modules/gui/plot/compareimages.rst
new file mode 100644
index 0000000..ca85636
--- /dev/null
+++ b/doc/source/modules/gui/plot/compareimages.rst
@@ -0,0 +1,19 @@
+
+.. currentmodule:: silx.gui.plot
+
+:mod:`CompareImages`: Plot 2 images to compare them
+===================================================
+
+.. automodule:: silx.gui.plot.CompareImages
+
+.. currentmodule:: silx.gui.plot.CompareImages
+
+.. image:: img/CompareImages.png
+ :height: 400px
+ :align: center
+
+:class:`CompareImages` class
+----------------------------
+
+.. autoclass:: CompareImages
+ :members:
diff --git a/doc/source/modules/gui/plot/dev.rst b/doc/source/modules/gui/plot/dev.rst
index d7d4581..8966487 100644
--- a/doc/source/modules/gui/plot/dev.rst
+++ b/doc/source/modules/gui/plot/dev.rst
@@ -44,7 +44,6 @@ The :mod:`backends` package provide the implementation of the rendering used by
It contains:
:mod:`.backends.BackendBase` defines the API any plot backend should provide in :class:`BackendBase`.
:mod:`.backends.BackendMatplotlib` implements a `matplotlib <http://matplotlib.org/>`_ backend.
-It uses :mod:`.backends.ModestImage` to provide a faster matplotlib AxesImage class using nearest values.
The :mod:`.backends.BackendMatplotlib` the provides two classes:
.. currentmodule:: silx.gui.plot.backends.BackendMatplotlib
diff --git a/doc/source/modules/gui/plot/getting_started.rst b/doc/source/modules/gui/plot/getting_started.rst
index 412cc11..899d262 100644
--- a/doc/source/modules/gui/plot/getting_started.rst
+++ b/doc/source/modules/gui/plot/getting_started.rst
@@ -66,7 +66,7 @@ On Windows, run from the command line::
- version 1, the legacy version which is also the default, and
- version 2, a more pythonic one, which is the only one supported by *silx*.
- All other configurations (i.e., PyQt4 on Python 3.x, PySide, PyQt5, IPython QtConsole widget) uses version 2.
+ All other configurations (i.e., PyQt4 on Python 3.x, PySide2, PyQt5, IPython QtConsole widget) uses version 2.
For more information, see `IPython, PyQt and PySide <http://ipython.org/ipython-doc/stable/interactive/reference.html#pyqt-and-pyside>`_.
@@ -103,7 +103,7 @@ A Qt GUI script must have a QApplication initialised before creating widgets:
[...]
qapp.exec_()
-Unless a Qt binding has already been loaded, :mod:`silx.gui.qt` uses one of the supported Qt bindings (PyQt4, PySide or PyQt5).
+Unless a Qt binding has already been loaded, :mod:`silx.gui.qt` uses one of the supported Qt bindings (PyQt5, PyQt4, PySide2).
If you prefer to choose the Qt binding yourself, import it before importing
a module from :mod:`silx.gui`:
@@ -295,7 +295,7 @@ When displaying an image, it is possible to define the ``origin`` and the ``scal
Colormap
++++++++
-A ``colormap`` is described with a :class:`.Colormap` class as follows:
+A ``colormap`` is described with a :class:`~silx.gui.colors.Colormap` class as follows:
.. code-block:: python
@@ -338,7 +338,7 @@ It is possible to change the default colormap of the plot widget by :meth:`.Plot
data = numpy.arange(512 * 512.).reshape(512, -1)
plot.addImage(data) # Rendered with the default colormap set before
-It is also possible to provide a :class:`.Colormap` to :meth:`.PlotWidget.addImage` to override this default for an image:
+It is also possible to provide a :class:`~silx.gui.colors.Colormap` to :meth:`.PlotWidget.addImage` to override this default for an image:
.. code-block:: python
diff --git a/doc/source/modules/gui/plot/img/CompareImages.png b/doc/source/modules/gui/plot/img/CompareImages.png
new file mode 100644
index 0000000..6650f26
--- /dev/null
+++ b/doc/source/modules/gui/plot/img/CompareImages.png
Binary files differ
diff --git a/doc/source/modules/gui/plot/img/CurveLegendsWidget.png b/doc/source/modules/gui/plot/img/CurveLegendsWidget.png
new file mode 100644
index 0000000..e7fa9f8
--- /dev/null
+++ b/doc/source/modules/gui/plot/img/CurveLegendsWidget.png
Binary files differ
diff --git a/doc/source/modules/gui/plot/index.rst b/doc/source/modules/gui/plot/index.rst
index 5cda6d8..6f06830 100644
--- a/doc/source/modules/gui/plot/index.rst
+++ b/doc/source/modules/gui/plot/index.rst
@@ -36,6 +36,7 @@ Main plot widgets:
imageview.rst
stackview.rst
scatterview.rst
+ compareimages.rst
Classes describing plot content:
diff --git a/doc/source/modules/gui/plot/items.rst b/doc/source/modules/gui/plot/items.rst
index eb3ca1a..43eb77e 100644
--- a/doc/source/modules/gui/plot/items.rst
+++ b/doc/source/modules/gui/plot/items.rst
@@ -29,8 +29,11 @@ Curve
isFill, setFill,
getXLabel, getYLabel,
getLineWidth, setLineWidth, getLineStyle, setLineStyle,
- isHighlighted, setHighlighted, getHighlightedColor, setHighlightedColor,
- getCurrentColor
+ isHighlighted, setHighlighted, getHighlightedStyle, setHighlightedStyle,
+ getCurrentStyle
+
+.. autoclass:: CurveStyle
+ :members: getColor, getLineStyle, getLineWidth, getSymbol, getSymbolSize
Images
------
diff --git a/doc/source/modules/gui/plot/plotsignal.rst b/doc/source/modules/gui/plot/plotsignal.rst
index c4cb003..091f481 100644
--- a/doc/source/modules/gui/plot/plotsignal.rst
+++ b/doc/source/modules/gui/plot/plotsignal.rst
@@ -132,6 +132,7 @@ Plot state change events
These events are deprecated.  
Use :attr:`PlotWidget.sigSetKeepDataAspectRatio`,
:attr:`PlotWidget.sigSetGraphGrid`, :attr:`PlotWidget.sigSetGraphCursor`,
+ :attr:`PlotWidget.sigItemAdded`,:attr:`PlotWidget.sigItemAboutToBeRemoved`,
:attr:`PlotWidget.sigContentChanged`, :attr:`PlotWidget.sigActiveCurveChanged`,
:attr:`PlotWidget.sigActiveImageChanged` and
:attr:`PlotWidget.sigInteractiveModeChanged` instead.
diff --git a/doc/source/modules/gui/plot/plotwidget.rst b/doc/source/modules/gui/plot/plotwidget.rst
index 4ce69f7..9978479 100644
--- a/doc/source/modules/gui/plot/plotwidget.rst
+++ b/doc/source/modules/gui/plot/plotwidget.rst
@@ -37,15 +37,13 @@ Get data
Those methods return objects providing access to plotted data:
+.. automethod:: PlotWidget.getItems
+
.. automethod:: PlotWidget.getCurve
.. automethod:: PlotWidget.getImage
.. automethod:: PlotWidget.getScatter
.. automethod:: PlotWidget.getHistogram
-.. automethod:: PlotWidget.getAllCurves
-.. automethod:: PlotWidget.getAllImages
-
-
Plot markers
............
@@ -134,10 +132,10 @@ Coordinates conversion
Active Item
...........
-.. automethod:: PlotWidget.isActiveCurveHandling
-.. automethod:: PlotWidget.setActiveCurveHandling
-.. automethod:: PlotWidget.getActiveCurveColor
-.. automethod:: PlotWidget.setActiveCurveColor
+.. automethod:: PlotWidget.setActiveCurveSelectionMode
+.. automethod:: PlotWidget.getActiveCurveSelectionMode
+.. automethod:: PlotWidget.getActiveCurveStyle
+.. automethod:: PlotWidget.setActiveCurveStyle
.. automethod:: PlotWidget.getActiveCurve
.. automethod:: PlotWidget.setActiveCurve
.. automethod:: PlotWidget.getActiveImage
@@ -159,6 +157,8 @@ The :class:`PlotWidget` provides the following Qt signals:
.. autoattribute:: PlotWidget.sigSetGraphGrid
.. autoattribute:: PlotWidget.sigSetGraphCursor
.. autoattribute:: PlotWidget.sigSetPanWithArrowKeys
+.. autoattribute:: PlotWidget.sigItemAdded
+.. autoattribute:: PlotWidget.sigItemAboutToBeRemoved
.. autoattribute:: PlotWidget.sigContentChanged
.. autoattribute:: PlotWidget.sigActiveCurveChanged
.. autoattribute:: PlotWidget.sigActiveImageChanged
diff --git a/doc/source/modules/gui/plot/tools.rst b/doc/source/modules/gui/plot/tools.rst
index 766c8f1..d7c96b5 100644
--- a/doc/source/modules/gui/plot/tools.rst
+++ b/doc/source/modules/gui/plot/tools.rst
@@ -54,6 +54,18 @@
:show-inheritance:
:members:
+:mod:`~silx.gui.plot.tools.CurveLegendsWidget`
+----------------------------------------------
+
+.. automodule:: silx.gui.plot.tools.CurveLegendsWidget
+
+.. image:: img/CurveLegendsWidget.png
+ :align: center
+
+.. autoclass:: silx.gui.plot.tools.CurveLegendsWidget.CurveLegendsWidget
+ :show-inheritance:
+ :members:
+
:mod:`~silx.gui.plot.tools.roi`: Region of interest
---------------------------------------------------
diff --git a/doc/source/modules/gui/plot3d/img/GroupPropertiesWidget.png b/doc/source/modules/gui/plot3d/img/GroupPropertiesWidget.png
new file mode 100644
index 0000000..0901aba
--- /dev/null
+++ b/doc/source/modules/gui/plot3d/img/GroupPropertiesWidget.png
Binary files differ
diff --git a/doc/source/modules/gui/plot3d/img/PositionInfoWidget.png b/doc/source/modules/gui/plot3d/img/PositionInfoWidget.png
new file mode 100644
index 0000000..680d698
--- /dev/null
+++ b/doc/source/modules/gui/plot3d/img/PositionInfoWidget.png
Binary files differ
diff --git a/doc/source/modules/gui/plot3d/scenewidget.rst b/doc/source/modules/gui/plot3d/scenewidget.rst
index 5c6f411..c1f49a4 100644
--- a/doc/source/modules/gui/plot3d/scenewidget.rst
+++ b/doc/source/modules/gui/plot3d/scenewidget.rst
@@ -26,4 +26,10 @@ For sample code using :class:`SceneWidget`, see ``plot3dSceneWindow.py`` in :ref
.. toctree::
:maxdepth: 2
- items.rst \ No newline at end of file
+ items.rst
+
+:class:`~silx.gui.plot3d.items._pick.PickingResult`
+---------------------------------------------------
+
+.. autoclass:: silx.gui.plot3d.items._pick.PickingResult
+ :members: \ No newline at end of file
diff --git a/doc/source/modules/gui/plot3d/tools.rst b/doc/source/modules/gui/plot3d/tools.rst
index 6cd433b..09c7468 100644
--- a/doc/source/modules/gui/plot3d/tools.rst
+++ b/doc/source/modules/gui/plot3d/tools.rst
@@ -38,3 +38,27 @@ Tool Buttons
.. autoclass:: ViewpointToolButton
:show-inheritance:
:members:
+
+
+Widgets
+-------
+
+:mod:`PositionInfoWidget`
++++++++++++++++++++++++++
+
+.. automodule:: silx.gui.plot3d.tools.PositionInfoWidget
+
+.. image:: img/PositionInfoWidget.png
+
+.. autoclass:: silx.gui.plot3d.tools.PositionInfoWidget.PositionInfoWidget
+ :members:
+
+:mod:`GroupPropertiesWidget`
+++++++++++++++++++++++++++++
+
+.. automodule:: silx.gui.plot3d.tools.GroupPropertiesWidget
+
+.. image:: img/GroupPropertiesWidget.png
+
+.. autoclass:: silx.gui.plot3d.tools.GroupPropertiesWidget.GroupPropertiesWidget
+ :members:
diff --git a/doc/source/modules/gui/update_icons_rst.py b/doc/source/modules/gui/update_icons_rst.py
deleted file mode 100644
index 3f6565a..0000000
--- a/doc/source/modules/gui/update_icons_rst.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2016 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-"""Script to update icons.rst file according to icons available in resources.
-"""
-
-__authors__ = ["Thomas Vincent"]
-__license__ = "MIT"
-__date__ = "30/06/2016"
-
-
-import os
-import glob
-
-
-ICONS_RST_FILENAME = os.path.join(os.path.dirname(__file__), 'icons.rst')
-
-
-ICONS_DIR = os.path.join(
- os.path.dirname(__file__),
- '..', '..', '..', '..', 'silx', 'resources', 'gui', 'icons', '*.png')
-
-
-ICONS_RST_HEADER = """
-.. AUTOMATICALLY GENERATED FILE DO NOT EDIT
- Use %s script instead
-
-.. currentmodule:: silx.gui
-
-:mod:`icons`: Set of icons
---------------------------
-
-.. automodule:: silx.gui.icons
- :members:
-
-Available icons
-+++++++++++++++
-
-.. list-table::
- :widths: 1 4
- :header-rows: 1
-
- * - Icon
- - Name
-""" % os.path.basename(__file__)
-
-
-def main():
- """Write icons.rst file"""
- icons = glob.glob(ICONS_DIR)
- icons = [os.path.relpath(f, os.path.dirname(__file__)) for f in icons]
- icons = sorted(icons)
-
- icons_table = '\n'.join(
- ' * - |%s|\n - %s' % (os.path.basename(f)[:-4],
- os.path.basename(f)[:-4]) for f in icons)
-
- icon_definitions = '\n'.join(
- '.. |%s| image:: %s' % (os.path.basename(f)[:-4], f) for f in icons)
-
- content = ICONS_RST_HEADER + icons_table + '\n\n' + icon_definitions + '\n'
-
- # Write to file
- with open(ICONS_RST_FILENAME, 'w') as f:
- f.write(content)
-
-
-if __name__ == '__main__':
- main()
diff --git a/doc/source/modules/gui/utils.rst b/doc/source/modules/gui/utils.rst
index be0f0ae..34670b6 100644
--- a/doc/source/modules/gui/utils.rst
+++ b/doc/source/modules/gui/utils.rst
@@ -10,3 +10,9 @@
.. automodule:: silx.gui.utils.concurrent
:members:
+
+:mod:`~silx.gui.utils.image`
+----------------------------
+
+.. automodule:: silx.gui.utils.image
+ :members:
diff --git a/doc/source/modules/gui/widgets/flowlayout.rst b/doc/source/modules/gui/widgets/flowlayout.rst
new file mode 100644
index 0000000..539386b
--- /dev/null
+++ b/doc/source/modules/gui/widgets/flowlayout.rst
@@ -0,0 +1,11 @@
+
+.. currentmodule:: silx.gui.widgets
+
+:mod:`FlowLayout`
+-------------------
+
+.. automodule:: silx.gui.widgets.FlowLayout
+
+.. autoclass:: silx.gui.widgets.FlowLayout.FlowLayout
+ :members:
+ :show-inheritance:
diff --git a/doc/source/modules/gui/widgets/img/RangeSlider.png b/doc/source/modules/gui/widgets/img/RangeSlider.png
new file mode 100644
index 0000000..b068c6f
--- /dev/null
+++ b/doc/source/modules/gui/widgets/img/RangeSlider.png
Binary files differ
diff --git a/doc/source/modules/gui/widgets/index.rst b/doc/source/modules/gui/widgets/index.rst
index 72f89a8..e36b046 100644
--- a/doc/source/modules/gui/widgets/index.rst
+++ b/doc/source/modules/gui/widgets/index.rst
@@ -12,9 +12,11 @@ Public modules:
.. toctree::
:maxdepth: 2
+ flowlayout.rst
framebrowser.rst
periodictable.rst
printpreview.rst
+ rangeslider.rst
tablewidget.rst
threadpoolpushbutton.rst
waitingpushbutton.rst
diff --git a/doc/source/modules/gui/widgets/rangeslider.rst b/doc/source/modules/gui/widgets/rangeslider.rst
new file mode 100644
index 0000000..f4e5ff5
--- /dev/null
+++ b/doc/source/modules/gui/widgets/rangeslider.rst
@@ -0,0 +1,8 @@
+
+.. currentmodule:: silx.gui.widgets
+
+:mod:`RangeSlider`: Slider to define an interval
+------------------------------------------------
+
+.. automodule:: silx.gui.widgets.RangeSlider
+ :members:
diff --git a/doc/source/modules/sx.rst b/doc/source/modules/sx.rst
index f08dd98..def5b44 100644
--- a/doc/source/modules/sx.rst
+++ b/doc/source/modules/sx.rst
@@ -9,6 +9,8 @@
Plot functions
--------------
+.. currentmodule:: silx.sx._plot
+
The following functions plot curves and images with silx widgets:
- :func:`plot` for curves
@@ -44,6 +46,8 @@ The :func:`ginput` function handles user selection on those widgets.
3D plot functions
-----------------
+.. currentmodule:: silx.sx._plot3d
+
The following functions plot 3D data with silx widgets (it requires OpenGL):
- :func:`contour3d` for isosurfaces (and cut plane) in a 3D scalar field
diff --git a/doc/source/modules/test/index.rst b/doc/source/modules/test/index.rst
index f9d8ec0..c20bf97 100644
--- a/doc/source/modules/test/index.rst
+++ b/doc/source/modules/test/index.rst
@@ -13,8 +13,8 @@
.. automodule:: silx.test.utils
:members:
-:mod:`silx.gui.test.utils`
---------------------------
+:mod:`silx.gui.utils.testutils`
+-------------------------------
-.. automodule:: silx.gui.test.utils
+.. automodule:: silx.gui.utils.testutils
:members:
diff --git a/doc/source/overview.rst b/doc/source/overview.rst
index 3f3724a..9e4fc28 100644
--- a/doc/source/overview.rst
+++ b/doc/source/overview.rst
@@ -42,6 +42,6 @@ Project
Additional Material
-------------------
-- Code Camp Talks. *silx* follows a quarterly release cycle. Prior to each release, a code camp takes place in which the novelties are presented and interested users make use of the development version in order to spot bugs or missing features. The PDFs of the talks are available for download (`v0.7.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.7.0.pdf>`_, `v0.6.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.6.0.pdf>`_, `v0.5.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.5.0.pdf>`_, `v0.4.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.4.0.pdf>`_, `v0.3.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.3.0.pdf>`_, `v0.2.0 <http://ftp.esrf.fr/pub/scisoft/silx/talks/IntroductionCodeCamp_v0.2.0.pdf>`_)
+- Code Camp Talks. *silx* follows a quarterly release cycle. Prior to each release, a code camp takes place in which the novelties are presented and interested users make use of the development version in order to spot bugs or missing features. The `PDFs of the talks are available for download <http://ftp.esrf.fr/pub/scisoft/silx/talks/>`_
diff --git a/doc/source/troubleshooting.rst b/doc/source/troubleshooting.rst
new file mode 100644
index 0000000..95917eb
--- /dev/null
+++ b/doc/source/troubleshooting.rst
@@ -0,0 +1,36 @@
+Trouble shooting
+================
+
+Using OpenGL through ssh
+------------------------
+
+Some widgets in :mod:`silx.gui` are using OpenGL2.1:
+
+- Widgets in :mod:`silx.gui.plot3d`, and
+- The OpenGL backend of :class:`~silx.gui.plot.PlotWidget` and related widgets in :mod:`silx.gui.plot`.
+
+When running applications based on OpenGL2.1 through ssh, there are a few situations that can prevent the display of OpenGL widgets:
+
+- Make sure to use ``ssh -X`` to enable X11 forwarding.
+- OpenGL is disabled with X11 forwarding (the default on Debian 8 and 9). See `Enabling OpenGL forwarding`_.
+- Unless the operating system is using `libglvnd <https://github.com/NVIDIA/libglvnd/releases>`_
+ (available from Debian 9 backports onward),
+ both the server and the client computers must have the same kind of GPU drivers
+ (either both using proprietary NVidia drivers or both using open source drivers),
+ otherwise only OpenGL1.4 is available.
+
+To get the currently available version of OpenGL, run from the command line::
+
+ glxinfo | grep "OpenGL version string"
+
+On Debian, ``glxinfo`` is available as part of the ``mesa-utils`` package.
+
+Enabling OpenGL forwarding
+..........................
+
+"Indirect GLX" must be enabled on the local computer.
+If it is disabled, setting it up requires root access.
+The way to set it up depends on the configuration of the system (the operating system and the display manager).
+
+- On Debian 8 with kdm display manager, add ``+iglx`` after ``ServerArgsLocal=...`` in ``/etc/kde4/kdm/kdmrc`` and restart the X server.
+- On Debian 9 with sddm display manager, dd ``+iglx`` after ``ServerArguments=...``` in ``/etc/sddm.conf`` and restart the X server.
diff --git a/doc/source/virtualenv.rst b/doc/source/virtualenv.rst
index db8058d..3d86617 100644
--- a/doc/source/virtualenv.rst
+++ b/doc/source/virtualenv.rst
@@ -162,11 +162,11 @@ is not as simple.
The simplest way, assuming that PyQt is installed on your system, is to use that
system package directly. For this, you need to add a symbolic link to your virtualenv.
-If you want to use PyQt4 installed in ``/usr/lib/python2.7/dist-packages/``, type:
+If you want to use PyQt5 installed in ``/usr/lib/python2.7/dist-packages/``, type:
.. code-block:: bash
- ln -s /usr/lib/python2.7/dist-packages/PyQt4 silx_venv/lib/python2.7/site-packages/
+ ln -s /usr/lib/python2.7/dist-packages/PyQt5 silx_venv/lib/python2.7/site-packages/
ln -s /usr/lib/python2.7/dist-packages/sip.so silx_venv/lib/python2.7/site-packages/
@@ -178,7 +178,7 @@ Install silx
pip install silx
-To test *silx*, open an interactive python console. If you managed to install PyQt or PySide
+To test *silx*, open an interactive python console. If you managed to install PyQt5 or PySide2
in your virtualenv, type:
.. code-block:: bash
diff --git a/examples/__init__.py b/examples/__init__.py
new file mode 100644
index 0000000..625d5fa
--- /dev/null
+++ b/examples/__init__.py
@@ -0,0 +1,29 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This package contains examples"""
+
+__authors__ = ["V. Valls"]
+__license__ = "MIT"
+__date__ = "26/07/2018"
diff --git a/examples/blissPlot.py b/examples/blissPlot.py
deleted file mode 100644
index 71c1fd3..0000000
--- a/examples/blissPlot.py
+++ /dev/null
@@ -1,635 +0,0 @@
-# coding: utf-8
-
-
-from __future__ import division, absolute_import, print_function, unicode_literals
-
-
-import six
-
-from silx.gui import qt, icons
-from silx.gui.plot.actions import PlotAction, mode
-from silx.gui.plot import PlotWindow, PlotWidget
-from silx.gui.plot.Colors import rgba
-
-
-class DrawModeAction(PlotAction):
- """Action that control drawing mode"""
-
- _MODES = { # shape: (icon, text, tooltip
- 'rectangle': ('shape-rectangle', 'Rectangle selection', 'Select a rectangular region'),
- 'line': ('shape-diagonal', 'Line selection', 'Select a line'),
- 'hline': ('shape-horizontal', 'H. line selection', 'Select a horizontal line'),
- 'vline': ('shape-vertical', 'V. line selection', 'Select a vertical line'),
- 'polygon': ('shape-polygon', 'Polygon selection', 'Select a polygon'),
- }
-
- def __init__(self, plot, parent=None):
- self._shape = 'polygon'
- self._label = None
- self._color = 'black'
- self._width = None
- icon, text, tooltip = self._MODES[self._shape]
-
- super(DrawModeAction, self).__init__(
- plot, icon=icon, text=text,
- tooltip=tooltip,
- triggered=self._actionTriggered,
- checkable=True, parent=parent)
-
- # Listen to mode change
- self.plot.sigInteractiveModeChanged.connect(self._modeChanged)
- # Init the state
- self._modeChanged(None)
-
- def _update(self):
- if self.isChecked():
- self._actionTriggered()
-
- def setShape(self, shape):
- self._shape = shape
- icon, text, tooltip = self._MODES[self._shape]
- self.setIcon(icons.getQIcon(icon))
- self.setText(text)
- self.setToolTip(tooltip)
- self._update()
-
- def getShape(self):
- return self._shape
-
- def setColor(self, color):
- self._color = rgba(color)
- self._update()
-
- def getColor(self):
- return qt.QColor.fromRgbF(*self._color)
-
- def setLabel(self, label):
- self._label = label
- self._update()
-
- def getLabel(self):
- return self._label
-
- def setWidth(self, width):
- self._width = width
- self._update()
-
- def getWidth(self):
- return self._width
-
- def _modeChanged(self, source):
- modeDict = self.plot.getInteractiveMode()
- old = self.blockSignals(True)
- self.setChecked(modeDict['mode'] == 'draw' and
- modeDict['shape'] == self._shape and
- modeDict['label'] == self._label)
- self.blockSignals(old)
-
- def _actionTriggered(self, checked=False):
- self.plot.setInteractiveMode('draw',
- source=self,
- shape=self._shape,
- color=self._color,
- label=self._label,
- width=self._width)
-
-
-class ShapeSelector(qt.QObject):
- """Handles the selection of a single shape in a PlotWidget
-
- :param parent: QObject's parent
- """
-
- selectionChanged = qt.Signal(tuple)
- """Signal emitted whenever the selection has changed.
-
- It provides the selection.
- """
-
- selectionFinished = qt.Signal(tuple)
- """Signal emitted when selection is terminated.
-
- It provides the selection.
- """
-
- def __init__(self, parent=None):
- assert isinstance(parent, PlotWidget)
- super(ShapeSelector, self).__init__(parent)
- self._isSelectionRunning = False
- self._selection = ()
- self._itemId = "%s-%s" % (self.__class__.__name__, id(self))
-
- # Add a toolbar to plot
- self._toolbar = qt.QToolBar('Selection')
- self._modeAction = DrawModeAction(plot=parent)
- self._modeAction.setLabel(self._itemId)
- self._modeAction.setColor(rgba('red'))
- toolButton = qt.QToolButton()
- toolButton.setDefaultAction(self._modeAction)
- toolButton.setToolButtonStyle(qt.Qt.ToolButtonTextBesideIcon)
- self._toolbar.addWidget(toolButton)
-
- # Style
-
- def getColor(self):
- """Returns the color used for the selection shape
-
- :rtype: QColor
- """
- return self._modeAction.getColor()
-
- def setColor(self, color):
- """Set the color used for the selection shape
-
- :param color: The color to use for selection shape as
- either a color name, a QColor, a list of uint8 or float in [0, 1].
- """
- self._modeAction.setColor(color)
- self._updateShape()
-
- # Control selection
-
- def getSelection(self):
- """Returns selection control point coordinates
-
- Returns an empty tuple if there is no selection
-
- :return: Nx2 (x, y) coordinates or an empty tuple.
- """
- return tuple(zip(*self._selection))
-
- def _setSelection(self, x, y):
- """Set the selection shape control points.
-
- Use :meth:`reset` to remove the selection.
-
- :param x: X coordinates of control points
- :param y: Y coordinates of control points
- """
- selection = x, y
- if selection != self._selection:
- self._selection = selection
- self._updateShape()
- self.selectionChanged.emit(self.getSelection())
-
- def reset(self):
- """Clear the rectangle selection"""
- if self._selection:
- self._selection = ()
- self._updateShape()
- self.selectionChanged.emit(self.getSelection())
-
- def start(self, shape):
- """Start requiring user to select a rectangle
-
- :param str shape: The shape to select in:
- 'rectangle', 'line', 'polygon', 'hline', 'vline'
- """
- plot = self.parent()
- if plot is None:
- raise RuntimeError('No plot to perform selection')
-
- self.stop()
- self.reset()
-
- assert shape in ('rectangle', 'line', 'polygon', 'hline', 'vline')
-
- self._modeAction.setShape(shape)
- self._modeAction.trigger() # To set the interaction mode
-
- self._isSelectionRunning = True
-
- plot.sigPlotSignal.connect(self._handleDraw)
-
- self._toolbar.show()
- plot.addToolBar(qt.Qt.BottomToolBarArea, self._toolbar)
-
- def stop(self):
- """Stop shape selection"""
- if not self._isSelectionRunning:
- return
-
- plot = self.parent()
- if plot is None:
- return
-
- mode = plot.getInteractiveMode()
- if mode['mode'] == 'draw' and mode['label'] == self._itemId:
- plot.setInteractiveMode('zoom') # This disconnects draw handler
-
- plot.sigPlotSignal.disconnect(self._handleDraw)
-
- plot.removeToolBar(self._toolbar)
-
- self._isSelectionRunning = False
- self.selectionFinished.emit(self.getSelection())
-
- def _handleDraw(self, event):
- """Handle shape drawing event"""
- if (event['event'] == 'drawingFinished' and
- event['parameters']['label'] == self._itemId):
- self._setSelection(event['xdata'], event['ydata'])
- self.stop()
-
- def _updateShape(self):
- """Update shape on the plot"""
- plot = self.parent()
- if plot is not None:
- if not self._selection:
- plot.remove(legend=self._itemId, kind='item')
-
- else:
- x, y = self._selection
- shape = self._modeAction.getShape()
- if shape == 'line':
- shape = 'polylines'
-
- plot.addItem(x, y,
- legend=self._itemId,
- shape=shape,
- color=rgba(self._modeAction.getColor()),
- fill=False)
-
-
-
-class PointsSelector(qt.QObject):
- """Handle selection of points in a PlotWidget"""
-
- selectionChanged = qt.Signal(tuple)
- """Signal emitted whenever the selection has changed.
-
- It provides the selection.
- """
-
- selectionFinished = qt.Signal(tuple)
- """Signal emitted when selection is terminated.
-
- It provides the selection.
- """
-
-
- def __init__(self, parent):
- assert isinstance(parent, PlotWidget)
- super(PointsSelector, self).__init__(parent)
-
- self._isSelectionRunning = False
- self._markersAndPos = []
- self._totalPoints = 0
-
- def getSelection(self):
- """Returns the selection"""
- return tuple(pos for _, pos in self._markersAndPos)
-
- def eventFilter(self, obj, event):
- """Event filter for plot hide and key event"""
- if event.type() == qt.QEvent.Hide:
- self.stop()
-
- elif event.type() == qt.QEvent.KeyPress:
- if event.key() in (qt.Qt.Key_Delete, qt.Qt.Key_Backspace) or (
- event.key() == qt.Qt.Key_Z and event.modifiers() & qt.Qt.ControlModifier):
- if len(self._markersAndPos) > 0:
- plot = self.parent()
- if plot is not None:
- legend, _ = self._markersAndPos.pop()
- plot.remove(legend=legend, kind='marker')
-
- self._updateStatusBar()
- self.selectionChanged.emit(self.getSelection())
- return True # Stop further handling of those keys
-
- elif event.key() == qt.Qt.Key_Return:
- self.stop()
- return True # Stop further handling of those keys
-
- return super(PointsSelector, self).eventFilter(obj, event)
-
- def start(self, nbPoints=1):
- """Start interactive selection of points
-
- :param int nbPoints: Number of points to select
- """
- self.stop()
- self.reset()
-
- plot = self.parent()
- if plot is None:
- raise RuntimeError('No plot to perform selection')
-
- self._totalPoints = nbPoints
- self._isSelectionRunning = True
-
- plot.setInteractiveMode(mode='zoom')
- self._handleInteractiveModeChanged(None)
- plot.sigInteractiveModeChanged.connect(
- self._handleInteractiveModeChanged)
-
- plot.installEventFilter(self)
-
- self._updateStatusBar()
-
- def stop(self):
- """Stop interactive point selection"""
- if not self._isSelectionRunning:
- return
-
- plot = self.parent()
- if plot is None:
- return
-
- plot.removeEventFilter(self)
-
- plot.sigInteractiveModeChanged.disconnect(
- self._handleInteractiveModeChanged)
-
- currentMode = plot.getInteractiveMode()
- if currentMode['mode'] == 'zoom': # Stop handling mouse click
- plot.sigPlotSignal.disconnect(self._handleSelect)
-
- plot.statusBar().clearMessage()
- self._isSelectionRunning = False
- self.selectionFinished.emit(self.getSelection())
-
- def reset(self):
- """Reset selected points"""
- plot = self.parent()
- if plot is None:
- return
-
- for legend, _ in self._markersAndPos:
- plot.remove(legend=legend, kind='marker')
- self._markersAndPos = []
- self.selectionChanged.emit(self.getSelection())
-
- def _updateStatusBar(self):
- """Update status bar message"""
- plot = self.parent()
- if plot is None:
- return
-
- msg = 'Select %d/%d input points' % (len(self._markersAndPos),
- self._totalPoints)
-
- currentMode = plot.getInteractiveMode()
- if currentMode['mode'] != 'zoom':
- msg += ' (Use zoom mode to add/remove points)'
-
- plot.statusBar().showMessage(msg)
-
- def _handleSelect(self, event):
- """Handle mouse events"""
- if event['event'] == 'mouseClicked' and event['button'] == 'left':
- plot = self.parent()
- if plot is None:
- return
-
- x, y = event['x'], event['y']
-
- # Add marker
- legend = "sx.ginput %d" % len(self._markersAndPos)
- plot.addMarker(
- x, y,
- legend=legend,
- text='%d' % len(self._markersAndPos),
- color='red',
- draggable=False)
-
- self._markersAndPos.append((legend, (x, y)))
- self._updateStatusBar()
- if len(self._markersAndPos) >= self._totalPoints:
- self.stop()
-
- def _handleInteractiveModeChanged(self, source):
- """Handle change of interactive mode in the plot
-
- :param source: Objects that triggered the mode change
- """
- plot = self.parent()
- if plot is None:
- return
-
- mode = plot.getInteractiveMode()
- if mode['mode'] == 'zoom': # Handle click events
- plot.sigPlotSignal.connect(self._handleSelect)
- else: # Do not handle click event
- plot.sigPlotSignal.disconnect(self._handleSelect)
- self._updateStatusBar()
-
-
-# TODO refactor to make a selection by composition rather than inheritance...
-class BlissPlot(PlotWindow):
- """Plot with selection methods"""
-
- sigSelectionDone = qt.Signal(object)
- """Signal emitted when the selection is done
-
- It provides the list of selected points
- """
-
- def __init__(self, parent=None, **kwargs):
- super(BlissPlot, self).__init__(parent=parent, **kwargs)
- self._selectionColor = rgba('red')
- self._selectionMode = None
- self._markers = []
- self._pointNames = ()
-
- # Style
-
- def getColor(self):
- """Returns the color used for selection markers
-
- :rtype: QColor
- """
- return qt.QColor.fromRgbF(*self._selectionColor)
-
- def setColor(self, color):
- """Set the markers used for selection
-
- :param color: The color to use for selection markers as
- either a color name, a QColor, a list of uint8 or float in [0, 1].
- """
- self._selectionColor = rgba(color)
- self._updateMarkers() # To apply color change
-
- # Marker helpers
-
- def _setSelectedPointMarker(self, x, y, index=None):
- """Add/Update a marker for a point
-
- :param float x: X coord in plot
- :param float y: Y coord in plot
- :param int index: Index of point in points names to set
- :return: corresponding marker legend
- :rtype: str
- """
- if index is None:
- index = len(self._markers)
-
- name = self._pointNames[index]
- legend = "BlissPlotSelection-%d" % index
-
- self.addMarker(
- x, y,
- legend=legend,
- text=name,
- color=self._selectionColor,
- draggable=self._selectionMode is not None)
- return legend
-
- def _updateMarkers(self):
- """Update all markers to sync color/draggable"""
- for index, (x, y) in enumerate(self.getSelectedPoints()):
- self._setSelectedPointMarker(x, y, index)
-
- # Selection mode control
-
- def startPointSelection(self, points=1):
- """Request the user to select a number of points
-
- :param points:
- The number of points the user need to select (default: 1)
- or a list of point names or a single name.
- :type points: Union[int, List[str], str]
- :return: A future to access the result
- :rtype: concurrent.futures.Future
- """
- self.stopSelection()
- self.resetSelection()
-
- if isinstance(points, six.string_types):
- points = [points]
- elif isinstance(points, int):
- points = [str(i) for i in range(points)]
-
- self._pointNames = points
-
- self._markers = []
- self._selectionMode = 'points'
-
- self.setInteractiveMode(mode='zoom')
- self._handleInteractiveModeChanged(None)
- self.sigInteractiveModeChanged.connect(
- self._handleInteractiveModeChanged)
-
- def stopSelection(self):
- """Stop current selection.
-
- Calling this method emits the selection through sigSelectionDone
- and does not clear the selection.
- """
- if self._selectionMode is not None:
- currentMode = self.getInteractiveMode()
- if currentMode['mode'] == 'zoom': # Stop handling mouse click
- self.sigPlotSignal.disconnect(self._handleSelect)
-
- self.sigInteractiveModeChanged.disconnect(
- self._handleInteractiveModeChanged)
-
- self._selectionMode = None
- self.statusBar().showMessage('Selection done')
-
- self._updateMarkers() # To make them not draggable
-
- self.sigSelectionDone.emit(self.getSelectedPoints())
-
- def getSelectedPoints(self):
- """Returns list of currently selected points
-
- :rtype: tuple
- """
- return tuple(self._getItem(kind='marker', legend=legend).getPosition()
- for legend in self._markers)
-
- def resetSelection(self):
- """Clear current selection"""
- for legend in self._markers:
- self.remove(legend, kind='marker')
- self._markers = []
-
- if self._selectionMode is not None:
- self._updateStatusBar()
- else:
- self.statusBar().clearMessage()
-
- def _handleInteractiveModeChanged(self, source):
- """Handle change of interactive mode in the plot
-
- :param source: Objects that triggered the mode change
- """
- mode = self.getInteractiveMode()
- if mode['mode'] == 'zoom': # Handle click events
- self.sigPlotSignal.connect(self._handleSelect)
- else: # Do not handle click event
- self.sigPlotSignal.disconnect(self._handleSelect)
- self._updateStatusBar()
-
- def _handleSelect(self, event):
- """Handle mouse events"""
- if event['event'] == 'mouseClicked' and event['button'] == 'left':
- if len(self._markers) == len(self._pointNames):
- return
-
- x, y = event['x'], event['y']
- legend = self._setSelectedPointMarker(x, y, len(self._markers))
- self._markers.append(legend)
- self._updateStatusBar()
-
- def keyPressEvent(self, event):
- """Handle keys for undo/done actions"""
- if self._selectionMode is not None:
- if event.key() in (qt.Qt.Key_Delete, qt.Qt.Key_Backspace) or (
- event.key() == qt.Qt.Key_Z and
- event.modifiers() & qt.Qt.ControlModifier):
- if len(self._markers) > 0:
- legend = self._markers.pop()
- self.remove(legend, kind='marker')
-
- self._updateStatusBar()
- return # Stop processing the event
-
- elif event.key() == qt.Qt.Key_Return:
- self.stopSelection()
- return # Stop processing the event
-
- return super(BlissPlot, self).keyPressEvent(event)
-
- def _updateStatusBar(self):
- """Update status bar message"""
- if len(self._markers) < len(self._pointNames):
- name = self._pointNames[len(self._markers)]
- msg = 'Select point: %s (%d/%d)' % (
- name, len(self._markers), len(self._pointNames))
- else:
- msg = 'Selection ready. Press Enter to validate'
-
- currentMode = self.getInteractiveMode()
- if currentMode['mode'] != 'zoom':
- msg += ' (Use zoom mode to add/edit points)'
-
- self.statusBar().showMessage(msg)
-
-
-if __name__ == '__main__':
- app = qt.QApplication([])
-
- #plot = BlissPlot()
- #plot.startPointSelection(('first', 'second', 'third'))
-
- def dumpChanged(selection):
- print('selectionChanged', selection)
-
- def dumpFinished(selection):
- print('selectionFinished', selection)
-
- plot = PlotWindow()
- selector = ShapeSelector(plot)
- #selector.start(shape='rectangle')
- selector.selectionChanged.connect(dumpChanged)
- selector.selectionFinished.connect(dumpFinished)
- plot.show()
-
- points = PointsSelector(plot)
- points.start(3)
- points.selectionChanged.connect(dumpChanged)
- points.selectionFinished.connect(dumpFinished)
- #app.exec_()
diff --git a/examples/colormapDialog.py b/examples/colormapDialog.py
index 9ef6508..08e3fe8 100644
--- a/examples/colormapDialog.py
+++ b/examples/colormapDialog.py
@@ -149,7 +149,7 @@ class ColormapDialogExample(qt.QMainWindow):
self.colorDialogs.append(newDialog)
self.mainWidget.layout().addWidget(newDialog)
- def removeColorDialog(self, dialog):
+ def removeColorDialog(self, dialog, result):
self.colorDialogs.remove(dialog)
def setNoColormap(self):
diff --git a/examples/compareImages.py b/examples/compareImages.py
new file mode 100644
index 0000000..94f68a0
--- /dev/null
+++ b/examples/compareImages.py
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""Example demonstrating the use of the widget CompareImages
+"""
+
+import sys
+import logging
+import numpy
+import argparse
+
+import silx.io
+from silx.gui import qt
+import silx.test.utils
+from silx.gui.plot.CompareImages import CompareImages
+
+_logger = logging.getLogger(__name__)
+
+try:
+ import fabio
+except ImportError:
+ _logger.debug("Backtrace", exc_info=True)
+ fabio = None
+
+try:
+ import PIL
+except ImportError:
+ _logger.debug("Backtrace", exc_info=True)
+ PIL = None
+
+
+def createTestData():
+ data = numpy.arange(100 * 100)
+ data = (data % 100) / 5.0
+ data = numpy.sin(data)
+ data1 = data.copy()
+ data1.shape = 100, 100
+ data2 = silx.test.utils.add_gaussian_noise(data, stdev=0.1)
+ data2.shape = 100, 100
+ return data1, data2
+
+
+def loadImage(filename):
+ try:
+ return silx.io.get_data(filename)
+ except Exception:
+ _logger.debug("Error while loading image with silx.io", exc_info=True)
+
+ if fabio is None and PIL is None:
+ raise ImportError("fabio nor PIL are available")
+
+ if fabio is not None:
+ try:
+ return fabio.open(filename).data
+ except Exception:
+ _logger.debug("Error while loading image with fabio", exc_info=True)
+
+ if PIL is not None:
+ try:
+ return numpy.asarray(PIL.Image.open(filename))
+ except Exception:
+ _logger.debug("Error while loading image with PIL", exc_info=True)
+
+ raise Exception("Impossible to load '%s' with the available image libraries" % filename)
+
+
+file_description = """
+Image data to compare (HDF5 file with path, EDF files, JPEG/PNG image files).
+Data from HDF5 files can be accessed using dataset path and slicing as an URL: silx:../my_file.h5?path=/entry/data&slice=10
+EDF file frames also can can be accessed using URL: fabio:../my_file.edf?slice=10
+Using URL in command like usually have to be quoted: "URL".
+"""
+
+
+def createParser():
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument(
+ 'files',
+ nargs=argparse.ZERO_OR_MORE,
+ help=file_description)
+ parser.add_argument(
+ '--debug',
+ dest="debug",
+ action="store_true",
+ default=False,
+ help='Set logging system in debug mode')
+ parser.add_argument(
+ '--testdata',
+ dest="testdata",
+ action="store_true",
+ default=False,
+ help='Use synthetic images to test the application')
+ parser.add_argument(
+ '--use-opengl-plot',
+ dest="use_opengl_plot",
+ action="store_true",
+ default=False,
+ help='Use OpenGL for plots (instead of matplotlib)')
+ return parser
+
+
+if __name__ == "__main__":
+ parser = createParser()
+ options = parser.parse_args(sys.argv[1:])
+
+ if options.debug:
+ logging.root.setLevel(logging.DEBUG)
+
+ if options.testdata:
+ _logger.info("Generate test data")
+ data1, data2 = createTestData()
+ else:
+ if len(options.files) != 2:
+ raise Exception("Expected 2 images to compare them")
+ data1 = loadImage(options.files[0])
+ data2 = loadImage(options.files[1])
+
+ if options.use_opengl_plot:
+ backend = "gl"
+ else:
+ backend = "mpl"
+
+ app = qt.QApplication([])
+ window = CompareImages(backend=backend)
+ window.setData(data1, data2)
+ window.setVisible(True)
+ app.exec_()
diff --git a/examples/plot3dSceneWindow.py b/examples/plot3dSceneWindow.py
index 3b78109..cf6f209 100644
--- a/examples/plot3dSceneWindow.py
+++ b/examples/plot3dSceneWindow.py
@@ -51,6 +51,8 @@ import numpy
from silx.gui import qt
from silx.gui.plot3d.SceneWindow import SceneWindow, items
+from silx.gui.plot3d.tools.PositionInfoWidget import PositionInfoWidget
+from silx.gui.widgets.BoxLayoutDockWidget import BoxLayoutDockWidget
SIZE = 1024
@@ -67,6 +69,14 @@ sceneWidget.setForegroundColor((1., 1., 1., 1.))
sceneWidget.setTextColor((0.1, 0.1, 0.1, 1.))
+# Add PositionInfoWidget to display picking info
+positionInfo = PositionInfoWidget()
+positionInfo.setSceneWidget(sceneWidget)
+dock = BoxLayoutDockWidget()
+dock.setWindowTitle("Selection Info")
+dock.setWidget(positionInfo)
+window.addDockWidget(qt.Qt.BottomDockWidgetArea, dock)
+
# 2D Image ###
# Add a dummy RGBA image
diff --git a/examples/plotCurveLegendWidget.py b/examples/plotCurveLegendWidget.py
new file mode 100644
index 0000000..9209c58
--- /dev/null
+++ b/examples/plotCurveLegendWidget.py
@@ -0,0 +1,154 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This example illustrates the use of :class:`CurveLegendsWidget`.
+
+:class:`CurveLegendsWidget` display curves style and legend currently visible
+in a :class:`~silx.gui.plot.PlotWidget`
+"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "20/07/2018"
+
+import functools
+
+import numpy
+
+from silx.gui import qt
+from silx.gui.plot import Plot1D
+from silx.gui.plot.tools.CurveLegendsWidget import CurveLegendsWidget
+from silx.gui.widgets.BoxLayoutDockWidget import BoxLayoutDockWidget
+
+
+class MyCurveLegendsWidget(CurveLegendsWidget):
+ """Extension of CurveLegendWidget.
+
+ This widget adds:
+ - Set a curve as active with a left click its the legend
+ - Adds a context menu with content specific to the hovered legend
+
+ :param QWidget parent: See QWidget
+ """
+
+ def __init__(self, parent=None):
+ super(MyCurveLegendsWidget, self).__init__(parent)
+
+ # Activate/Deactivate curve with left click on the legend widget
+ self.sigCurveClicked.connect(self._switchCurveActive)
+
+ # Add a custom context menu
+ self.setContextMenuPolicy(qt.Qt.CustomContextMenu)
+ self.customContextMenuRequested.connect(self._contextMenu)
+
+ def _switchCurveActive(self, curve):
+ """Set a curve as active.
+
+ This is called from the context menu and when a legend is clicked.
+
+ :param silx.gui.plot.items.Curve curve:
+ """
+ plot = curve.getPlot()
+ plot.setActiveCurve(
+ curve.getLegend() if curve != plot.getActiveCurve() else None)
+
+ def _switchCurveVisibility(self, curve):
+ """Toggle the visibility of a curve
+
+ :param silx.gui.plot.items.Curve curve:
+ """
+ curve.setVisible(not curve.isVisible())
+
+ def _switchCurveYAxis(self, curve):
+ """Change the Y axis a curve is attached to.
+
+ :param silx.gui.plot.items.Curve curve:
+ """
+ yaxis = curve.getYAxis()
+ curve.setYAxis('left' if yaxis is 'right' else 'right')
+
+ def _contextMenu(self, pos):
+ """Create a show the context menu.
+
+ :param QPoint pos: Position in this widget
+ """
+ curve = self.curveAt(pos) # Retrieve curve from hovered legend
+ if curve is not None:
+ menu = qt.QMenu() # Create the menu
+
+ # Add an action to activate the curve
+ activeCurve = curve.getPlot().getActiveCurve()
+ menu.addAction('Unselect' if curve == activeCurve else 'Select',
+ functools.partial(self._switchCurveActive, curve))
+
+ # Add an action to switch the Y axis of a curve
+ yaxis = 'right' if curve.getYAxis() == 'left' else 'left'
+ menu.addAction('Map to %s' % yaxis,
+ functools.partial(self._switchCurveYAxis, curve))
+
+ # Add an action to show/hide the curve
+ menu.addAction('Hide' if curve.isVisible() else 'Show',
+ functools.partial(self._switchCurveVisibility, curve))
+
+ globalPosition = self.mapToGlobal(pos)
+ menu.exec_(globalPosition)
+
+
+# First create the QApplication
+app = qt.QApplication([])
+
+# Create a plot and add some curves
+window = Plot1D()
+window.setWindowTitle("CurveLegendWidgets demo")
+
+x = numpy.linspace(-numpy.pi, numpy.pi, 100)
+window.addCurve(x, 2. * numpy.random.random(100) - 1.,
+ legend='random',
+ symbol='s', linestyle='--',
+ color='red')
+window.addCurve(x, numpy.sin(x),
+ legend='sin',
+ symbol='o', linestyle=':',
+ color='blue')
+window.addCurve(x, numpy.cos(x),
+ legend='cos',
+ symbol='', linestyle='-',
+ color='blue')
+
+
+# Create a MyCurveLegendWidget associated to the plot
+curveLegendsWidget = MyCurveLegendsWidget()
+curveLegendsWidget.setPlotWidget(window)
+
+# Add the CurveLegendsWidget as a dock widget to the plot
+dock = BoxLayoutDockWidget()
+dock.setWindowTitle('Curve legends')
+dock.setWidget(curveLegendsWidget)
+window.addDockWidget(qt.Qt.RightDockWidgetArea, dock)
+
+# Show the plot and run the QApplication
+window.setAttribute(qt.Qt.WA_DeleteOnClose)
+window.show()
+
+app.exec_()
diff --git a/examples/plotGL32.py b/examples/plotGL32.py
deleted file mode 100644
index 474fbd2..0000000
--- a/examples/plotGL32.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import datetime as dt
-import numpy as np
-
-from PyQt5.QtWidgets import QApplication
-from silx.gui.plot import Plot1D
-
-if 1:
- BACKEND = 'gl' # this gives incorrect results
-else:
- BACKEND = 'mpl' # this works
-
-def makePlot1D():
-
- # Make large value with a relatively small range by creating POSIX time stamps.
- base = dt.datetime.today()
- dates = [base - dt.timedelta(seconds=x) for x in range(0, 2500, 20)]
-
- x = np.array([d.timestamp() for d in dates], dtype=np.float64)
- np.random.seed(seed=1)
- y = np.random.random(x.shape) * 12 - 3
-
- print('x range', np.nanmin(x), np.nanmax(x))
- print('y range', np.nanmin(y), np.nanmax(y))
-
- plot1D = Plot1D(backend=BACKEND)
- xAxis = plot1D.getXAxis()
-
- curve = plot1D.addCurve(x=x, y=y, legend='curve', symbol='o', fill=True)
-
- plot1D.addMarker(x=x[0], y=y[0], legend='marker', text='the marker', draggable=True)
- plot1D.addYMarker(y[0], legend='hmarker', text='the H marker', draggable=True)
- plot1D.addXMarker(x[0], legend='vmarker', text='the V marker', draggable=True)
-
- plot1D.show()
-
- return plot1D
-
-
-def main():
- global app, plot
- app = QApplication([])
- plot = makePlot1D()
- app.exec_()
-
-if __name__ == "__main__":
- main()
diff --git a/examples/plotInteractiveImageROI.py b/examples/plotInteractiveImageROI.py
index 6c5bc8d..d45bdf5 100644
--- a/examples/plotInteractiveImageROI.py
+++ b/examples/plotInteractiveImageROI.py
@@ -99,8 +99,17 @@ widget.setLayout(layout)
layout.addWidget(roiToolbar)
layout.addWidget(roiTable)
+def roiDockVisibilityChanged(visible):
+ """Handle change of visibility of the roi dock widget
+
+ If dock becomes hidden, ROI interaction is stopped.
+ """
+ if not visible:
+ roiManager.stop()
+
dock = qt.QDockWidget('Image ROI')
dock.setWidget(widget)
+dock.visibilityChanged.connect(roiDockVisibilityChanged)
plot.addTabbedDockWidget(dock)
# Show the widget and start the application
diff --git a/examples/plotStats.py b/examples/plotStats.py
index 91a444e..fff7585 100644
--- a/examples/plotStats.py
+++ b/examples/plotStats.py
@@ -39,7 +39,7 @@ On this example we will:
__authors__ = ["H. Payno"]
__license__ = "MIT"
-__date__ = "06/06/2018"
+__date__ = "24/07/2018"
from silx.gui import qt
@@ -112,8 +112,6 @@ def main():
plot.getStatsWidget().setStats(stats)
plot.getStatsWidget().parent().setVisible(True)
- # Update the checkedbox cause we arre playing with the visibility
- plot.getStatsAction().setChecked(True)
plot.show()
app.exec_()
diff --git a/examples/plotTimeSeries.py b/examples/plotTimeSeries.py
deleted file mode 100644
index 28100fe..0000000
--- a/examples/plotTimeSeries.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import datetime as dt
-import numpy as np
-
-from silx.gui import qt
-from silx.gui.plot import Plot1D, TickMode
-
-
-app = qt.QApplication([])
-
-base = dt.datetime.today()
-dates = [base - dt.timedelta(days=x) for x in range(0, 50)]
-
-x = np.array([d.timestamp() for d in dates], dtype=np.uint64)
-
-np.random.seed(seed=1)
-y = np.random.random(x.shape) * 12 - 3
-
-plot1D = Plot1D(backend='gl')
-xAxis = plot1D.getXAxis()
-xAxis.setTickMode(TickMode.TIME_SERIES)
-xAxis.setTimeZone('UTC')
-
-def later():
- xAxis.setTimeZone(dt.timezone(dt.timedelta(hours=12)))
- print('set time zone', xAxis.getTimeZone())
-
-qt.QTimer.singleShot(4000, later)
-
-curve = plot1D.addCurve(x=x, y=y, legend='curve')
-plot1D.show()
-
-app.exec_()
-
diff --git a/examples/simplewidget.py b/examples/simplewidget.py
index 8bfe7d5..e952dc6 100755
--- a/examples/simplewidget.py
+++ b/examples/simplewidget.py
@@ -33,12 +33,17 @@ It shows the following widgets:
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "12/01/2017"
+__date__ = "02/08/2018"
import sys
+import functools
+import numpy
+
from silx.gui import qt
+from silx.gui.colors import Colormap
from silx.gui.widgets.WaitingPushButton import WaitingPushButton
from silx.gui.widgets.ThreadPoolPushButton import ThreadPoolPushButton
+from silx.gui.widgets.RangeSlider import RangeSlider
class SimpleWidgetExample(qt.QMainWindow):
@@ -52,12 +57,17 @@ class SimpleWidgetExample(qt.QMainWindow):
main_panel = qt.QWidget(self)
main_panel.setLayout(qt.QVBoxLayout())
- main_panel.layout().addWidget(qt.QLabel("WaitingPushButton"))
- main_panel.layout().addWidget(self.createWaitingPushButton())
- main_panel.layout().addWidget(self.createWaitingPushButton2())
+ layout = main_panel.layout()
+ layout.addWidget(qt.QLabel("WaitingPushButton"))
+ layout.addWidget(self.createWaitingPushButton())
+ layout.addWidget(self.createWaitingPushButton2())
+
+ layout.addWidget(qt.QLabel("ThreadPoolPushButton"))
+ layout.addWidget(self.createThreadPoolPushButton())
- main_panel.layout().addWidget(qt.QLabel("ThreadPoolPushButton"))
- main_panel.layout().addWidget(self.createThreadPoolPushButton())
+ layout.addWidget(qt.QLabel("RangeSlider"))
+ layout.addWidget(self.createRangeSlider())
+ layout.addWidget(self.createRangeSliderWithBackground())
self.setCentralWidget(main_panel)
@@ -79,6 +89,9 @@ class SimpleWidgetExample(qt.QMainWindow):
print("Error")
print(result)
+ def printEvent(self, eventName, *args):
+ print("Event %s: %s" % (eventName, args))
+
def takesTimeToComputePow(self, a, b):
qt.QThread.sleep(2)
return a ** b
@@ -90,6 +103,25 @@ class SimpleWidgetExample(qt.QMainWindow):
widget.failed.connect(self.printError)
return widget
+ def createRangeSlider(self):
+ widget = RangeSlider(self)
+ widget.setRange(0, 500)
+ widget.setValues(100, 400)
+ widget.sigValueChanged.connect(functools.partial(self.printEvent, "sigValueChanged"))
+ widget.sigPositionChanged.connect(functools.partial(self.printEvent, "sigPositionChanged"))
+ widget.sigPositionCountChanged.connect(functools.partial(self.printEvent, "sigPositionCountChanged"))
+ return widget
+
+ def createRangeSliderWithBackground(self):
+ widget = RangeSlider(self)
+ widget.setRange(0, 500)
+ widget.setValues(100, 400)
+ background = numpy.sin(numpy.arange(250) / 250.0)
+ background[0], background[-1] = background[-1], background[0]
+ colormap = Colormap("viridis")
+ widget.setGroovePixmapFromProfile(background, colormap)
+ return widget
+
def main():
"""
diff --git a/package/debian8/control b/package/debian8/control
index 2aa3466..d84a339 100644
--- a/package/debian8/control
+++ b/package/debian8/control
@@ -65,7 +65,8 @@ Build-Depends: cython,
python3-scipy-dbg,
python3-sphinx,
python3-sphinxcontrib.programoutput,
- help2man
+ help2man,
+ devscripts
Standards-Version: 3.9.6
Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/silx.git
Vcs-Git: git://anonscm.debian.org/debian-science/packages/silx.git
diff --git a/package/debian9/control b/package/debian9/control
index 38fb5bf..fee1b1a 100644
--- a/package/debian9/control
+++ b/package/debian9/control
@@ -44,7 +44,9 @@ Build-Depends: cython,
python3-sphinx,
python3-sphinxcontrib.programoutput,
openstack-pkg-tools,
- help2man
+ help2man,
+ locales,
+ devscripts
Standards-Version: 3.9.8
Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/silx.git
Vcs-Git: git://anonscm.debian.org/debian-science/packages/silx.git
diff --git a/package/windows/README.rst b/package/windows/README.rst
new file mode 100644
index 0000000..a7f3702
--- /dev/null
+++ b/package/windows/README.rst
@@ -0,0 +1,37 @@
+Generate silx fat binary for Windows
+====================================
+
+Pre-requisites
+--------------
+
+- PyInstaller must be installed.
+ It is best to use the development version to use package specific hooks up-to-date.
+ Run either::
+
+ pip install -r requirements-dev.txt
+
+ or::
+
+ pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
+
+- silx and all its dependencies must be INSTALLED::
+
+ pip install silx[full]
+
+ or from the source directory::
+
+ pip install .[full]
+
+
+Procedure
+---------
+
+- Go to the `package/windows` folder in the source directory
+- Run `pyinstaller pyinstaller.spec`.
+ This generates a fat binary in `package/windows/dist/silx/` for the generic launcher `silx.exe`.
+- Run `pyinstaller pyinstaller-silx-view.spec`.
+ This generates a fat binary in `package/windows/dist/silx-view/` for the silx view command `silx-view.exe`.
+- Copy `silx-view.exe` and `silx-view.exe.manifest` to `package/windows/dist/silx/`.
+ This is a hack until PyInstaller supports multiple executables (see https://github.com/pyinstaller/pyinstaller/issues/1527).
+- Zip `package\windows\dist\silx` to make the application available as a single zip file.
+
diff --git a/package/windows/bootstrap-silx-view.py b/package/windows/bootstrap-silx-view.py
new file mode 100644
index 0000000..f8da02d
--- /dev/null
+++ b/package/windows/bootstrap-silx-view.py
@@ -0,0 +1,12 @@
+# coding: utf-8
+
+import logging
+
+logging.basicConfig()
+
+import sys
+from silx.app.view.main import main
+
+if __name__ == "__main__":
+ main(sys.argv)
+
diff --git a/package/windows/bootstrap.py b/package/windows/bootstrap.py
new file mode 100644
index 0000000..3c6e887
--- /dev/null
+++ b/package/windows/bootstrap.py
@@ -0,0 +1,16 @@
+# coding: utf-8
+
+import logging
+
+logging.basicConfig()
+
+# Import here for static analysis to work
+import silx.app.view.main
+import silx.app.convert
+import silx.app.test_
+
+from silx.__main__ import main
+
+if __name__ == "__main__":
+ main()
+
diff --git a/package/windows/pyinstaller-silx-view.spec b/package/windows/pyinstaller-silx-view.spec
new file mode 100644
index 0000000..6f36128
--- /dev/null
+++ b/package/windows/pyinstaller-silx-view.spec
@@ -0,0 +1,54 @@
+# -*- mode: python -*-
+import os.path
+from PyInstaller.utils.hooks import collect_data_files
+
+datas = []
+
+PROJECT_PATH = os.path.abspath(os.path.join(SPECPATH, "..", ".."))
+datas.append((os.path.join(PROJECT_PATH, "README.rst"), "."))
+datas.append((os.path.join(PROJECT_PATH, "LICENSE"), "."))
+datas.append((os.path.join(PROJECT_PATH, "copyright"), "."))
+
+
+datas += collect_data_files("silx.resources")
+
+
+block_cipher = None
+
+
+a = Analysis(['bootstrap-silx-view.py'],
+ pathex=[],
+ binaries=[],
+ datas=datas,
+ hiddenimports=[],
+ hookspath=[],
+ runtime_hooks=[],
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=block_cipher,
+ noarchive=False)
+
+pyz = PYZ(a.pure,
+ a.zipped_data,
+ cipher=block_cipher)
+
+exe = EXE(pyz,
+ a.scripts,
+ [],
+ exclude_binaries=True,
+ name='silx-view',
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=False,
+ console=False,
+ icon='silx.ico')
+
+coll = COLLECT(exe,
+ a.binaries,
+ a.zipfiles,
+ a.datas,
+ strip=False,
+ upx=False,
+ name='silx-view')
diff --git a/package/windows/pyinstaller.spec b/package/windows/pyinstaller.spec
new file mode 100644
index 0000000..74d6a0f
--- /dev/null
+++ b/package/windows/pyinstaller.spec
@@ -0,0 +1,54 @@
+# -*- mode: python -*-
+import os.path
+from PyInstaller.utils.hooks import collect_data_files
+
+datas = []
+
+PROJECT_PATH = os.path.abspath(os.path.join(SPECPATH, "..", ".."))
+datas.append((os.path.join(PROJECT_PATH, "README.rst"), "."))
+datas.append((os.path.join(PROJECT_PATH, "LICENSE"), "."))
+datas.append((os.path.join(PROJECT_PATH, "copyright"), "."))
+
+
+datas += collect_data_files("silx.resources")
+
+
+block_cipher = None
+
+
+a = Analysis(['bootstrap.py'],
+ pathex=[],
+ binaries=[],
+ datas=datas,
+ hiddenimports=[],
+ hookspath=[],
+ runtime_hooks=[],
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=block_cipher,
+ noarchive=False)
+
+pyz = PYZ(a.pure,
+ a.zipped_data,
+ cipher=block_cipher)
+
+exe = EXE(pyz,
+ a.scripts,
+ [],
+ exclude_binaries=True,
+ name='silx',
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=False,
+ console=True,
+ icon='silx.ico')
+
+coll = COLLECT(exe,
+ a.binaries,
+ a.zipfiles,
+ a.datas,
+ strip=False,
+ upx=False,
+ name='silx')
diff --git a/package/windows/silx.ico b/package/windows/silx.ico
new file mode 100644
index 0000000..9db7313
--- /dev/null
+++ b/package/windows/silx.ico
Binary files differ
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 5333b0d..cac1f35 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -9,4 +9,7 @@ Sphinx # To build the documentation in doc/
lxml # For test coverage in run_test.py
coverage # For test coverage in run_test.py
pillow # For loading images in documentation generation
-nbsphinx # For converting ipynb in documentation \ No newline at end of file
+nbsphinx # For converting ipynb in documentation
+
+# Use dev version of PyInstaller to keep hooks up-to-date
+https://github.com/pyinstaller/pyinstaller/archive/develop.zip; sys_platform == "win32"
diff --git a/requirements.txt b/requirements.txt
index d34c0bf..90dc020 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,13 +3,13 @@
--trusted-host www.silx.org
--find-links http://www.silx.org/pub/wheelhouse/
---only-binary numpy,h5py,scipy,PyQt4,PyQt5,PySide
+--only-binary numpy,h5py,scipy,PyQt4,PyQt5
numpy >= 1.8
+fabio >= 0.7
+h5py
scipy # For silx.math.fit demo, silx.image.sift demo, silx.image.sift.test
-fabio >= 0.7 # For silx.io
-h5py # For silx.io
-pyopencl # For silx.opencl
+pyopencl; platform_machine in "i386, x86_64" # For silx.opencl
Mako # For pyopencl reduction
qtconsole # For silx.gui.console
matplotlib >= 1.2.0 # For silx.gui.plot
@@ -17,7 +17,7 @@ PyOpenGL # For silx.gui.plot3d
Pillow # For silx.opencl.image.test
python-dateutil # For silx.gui.plot
-# PyQt4, PyQt5 or PySide # For silx.gui
+# PyQt5, PySide2 or PyQt4 # For silx.gui
# Try to install a Qt binding from a wheel
# This is no available for all configurations
diff --git a/run_tests.py b/run_tests.py
index 3b9a71a..bea6625 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -342,155 +342,157 @@ def get_test_options(project_module):
return test_options
-PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
-PROJECT_NAME = get_project_name(PROJECT_DIR)
-logger.info("Project name: %s", PROJECT_NAME)
+if __name__ == "__main__": # Needed for multiprocessing support on Windows
+ PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
+ PROJECT_NAME = get_project_name(PROJECT_DIR)
+ logger.info("Project name: %s", PROJECT_NAME)
-project_module = import_project_module(PROJECT_NAME, PROJECT_DIR)
-PROJECT_VERSION = getattr(project_module, 'version', '')
-PROJECT_PATH = project_module.__path__[0]
+ project_module = import_project_module(PROJECT_NAME, PROJECT_DIR)
+ PROJECT_VERSION = getattr(project_module, 'version', '')
+ PROJECT_PATH = project_module.__path__[0]
-test_options = get_test_options(project_module)
-"""Contains extra configuration for the tests."""
+ test_options = get_test_options(project_module)
+ """Contains extra configuration for the tests."""
-epilog = """Environment variables:
-WITH_QT_TEST=False to disable graphical tests
-SILX_OPENCL=False to disable OpenCL tests
-SILX_TEST_LOW_MEM=True to disable tests taking large amount of memory
-GPU=False to disable the use of a GPU with OpenCL test
-WITH_GL_TEST=False to disable tests using OpenGL
-"""
-parser = ArgumentParser(description='Run the tests.',
- epilog=epilog)
-
-parser.add_argument("--installed",
- action="store_true", dest="installed", default=False,
- help=("Test the installed version instead of" +
- "building from the source"))
-parser.add_argument("-c", "--coverage", dest="coverage",
- action="store_true", default=False,
- help=("Report code coverage" +
- "(requires 'coverage' and 'lxml' module)"))
-parser.add_argument("-m", "--memprofile", dest="memprofile",
- action="store_true", default=False,
- help="Report memory profiling")
-parser.add_argument("-v", "--verbose", default=0,
- action="count", dest="verbose",
- help="Increase verbosity. Option -v prints additional " +
- "INFO messages. Use -vv for full verbosity, " +
- "including debug messages and test help strings.")
-parser.add_argument("--qt-binding", dest="qt_binding", default=None,
- help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
-if test_options is not None:
- test_options.add_parser_argument(parser)
-
-default_test_name = "%s.test.suite" % PROJECT_NAME
-parser.add_argument("test_name", nargs='*',
- default=(default_test_name,),
- help="Test names to run (Default: %s)" % default_test_name)
-options = parser.parse_args()
-sys.argv = [sys.argv[0]]
-
-
-test_verbosity = 1
-use_buffer = True
-if options.verbose == 1:
- logging.root.setLevel(logging.INFO)
- logger.info("Set log level: INFO")
- test_verbosity = 2
- use_buffer = False
-elif options.verbose > 1:
- logging.root.setLevel(logging.DEBUG)
- logger.info("Set log level: DEBUG")
- test_verbosity = 2
- use_buffer = False
-
-if options.coverage:
- logger.info("Running test-coverage")
- import coverage
- omits = ["*test*", "*third_party*", "*/setup.py",
- # temporary test modules (silx.math.fit.test.test_fitmanager)
- "*customfun.py", ]
- try:
- cov = coverage.Coverage(omit=omits)
- except AttributeError:
- cov = coverage.coverage(omit=omits)
- cov.start()
-
-if options.qt_binding:
- binding = options.qt_binding.lower()
- if binding == "pyqt4":
- logger.info("Force using PyQt4")
- if sys.version < "3.0.0":
- try:
- import sip
- sip.setapi("QString", 2)
- sip.setapi("QVariant", 2)
- except Exception:
- logger.warning("Cannot set sip API")
- import PyQt4.QtCore # noqa
- elif binding == "pyqt5":
- logger.info("Force using PyQt5")
- import PyQt5.QtCore # noqa
- elif binding == "pyside":
- logger.info("Force using PySide")
- import PySide.QtCore # noqa
- elif binding == "pyside2":
- logger.info("Force using PySide2")
- import PySide2.QtCore # noqa
+
+ epilog = """Environment variables:
+ WITH_QT_TEST=False to disable graphical tests
+ SILX_OPENCL=False to disable OpenCL tests
+ SILX_TEST_LOW_MEM=True to disable tests taking large amount of memory
+ GPU=False to disable the use of a GPU with OpenCL test
+ WITH_GL_TEST=False to disable tests using OpenGL
+ """
+ parser = ArgumentParser(description='Run the tests.',
+ epilog=epilog)
+
+ parser.add_argument("--installed",
+ action="store_true", dest="installed", default=False,
+ help=("Test the installed version instead of" +
+ "building from the source"))
+ parser.add_argument("-c", "--coverage", dest="coverage",
+ action="store_true", default=False,
+ help=("Report code coverage" +
+ "(requires 'coverage' and 'lxml' module)"))
+ parser.add_argument("-m", "--memprofile", dest="memprofile",
+ action="store_true", default=False,
+ help="Report memory profiling")
+ parser.add_argument("-v", "--verbose", default=0,
+ action="count", dest="verbose",
+ help="Increase verbosity. Option -v prints additional " +
+ "INFO messages. Use -vv for full verbosity, " +
+ "including debug messages and test help strings.")
+ parser.add_argument("--qt-binding", dest="qt_binding", default=None,
+ help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
+ if test_options is not None:
+ test_options.add_parser_argument(parser)
+
+ default_test_name = "%s.test.suite" % PROJECT_NAME
+ parser.add_argument("test_name", nargs='*',
+ default=(default_test_name,),
+ help="Test names to run (Default: %s)" % default_test_name)
+ options = parser.parse_args()
+ sys.argv = [sys.argv[0]]
+
+
+ test_verbosity = 1
+ use_buffer = True
+ if options.verbose == 1:
+ logging.root.setLevel(logging.INFO)
+ logger.info("Set log level: INFO")
+ test_verbosity = 2
+ use_buffer = False
+ elif options.verbose > 1:
+ logging.root.setLevel(logging.DEBUG)
+ logger.info("Set log level: DEBUG")
+ test_verbosity = 2
+ use_buffer = False
+
+ if options.coverage:
+ logger.info("Running test-coverage")
+ import coverage
+ omits = ["*test*", "*third_party*", "*/setup.py",
+ # temporary test modules (silx.math.fit.test.test_fitmanager)
+ "*customfun.py", ]
+ try:
+ cov = coverage.Coverage(omit=omits)
+ except AttributeError:
+ cov = coverage.coverage(omit=omits)
+ cov.start()
+
+ if options.qt_binding:
+ binding = options.qt_binding.lower()
+ if binding == "pyqt4":
+ logger.info("Force using PyQt4")
+ if sys.version < "3.0.0":
+ try:
+ import sip
+ sip.setapi("QString", 2)
+ sip.setapi("QVariant", 2)
+ except Exception:
+ logger.warning("Cannot set sip API")
+ import PyQt4.QtCore # noqa
+ elif binding == "pyqt5":
+ logger.info("Force using PyQt5")
+ import PyQt5.QtCore # noqa
+ elif binding == "pyside":
+ logger.info("Force using PySide")
+ import PySide.QtCore # noqa
+ elif binding == "pyside2":
+ logger.info("Force using PySide2")
+ import PySide2.QtCore # noqa
+ else:
+ raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
+
+ # Run the tests
+ runnerArgs = {}
+ runnerArgs["verbosity"] = test_verbosity
+ runnerArgs["buffer"] = use_buffer
+ if options.memprofile:
+ runnerArgs["resultclass"] = ProfileTextTestResult
else:
- raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
-
-# Run the tests
-runnerArgs = {}
-runnerArgs["verbosity"] = test_verbosity
-runnerArgs["buffer"] = use_buffer
-if options.memprofile:
- runnerArgs["resultclass"] = ProfileTextTestResult
-else:
- runnerArgs["resultclass"] = TextTestResultWithSkipList
-runner = unittest.TextTestRunner(**runnerArgs)
+ runnerArgs["resultclass"] = TextTestResultWithSkipList
+ runner = unittest.TextTestRunner(**runnerArgs)
-logger.warning("Test %s %s from %s",
- PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH)
+ logger.warning("Test %s %s from %s",
+ PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH)
-test_module_name = PROJECT_NAME + '.test'
-logger.info('Import %s', test_module_name)
-test_module = importer(test_module_name)
-test_suite = unittest.TestSuite()
+ test_module_name = PROJECT_NAME + '.test'
+ logger.info('Import %s', test_module_name)
+ test_module = importer(test_module_name)
+ test_suite = unittest.TestSuite()
-if test_options is not None:
- # Configure the test options according to the command lines and the the environment
- test_options.configure(options)
-else:
- logger.warning("No test options available.")
+ if test_options is not None:
+ # Configure the test options according to the command lines and the the environment
+ test_options.configure(options)
+ else:
+ logger.warning("No test options available.")
-if not options.test_name:
- # Do not use test loader to avoid cryptic exception
- # when an error occur during import
- project_test_suite = getattr(test_module, 'suite')
- test_suite.addTest(project_test_suite())
-else:
- test_suite.addTest(
- unittest.defaultTestLoader.loadTestsFromNames(options.test_name))
+ if not options.test_name:
+ # Do not use test loader to avoid cryptic exception
+ # when an error occur during import
+ project_test_suite = getattr(test_module, 'suite')
+ test_suite.addTest(project_test_suite())
+ else:
+ test_suite.addTest(
+ unittest.defaultTestLoader.loadTestsFromNames(options.test_name))
-# Display the result when using CTRL-C
-unittest.installHandler()
+ # Display the result when using CTRL-C
+ unittest.installHandler()
-result = runner.run(test_suite)
+ result = runner.run(test_suite)
-if result.wasSuccessful():
- exit_status = 0
-else:
- exit_status = 1
+ if result.wasSuccessful():
+ exit_status = 0
+ else:
+ exit_status = 1
-if options.coverage:
- cov.stop()
- cov.save()
- with open("coverage.rst", "w") as fn:
- fn.write(report_rst(cov, PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH))
+ if options.coverage:
+ cov.stop()
+ cov.save()
+ with open("coverage.rst", "w") as fn:
+ fn.write(report_rst(cov, PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH))
-sys.exit(exit_status)
+ sys.exit(exit_status)
diff --git a/setup.cfg b/setup.cfg
index 861a9f5..8bfd5a1 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff --git a/setup.py b/setup.py
index 69a6dca..5ce0435 100644
--- a/setup.py
+++ b/setup.py
@@ -849,17 +849,39 @@ def get_project_configuration(dry_run):
numpy_requested_version = ""
else:
from numpy.version import version as numpy_version
- numpy_requested_version = " >= %s" % numpy_version
+ numpy_requested_version = ">=%s" % numpy_version
logger.info("Install requires: numpy %s", numpy_requested_version)
install_requires = [
# for most of the computation
- "numpy %s" % numpy_requested_version,
- # for the script launcher
- "setuptools"]
+ "numpy%s" % numpy_requested_version,
+ # for the script launcher and pkg_resources
+ "setuptools",
+ # for io support
+ "h5py",
+ "fabio>=0.7"]
setup_requires = ["setuptools", "numpy"]
+ # extras requirements: target 'full' to install all dependencies at once
+ full_requires = [
+ # opencl
+ 'pyopencl',
+ 'Mako',
+ # gui
+ 'qtconsole',
+ 'matplotlib>=1.2.0',
+ 'PyOpenGL',
+ 'python-dateutil',
+ 'PyQt5',
+ # extra
+ 'scipy',
+ 'Pillow']
+
+ extras_require = {
+ 'full': full_requires,
+ }
+
package_data = {
# Resources files for silx
'silx.resources': [
@@ -875,6 +897,7 @@ def get_project_configuration(dry_run):
'opencl/sift/*.cl',
'opencl/codec/*.cl',
'gui/colormaps/*.npy'],
+ 'silx.examples': ['*.png'],
}
entry_points = {
@@ -915,6 +938,7 @@ def get_project_configuration(dry_run):
long_description=get_readme(),
install_requires=install_requires,
setup_requires=setup_requires,
+ extras_require=extras_require,
cmdclass=cmdclass,
package_data=package_data,
zip_safe=False,
diff --git a/silx.egg-info/PKG-INFO b/silx.egg-info/PKG-INFO
index ecb8d4f..52f365a 100644
--- a/silx.egg-info/PKG-INFO
+++ b/silx.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: silx
-Version: 0.8.0
+Version: 0.9.0
Summary: Software library for X-ray data analysis
Home-page: http://www.silx.org/
Author: data analysis unit
@@ -13,7 +13,7 @@ Description:
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
- It aims at providing reading/writing different file formats, data reduction routines
+ *silx* aims to provide reading/writing tools for different file formats, data reduction routines
and a set of Qt widgets to browse and visualise data.
The current version features:
@@ -41,12 +41,18 @@ Description:
Installation
------------
- To install silx, run:
+ To install silx (and all its dependencies), run:
+
+ .. code-block:: bash
+
+ pip install silx[full]
+
+ To install silx with a minimal set of dependencies, run:
+
+ .. code-block:: bash
- .. code-block:: bash
-
pip install silx
-
+
Or using Anaconda on Linux and MacOS:
.. code-block:: bash
@@ -130,3 +136,4 @@ Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Provides-Extra: full
diff --git a/silx.egg-info/SOURCES.txt b/silx.egg-info/SOURCES.txt
index ca8b4a6..2a926d4 100644
--- a/silx.egg-info/SOURCES.txt
+++ b/silx.egg-info/SOURCES.txt
@@ -12,11 +12,11 @@ stdeb.cfg
version.py
doc/source/changelog.rst
doc/source/conf.py
-doc/source/developers.rst
doc/source/index.rst
doc/source/install.rst
doc/source/license.rst
doc/source/overview.rst
+doc/source/troubleshooting.rst
doc/source/tutorials.rst
doc/source/virtualenv.rst
doc/source/Tutorials/Image.ipynb
@@ -27,9 +27,7 @@ doc/source/Tutorials/fitconfig.rst
doc/source/Tutorials/io.rst
doc/source/Tutorials/specfile_to_hdf5.rst
doc/source/Tutorials/writing_NXdata.rst
-doc/source/Tutorials/.ipynb_checkpoints/Image-checkpoint.ipynb
doc/source/Tutorials/Sift/sift.ipynb
-doc/source/Tutorials/Sift/.ipynb_checkpoints/sift-checkpoint.ipynb
doc/source/Tutorials/img/arraywidget3D_0.png
doc/source/Tutorials/img/arraywidget3D_1.png
doc/source/Tutorials/img/arraywidget5D_0.png
@@ -64,7 +62,6 @@ doc/source/description/img/sift_frame_ROI.png
doc/source/description/img/sift_match1.png
doc/source/description/img/sift_match2.png
doc/source/description/img/sift_orientation.png
-doc/source/ext/snapshotqt_directive.py
doc/source/ext/sphinxext-archive.py
doc/source/img/silx.ico
doc/source/img/silx_large.png
@@ -79,7 +76,6 @@ doc/source/modules/gui/gallery.rst
doc/source/modules/gui/icons.rst
doc/source/modules/gui/index.rst
doc/source/modules/gui/qt.rst
-doc/source/modules/gui/update_icons_rst.py
doc/source/modules/gui/utils.rst
doc/source/modules/gui/data/arraytable.rst
doc/source/modules/gui/data/dataviewer.rst
@@ -94,11 +90,14 @@ doc/source/modules/gui/data/img/NumpyAxesSelector.png
doc/source/modules/gui/dialog/abstractdatafiledialog.rst
doc/source/modules/gui/dialog/colormapdialog.rst
doc/source/modules/gui/dialog/datafiledialog.rst
+doc/source/modules/gui/dialog/datasetdialog.rst
doc/source/modules/gui/dialog/groupdialog.rst
doc/source/modules/gui/dialog/imagefiledialog.rst
doc/source/modules/gui/dialog/index.rst
doc/source/modules/gui/dialog/img/abstractdatafiledialog.png
+doc/source/modules/gui/dialog/img/colormapdialog.png
doc/source/modules/gui/dialog/img/datafiledialog.png
+doc/source/modules/gui/dialog/img/datasetdialog.png
doc/source/modules/gui/dialog/img/groupdialog.png
doc/source/modules/gui/dialog/img/imagefiledialog_edf.png
doc/source/modules/gui/dialog/img/imagefiledialog_h5.png
@@ -120,6 +119,7 @@ doc/source/modules/gui/hdf5/img/Hdf5Example.png
doc/source/modules/gui/hdf5/img/Hdf5TreeView.png
doc/source/modules/gui/img/IPythonDockWidget.png
doc/source/modules/gui/img/IPythonWidget.png
+doc/source/modules/gui/plot/compareimages.rst
doc/source/modules/gui/plot/compleximageview.rst
doc/source/modules/gui/plot/dev.rst
doc/source/modules/gui/plot/getting_started.rst
@@ -148,7 +148,9 @@ doc/source/modules/gui/plot/actions/img/fftAction0.png
doc/source/modules/gui/plot/actions/img/fftAction1.png
doc/source/modules/gui/plot/actions/img/shiftAction0.png
doc/source/modules/gui/plot/actions/img/shiftAction3.png
+doc/source/modules/gui/plot/img/CompareImages.png
doc/source/modules/gui/plot/img/ComplexImageView.png
+doc/source/modules/gui/plot/img/CurveLegendsWidget.png
doc/source/modules/gui/plot/img/ImageView.png
doc/source/modules/gui/plot/img/LimitsToolBar.png
doc/source/modules/gui/plot/img/Plot1D.png
@@ -189,16 +191,20 @@ doc/source/modules/gui/plot3d/scenewindow.rst
doc/source/modules/gui/plot3d/sfviewparamtree.rst
doc/source/modules/gui/plot3d/tools.rst
doc/source/modules/gui/plot3d/utils.rst
+doc/source/modules/gui/plot3d/img/GroupPropertiesWidget.png
doc/source/modules/gui/plot3d/img/Plot3DWidget.png
doc/source/modules/gui/plot3d/img/Plot3DWindow.png
+doc/source/modules/gui/plot3d/img/PositionInfoWidget.png
doc/source/modules/gui/plot3d/img/SFViewParamTree.png
doc/source/modules/gui/plot3d/img/ScalarFieldView.png
doc/source/modules/gui/plot3d/img/SceneWidget.png
doc/source/modules/gui/plot3d/img/SceneWindow.png
+doc/source/modules/gui/widgets/flowlayout.rst
doc/source/modules/gui/widgets/framebrowser.rst
doc/source/modules/gui/widgets/index.rst
doc/source/modules/gui/widgets/periodictable.rst
doc/source/modules/gui/widgets/printpreview.rst
+doc/source/modules/gui/widgets/rangeslider.rst
doc/source/modules/gui/widgets/tablewidget.rst
doc/source/modules/gui/widgets/threadpoolpushbutton.rst
doc/source/modules/gui/widgets/waitingpushbutton.rst
@@ -207,6 +213,7 @@ doc/source/modules/gui/widgets/img/HorizontalSliderWithBrowser.png
doc/source/modules/gui/widgets/img/PeriodicCombo.png
doc/source/modules/gui/widgets/img/PeriodicList.png
doc/source/modules/gui/widgets/img/PeriodicTable.png
+doc/source/modules/gui/widgets/img/RangeSlider.png
doc/source/modules/gui/widgets/img/TableWidget.png
doc/source/modules/gui/widgets/img/ThreadPoolPushButton.png
doc/source/modules/gui/widgets/img/WaitingPushButton.png
@@ -287,8 +294,9 @@ doc/source/sample_code/img/simplewidget.png
doc/source/sample_code/img/stackView.png
doc/source/sample_code/img/syncaxis.png
doc/source/sample_code/img/viewer3DVolume.png
-examples/blissPlot.py
+examples/__init__.py
examples/colormapDialog.py
+examples/compareImages.py
examples/customDataView.py
examples/customHdf5TreeModel.py
examples/fft.png
@@ -303,12 +311,11 @@ examples/plot3dContextMenu.py
examples/plot3dSceneWindow.py
examples/plotClearAction.py
examples/plotContextMenu.py
-examples/plotGL32.py
+examples/plotCurveLegendWidget.py
examples/plotInteractiveImageROI.py
examples/plotItemsSelector.py
examples/plotLimits.py
examples/plotStats.py
-examples/plotTimeSeries.py
examples/plotUpdateCurveFromThread.py
examples/plotUpdateImageFromThread.py
examples/plotWidget.py
@@ -344,6 +351,12 @@ package/desktop/org.silx.SilxView.desktop
package/desktop/silx.png
package/desktop/silx.svg
package/desktop/silx.xml
+package/windows/README.rst
+package/windows/bootstrap-silx-view.py
+package/windows/bootstrap.py
+package/windows/pyinstaller-silx-view.spec
+package/windows/pyinstaller.spec
+package/windows/silx.ico
qtdesigner_plugins/README.rst
qtdesigner_plugins/plot1dplugin.py
qtdesigner_plugins/plot2dplugin.py
@@ -416,6 +429,7 @@ silx/gui/data/test/test_textformatter.py
silx/gui/dialog/AbstractDataFileDialog.py
silx/gui/dialog/ColormapDialog.py
silx/gui/dialog/DataFileDialog.py
+silx/gui/dialog/DatasetDialog.py
silx/gui/dialog/FileTypeComboBox.py
silx/gui/dialog/GroupDialog.py
silx/gui/dialog/ImageFileDialog.py
@@ -457,6 +471,7 @@ silx/gui/plot/ColorBar.py
silx/gui/plot/Colormap.py
silx/gui/plot/ColormapDialog.py
silx/gui/plot/Colors.py
+silx/gui/plot/CompareImages.py
silx/gui/plot/ComplexImageView.py
silx/gui/plot/CurvesROIWidget.py
silx/gui/plot/ImageView.py
@@ -488,10 +503,10 @@ silx/gui/plot/_utils/panzoom.py
silx/gui/plot/_utils/setup.py
silx/gui/plot/_utils/ticklayout.py
silx/gui/plot/_utils/test/__init__.py
-silx/gui/plot/_utils/test/testColormap.py
silx/gui/plot/_utils/test/test_dtime_ticklayout.py
silx/gui/plot/_utils/test/test_ticklayout.py
silx/gui/plot/actions/PlotAction.py
+silx/gui/plot/actions/PlotToolAction.py
silx/gui/plot/actions/__init__.py
silx/gui/plot/actions/control.py
silx/gui/plot/actions/fit.py
@@ -523,7 +538,6 @@ silx/gui/plot/items/roi.py
silx/gui/plot/items/scatter.py
silx/gui/plot/items/shape.py
silx/gui/plot/matplotlib/Colormap.py
-silx/gui/plot/matplotlib/ModestImage.py
silx/gui/plot/matplotlib/__init__.py
silx/gui/plot/stats/__init__.py
silx/gui/plot/stats/stats.py
@@ -531,6 +545,7 @@ silx/gui/plot/stats/statshandler.py
silx/gui/plot/test/__init__.py
silx/gui/plot/test/testAlphaSlider.py
silx/gui/plot/test/testColorBar.py
+silx/gui/plot/test/testCompareImages.py
silx/gui/plot/test/testComplexImageView.py
silx/gui/plot/test/testCurvesROIWidget.py
silx/gui/plot/test/testImageView.py
@@ -552,16 +567,17 @@ silx/gui/plot/test/testStackView.py
silx/gui/plot/test/testStats.py
silx/gui/plot/test/testUtilsAxis.py
silx/gui/plot/test/utils.py
+silx/gui/plot/tools/CurveLegendsWidget.py
silx/gui/plot/tools/LimitsToolBar.py
silx/gui/plot/tools/PositionInfo.py
silx/gui/plot/tools/__init__.py
silx/gui/plot/tools/roi.py
silx/gui/plot/tools/toolbars.py
-silx/gui/plot/tools/profile/ImageProfileToolBar.py
silx/gui/plot/tools/profile/ScatterProfileToolBar.py
silx/gui/plot/tools/profile/_BaseProfileToolBar.py
silx/gui/plot/tools/profile/__init__.py
silx/gui/plot/tools/test/__init__.py
+silx/gui/plot/tools/test/testCurveLegendsWidget.py
silx/gui/plot/tools/test/testROI.py
silx/gui/plot/tools/test/testScatterProfileToolBar.py
silx/gui/plot/tools/test/testTools.py
@@ -586,6 +602,7 @@ silx/gui/plot3d/actions/io.py
silx/gui/plot3d/actions/mode.py
silx/gui/plot3d/actions/viewpoint.py
silx/gui/plot3d/items/__init__.py
+silx/gui/plot3d/items/_pick.py
silx/gui/plot3d/items/clipplane.py
silx/gui/plot3d/items/core.py
silx/gui/plot3d/items/image.py
@@ -602,7 +619,6 @@ silx/gui/plot3d/scene/event.py
silx/gui/plot3d/scene/function.py
silx/gui/plot3d/scene/interaction.py
silx/gui/plot3d/scene/primitives.py
-silx/gui/plot3d/scene/setup.py
silx/gui/plot3d/scene/text.py
silx/gui/plot3d/scene/transform.py
silx/gui/plot3d/scene/utils.py
@@ -614,10 +630,14 @@ silx/gui/plot3d/scene/test/test_utils.py
silx/gui/plot3d/test/__init__.py
silx/gui/plot3d/test/testGL.py
silx/gui/plot3d/test/testScalarFieldView.py
+silx/gui/plot3d/test/testSceneWidgetPicking.py
silx/gui/plot3d/tools/GroupPropertiesWidget.py
+silx/gui/plot3d/tools/PositionInfoWidget.py
silx/gui/plot3d/tools/ViewpointTools.py
silx/gui/plot3d/tools/__init__.py
silx/gui/plot3d/tools/toolbars.py
+silx/gui/plot3d/tools/test/__init__.py
+silx/gui/plot3d/tools/test/testPositionInfoWidget.py
silx/gui/plot3d/utils/__init__.py
silx/gui/plot3d/utils/mng.py
silx/gui/qt/__init__.py
@@ -626,6 +646,7 @@ silx/gui/qt/_pyside_dynamic.py
silx/gui/qt/_pyside_missing.py
silx/gui/qt/_qt.py
silx/gui/qt/_utils.py
+silx/gui/qt/inspect.py
silx/gui/test/__init__.py
silx/gui/test/test_colors.py
silx/gui/test/test_console.py
@@ -633,19 +654,22 @@ silx/gui/test/test_icons.py
silx/gui/test/test_qt.py
silx/gui/test/utils.py
silx/gui/utils/__init__.py
-silx/gui/utils/_image.py
silx/gui/utils/concurrent.py
+silx/gui/utils/image.py
+silx/gui/utils/testutils.py
silx/gui/utils/test/__init__.py
silx/gui/utils/test/test_async.py
silx/gui/utils/test/test_image.py
silx/gui/widgets/BoxLayoutDockWidget.py
silx/gui/widgets/FloatEdit.py
+silx/gui/widgets/FlowLayout.py
silx/gui/widgets/FrameBrowser.py
silx/gui/widgets/HierarchicalTableView.py
silx/gui/widgets/MedianFilterDialog.py
silx/gui/widgets/PeriodicTable.py
silx/gui/widgets/PrintGeometryDialog.py
silx/gui/widgets/PrintPreview.py
+silx/gui/widgets/RangeSlider.py
silx/gui/widgets/TableWidget.py
silx/gui/widgets/ThreadPoolPushButton.py
silx/gui/widgets/WaitingPushButton.py
@@ -653,10 +677,12 @@ silx/gui/widgets/__init__.py
silx/gui/widgets/setup.py
silx/gui/widgets/test/__init__.py
silx/gui/widgets/test/test_boxlayoutdockwidget.py
+silx/gui/widgets/test/test_flowlayout.py
silx/gui/widgets/test/test_framebrowser.py
silx/gui/widgets/test/test_hierarchicaltableview.py
silx/gui/widgets/test/test_periodictable.py
silx/gui/widgets/test/test_printpreview.py
+silx/gui/widgets/test/test_rangeslider.py
silx/gui/widgets/test/test_tablewidget.py
silx/gui/widgets/test/test_threadpoolpushbutton.py
silx/image/__init__.py
@@ -909,6 +935,28 @@ silx/resources/gui/icons/colormap-range.png
silx/resources/gui/icons/colormap-range.svg
silx/resources/gui/icons/colormap.png
silx/resources/gui/icons/colormap.svg
+silx/resources/gui/icons/compare-align-auto.png
+silx/resources/gui/icons/compare-align-auto.svg
+silx/resources/gui/icons/compare-align-center.png
+silx/resources/gui/icons/compare-align-center.svg
+silx/resources/gui/icons/compare-align-origin.png
+silx/resources/gui/icons/compare-align-origin.svg
+silx/resources/gui/icons/compare-align-stretch.png
+silx/resources/gui/icons/compare-align-stretch.svg
+silx/resources/gui/icons/compare-keypoints.png
+silx/resources/gui/icons/compare-keypoints.svg
+silx/resources/gui/icons/compare-mode-a.png
+silx/resources/gui/icons/compare-mode-a.svg
+silx/resources/gui/icons/compare-mode-b.png
+silx/resources/gui/icons/compare-mode-b.svg
+silx/resources/gui/icons/compare-mode-hline.png
+silx/resources/gui/icons/compare-mode-hline.svg
+silx/resources/gui/icons/compare-mode-rb-channel.png
+silx/resources/gui/icons/compare-mode-rb-channel.svg
+silx/resources/gui/icons/compare-mode-rbneg-channel.png
+silx/resources/gui/icons/compare-mode-rbneg-channel.svg
+silx/resources/gui/icons/compare-mode-vline.png
+silx/resources/gui/icons/compare-mode-vline.svg
silx/resources/gui/icons/crop.png
silx/resources/gui/icons/crop.svg
silx/resources/gui/icons/crosshair.png
@@ -991,6 +1039,8 @@ silx/resources/gui/icons/math-fit.png
silx/resources/gui/icons/math-fit.svg
silx/resources/gui/icons/math-imaginary.png
silx/resources/gui/icons/math-imaginary.svg
+silx/resources/gui/icons/math-mean.png
+silx/resources/gui/icons/math-mean.svg
silx/resources/gui/icons/math-normalize.png
silx/resources/gui/icons/math-normalize.svg
silx/resources/gui/icons/math-peak-reset.png
@@ -1241,6 +1291,7 @@ silx/third_party/TiffIO.py
silx/third_party/__init__.py
silx/third_party/concurrent_futures.py
silx/third_party/enum.py
+silx/third_party/modest_image.py
silx/third_party/scipy_spatial.py
silx/third_party/setup.py
silx/third_party/six.py
diff --git a/silx.egg-info/requires.txt b/silx.egg-info/requires.txt
index 5dfe5bb..e7cfb25 100644
--- a/silx.egg-info/requires.txt
+++ b/silx.egg-info/requires.txt
@@ -1,2 +1,15 @@
-numpy >= 1.8.2
+numpy>=1.15.3
setuptools
+h5py
+fabio>=0.7
+
+[full]
+pyopencl
+Mako
+qtconsole
+matplotlib>=1.2.0
+PyOpenGL
+python-dateutil
+PyQt5
+scipy
+Pillow
diff --git a/silx/_config.py b/silx/_config.py
index 932aec1..02bbf4e 100644
--- a/silx/_config.py
+++ b/silx/_config.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -81,3 +81,32 @@ class Config(object):
.. versionadded:: 0.8
"""
+
+ DEFAULT_PLOT_CURVE_COLORS = ['#000000', # black
+ '#0000ff', # blue
+ '#ff0000', # red
+ '#00ff00', # green
+ '#ff66ff', # pink
+ '#ffff00', # yellow
+ '#a52a2a', # brown
+ '#00ffff', # cyan
+ '#ff00ff', # magenta
+ '#ff9900', # orange
+ '#6600ff', # violet
+ '#a0a0a4', # grey
+ '#000080', # darkBlue
+ '#800000', # darkRed
+ '#008000', # darkGreen
+ '#008080', # darkCyan
+ '#800080', # darkMagenta
+ '#808000', # darkYellow
+ '#660000'] # darkBrown
+ """Default list of colors for plot widget displaying curves.
+
+ It will have an influence on:
+
+ - :class:`silx.gui.plot.PlotWidget`
+
+ .. versionadded:: 0.9
+ """
+
diff --git a/silx/app/convert.py b/silx/app/convert.py
index cd48deb..a8c2783 100644
--- a/silx/app/convert.py
+++ b/silx/app/convert.py
@@ -57,22 +57,22 @@ def c_format_string_to_re(pattern_string):
:param pattern_string: C style format string with integer patterns
(e.g. "%d", "%04d").
Not supported: fixed length padded with whitespaces (e.g "%4d", "%-4d")
- :return: Equivalent regular expression (e.g. "\d+", "\d{4}")
+ :return: Equivalent regular expression (e.g. "\\d+", "\\d{4}")
"""
# escape dots and backslashes
pattern_string = pattern_string.replace("\\", "\\\\")
- pattern_string = pattern_string.replace(".", "\.")
+ pattern_string = pattern_string.replace(".", r"\.")
# %d
- pattern_string = pattern_string.replace("%d", "([-+]?\d+)")
+ pattern_string = pattern_string.replace("%d", r"([-+]?\d+)")
# %0nd
- for sub_pattern in re.findall("%0\d+d", pattern_string):
- n = int(re.search("%0(\d+)d", sub_pattern).group(1))
+ for sub_pattern in re.findall(r"%0\d+d", pattern_string):
+ n = int(re.search(r"%0(\d+)d", sub_pattern).group(1))
if n == 1:
- re_sub_pattern = "([+-]?\d)"
+ re_sub_pattern = r"([+-]?\d)"
else:
- re_sub_pattern = "([\d+-]\d{%d})" % (n - 1)
+ re_sub_pattern = r"([\d+-]\d{%d})" % (n - 1)
pattern_string = pattern_string.replace(sub_pattern, re_sub_pattern, 1)
return pattern_string
diff --git a/silx/app/test_.py b/silx/app/test_.py
index 2623c04..a8e58bf 100644
--- a/silx/app/test_.py
+++ b/silx/app/test_.py
@@ -1,6 +1,6 @@
# coding: utf-8
# /*##########################################################################
-# Copyright (C) 2016 European Synchrotron Radiation Facility
+# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -99,7 +99,7 @@ def main(argv):
"INFO messages. Use -vv for full verbosity, " +
"including debug messages and test help strings.")
parser.add_argument("--qt-binding", dest="qt_binding", default=None,
- help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
+ help="Force using a Qt binding: 'PyQt5' or 'PySide2'")
utils.test_options.add_parser_argument(parser)
options = parser.parse_args(argv[1:])
@@ -128,6 +128,9 @@ def main(argv):
elif binding == "pyside":
_logger.info("Force using PySide")
import PySide.QtCore # noqa
+ elif binding == "pyside2":
+ _logger.info("Force using PySide2")
+ import PySide2.QtCore # noqa
else:
raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
diff --git a/silx/app/view/About.py b/silx/app/view/About.py
index 07306ef..4b804f2 100644
--- a/silx/app/view/About.py
+++ b/silx/app/view/About.py
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "05/06/2018"
+__date__ = "05/07/2018"
import sys
@@ -147,6 +147,15 @@ class About(qt.QDialog):
template = '<b>%s</b> is <font color="red">not loaded</font>'
return template % name
+ @staticmethod
+ def __formatOptionalFilters(name, isAvailable):
+ """Utils to format availability of features"""
+ if isAvailable:
+ template = '<b>%s</b> is <font color="green">available</font>'
+ else:
+ template = '<b>%s</b> is <font color="red">not available</font>'
+ return template % name
+
def __updateText(self):
"""Update the content of the dialog according to the settings."""
import silx._version
@@ -174,14 +183,29 @@ class About(qt.QDialog):
</p>
"""
- hdf5pluginLoaded = "hdf5plugin" in sys.modules
- fabioLoaded = "fabio" in sys.modules
- h5pyLoaded = "h5py" in sys.modules
-
- optional_lib = []
- optional_lib.append(self.__formatOptionalLibraries("FabIO", fabioLoaded))
- optional_lib.append(self.__formatOptionalLibraries("H5py", h5pyLoaded))
- optional_lib.append(self.__formatOptionalLibraries("hdf5plugin", hdf5pluginLoaded))
+ optionals = []
+ optionals.append(self.__formatOptionalLibraries("H5py", "h5py" in sys.modules))
+ optionals.append(self.__formatOptionalLibraries("FabIO", "fabio" in sys.modules))
+
+ try:
+ import h5py.version
+ if h5py.version.hdf5_version_tuple >= (1, 10, 2):
+ # Previous versions only return True if the filter was first used
+ # to decode a dataset
+ import h5py.h5z
+ FILTER_LZ4 = 32004
+ FILTER_BITSHUFFLE = 32008
+ filters = [
+ ("HDF5 LZ4 filter", FILTER_LZ4),
+ ("HDF5 Bitshuffle filter", FILTER_BITSHUFFLE),
+ ]
+ for name, filterId in filters:
+ isAvailable = h5py.h5z.filter_avail(filterId)
+ optionals.append(self.__formatOptionalFilters(name, isAvailable))
+ else:
+ optionals.append(self.__formatOptionalLibraries("hdf5plugin", "hdf5plugin" in sys.modules))
+ except ImportError:
+ pass
# Access to the logo in SVG or PNG
logo = icons.getQFile("../logo/silx")
@@ -194,7 +218,7 @@ class About(qt.QDialog):
qt_binding=qt.BINDING,
qt_version=qt.qVersion(),
python_version=sys.version.replace("\n", "<br />"),
- optional_lib="<br />".join(optional_lib),
+ optional_lib="<br />".join(optionals),
silx_image_path=logo.fileName()
)
diff --git a/silx/app/view/CustomNxdataWidget.py b/silx/app/view/CustomNxdataWidget.py
index 02ae6c0..72c9940 100644
--- a/silx/app/view/CustomNxdataWidget.py
+++ b/silx/app/view/CustomNxdataWidget.py
@@ -944,10 +944,10 @@ class CustomNxdataWidget(qt.QTreeView):
if edited:
item.setAxesDatasets(datasets)
- dataset = item.getSignalDataset()
- newDataset = self.__replaceDatasetRoot(dataset, removedRoot, loadedRoot)
- if dataset is not newDataset:
- item.setSignalDataset(newDataset)
+ dataset = item.getSignalDataset()
+ newDataset = self.__replaceDatasetRoot(dataset, removedRoot, loadedRoot)
+ if dataset is not newDataset:
+ item.setSignalDataset(newDataset)
def __replaceDatasetRoot(self, dataset, fromRoot, toRoot):
"""
diff --git a/silx/app/view/DataPanel.py b/silx/app/view/DataPanel.py
index 0653f74..5d87381 100644
--- a/silx/app/view/DataPanel.py
+++ b/silx/app/view/DataPanel.py
@@ -25,9 +25,10 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "06/06/2018"
+__date__ = "12/10/2018"
import logging
+import os.path
from silx.gui import qt
from silx.gui.data.DataViewerFrame import DataViewerFrame
@@ -45,6 +46,26 @@ class _HeaderLabel(qt.QLabel):
def sizeHint(self):
return qt.QSize(10, 30)
+ def minimumSizeHint(self):
+ return qt.QSize(10, 30)
+
+ def setData(self, filename, path):
+ if filename == "" and path == "":
+ text = ""
+ elif filename == "":
+ text = path
+ else:
+ text = "%s::%s" % (filename, path)
+ self.setText(text)
+ tooltip = ""
+ template = "<li><b>%s</b>: %s</li>"
+ tooltip += template % ("Directory", os.path.dirname(filename))
+ tooltip += template % ("File name", os.path.basename(filename))
+ tooltip += template % ("Data path", path)
+ tooltip = "<ul>%s</ul>" % tooltip
+ tooltip = "<html>%s</html>" % tooltip
+ self.setToolTip(tooltip)
+
def paintEvent(self, event):
painter = qt.QPainter(self)
@@ -101,14 +122,14 @@ class DataPanel(qt.QWidget):
self.__dataTitle.setVisible(True)
if hasattr(data, "name"):
if hasattr(data, "file"):
- label = str(data.file.filename)
- label += "::"
+ filename = str(data.file.filename)
else:
- label = ""
- label += data.name
+ filename = ""
+ path = data.name
else:
- label = ""
- self.__dataTitle.setText(label)
+ filename = ""
+ path = ""
+ self.__dataTitle.setData(filename, path)
def setCustomDataItem(self, item):
self.__customNxdataItem = item
diff --git a/silx/app/view/Viewer.py b/silx/app/view/Viewer.py
index 8f5db60..88ff989 100644
--- a/silx/app/view/Viewer.py
+++ b/silx/app/view/Viewer.py
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "25/06/2018"
+__date__ = "08/10/2018"
import os
@@ -146,6 +146,18 @@ class Viewer(qt.QMainWindow):
toolbar.setStyleSheet("QToolBar { border: 0px }")
action = qt.QAction(toolbar)
+ action.setIcon(icons.getQIcon("view-refresh"))
+ action.setText("Refresh")
+ action.setToolTip("Refresh all selected items")
+ action.triggered.connect(self.__refreshSelected)
+ action.setShortcut(qt.QKeySequence(qt.Qt.ControlModifier + qt.Qt.Key_Plus))
+ toolbar.addAction(action)
+ treeView.addAction(action)
+ self.__refreshAction = action
+
+ toolbar.addSeparator()
+
+ action = qt.QAction(toolbar)
action.setIcon(icons.getQIcon("tree-expand-all"))
action.setText("Expand all")
action.setToolTip("Expand all selected items")
@@ -173,6 +185,135 @@ class Viewer(qt.QMainWindow):
layout.addWidget(treeView)
return widget
+ def __refreshSelected(self):
+ """Refresh all selected items
+ """
+ qt.QApplication.setOverrideCursor(qt.Qt.WaitCursor)
+
+ selection = self.__treeview.selectionModel()
+ indexes = selection.selectedIndexes()
+ selectedItems = []
+ model = self.__treeview.model()
+ h5files = set([])
+ while len(indexes) > 0:
+ index = indexes.pop(0)
+ if index.column() != 0:
+ continue
+ h5 = model.data(index, role=silx.gui.hdf5.Hdf5TreeModel.H5PY_OBJECT_ROLE)
+ rootIndex = index
+ # Reach the root of the tree
+ while rootIndex.parent().isValid():
+ rootIndex = rootIndex.parent()
+ rootRow = rootIndex.row()
+ relativePath = self.__getRelativePath(model, rootIndex, index)
+ selectedItems.append((rootRow, relativePath))
+ h5files.add(h5.file)
+
+ if len(h5files) == 0:
+ qt.QApplication.restoreOverrideCursor()
+ return
+
+ model = self.__treeview.findHdf5TreeModel()
+ for h5 in h5files:
+ self.__synchronizeH5pyObject(h5)
+
+ model = self.__treeview.model()
+ itemSelection = qt.QItemSelection()
+ for rootRow, relativePath in selectedItems:
+ rootIndex = model.index(rootRow, 0, qt.QModelIndex())
+ index = self.__indexFromPath(model, rootIndex, relativePath)
+ if index is None:
+ continue
+ indexEnd = model.index(index.row(), model.columnCount() - 1, index.parent())
+ itemSelection.select(index, indexEnd)
+ selection.select(itemSelection, qt.QItemSelectionModel.ClearAndSelect)
+
+ qt.QApplication.restoreOverrideCursor()
+
+ def __synchronizeH5pyObject(self, h5):
+ model = self.__treeview.findHdf5TreeModel()
+ # This is buggy right now while h5py do not allow to close a file
+ # while references are still used.
+ # FIXME: The architecture have to be reworked to support this feature.
+ # model.synchronizeH5pyObject(h5)
+
+ filename = h5.filename
+ row = model.h5pyObjectRow(h5)
+ index = self.__treeview.model().index(row, 0, qt.QModelIndex())
+ paths = self.__getPathFromExpandedNodes(self.__treeview, index)
+ model.removeH5pyObject(h5)
+ model.insertFile(filename, row)
+ index = self.__treeview.model().index(row, 0, qt.QModelIndex())
+ self.__expandNodesFromPaths(self.__treeview, index, paths)
+
+ def __getRelativePath(self, model, rootIndex, index):
+ """Returns a relative path from an index to his rootIndex.
+
+ If the path is empty the index is also the rootIndex.
+ """
+ path = ""
+ while index.isValid():
+ if index == rootIndex:
+ return path
+ name = model.data(index)
+ if path == "":
+ path = name
+ else:
+ path = name + "/" + path
+ index = index.parent()
+
+ # index is not a children of rootIndex
+ raise ValueError("index is not a children of the rootIndex")
+
+ def __getPathFromExpandedNodes(self, view, rootIndex):
+ """Return relative path from the root index of the extended nodes"""
+ model = view.model()
+ rootPath = None
+ paths = []
+ indexes = [rootIndex]
+ while len(indexes):
+ index = indexes.pop(0)
+ if not view.isExpanded(index):
+ continue
+
+ node = model.data(index, role=silx.gui.hdf5.Hdf5TreeModel.H5PY_ITEM_ROLE)
+ path = node._getCanonicalName()
+ if rootPath is None:
+ rootPath = path
+ path = path[len(rootPath):]
+ paths.append(path)
+
+ for child in range(model.rowCount(index)):
+ childIndex = model.index(child, 0, index)
+ indexes.append(childIndex)
+ return paths
+
+ def __indexFromPath(self, model, rootIndex, path):
+ elements = path.split("/")
+ if elements[0] == "":
+ elements.pop(0)
+ index = rootIndex
+ while len(elements) != 0:
+ element = elements.pop(0)
+ found = False
+ for child in range(model.rowCount(index)):
+ childIndex = model.index(child, 0, index)
+ name = model.data(childIndex)
+ if element == name:
+ index = childIndex
+ found = True
+ break
+ if not found:
+ return None
+ return index
+
+ def __expandNodesFromPaths(self, view, rootIndex, paths):
+ model = view.model()
+ for path in paths:
+ index = self.__indexFromPath(model, rootIndex, path)
+ if index is not None:
+ view.setExpanded(index, True)
+
def __expandAllSelected(self):
"""Expand all selected items of the tree.
@@ -185,6 +326,8 @@ class Viewer(qt.QMainWindow):
model = self.__treeview.model()
while len(indexes) > 0:
index = indexes.pop(0)
+ if index.column() != 0:
+ continue
if isinstance(index, tuple):
index, depth = index
else:
@@ -211,6 +354,8 @@ class Viewer(qt.QMainWindow):
model = self.__treeview.model()
while len(indexes) > 0:
index = indexes.pop(0)
+ if index.column() != 0:
+ continue
if isinstance(index, tuple):
index, depth = index
else:
@@ -682,5 +827,5 @@ class Viewer(qt.QMainWindow):
action.triggered.connect(lambda: self.__treeview.findHdf5TreeModel().removeH5pyObject(h5))
menu.addAction(action)
action = qt.QAction("Synchronize %s" % obj.local_filename, event.source())
- action.triggered.connect(lambda: self.__treeview.findHdf5TreeModel().synchronizeH5pyObject(h5))
+ action.triggered.connect(lambda: self.__synchronizeH5pyObject(h5))
menu.addAction(action)
diff --git a/silx/app/view/test/test_view.py b/silx/app/view/test/test_view.py
index 010cda5..ebcd405 100644
--- a/silx/app/view/test/test_view.py
+++ b/silx/app/view/test/test_view.py
@@ -46,7 +46,7 @@ from silx.app.view.About import About
from silx.app.view.DataPanel import DataPanel
from silx.app.view.CustomNxdataWidget import CustomNxdataWidget
from silx.gui.hdf5._utils import Hdf5DatasetMimeData
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.io import commonh5
_tmpDirectory = None
diff --git a/silx/gui/_glutils/font.py b/silx/gui/_glutils/font.py
index b5bd6b5..8403c5a 100644
--- a/silx/gui/_glutils/font.py
+++ b/silx/gui/_glutils/font.py
@@ -32,7 +32,7 @@ __date__ = "13/10/2016"
import logging
import numpy
-from ..utils._image import convertQImageToArray
+from ..utils.image import convertQImageToArray
from .. import qt
_logger = logging.getLogger(__name__)
diff --git a/silx/gui/colors.py b/silx/gui/colors.py
index 028609b..a51bcdc 100644
--- a/silx/gui/colors.py
+++ b/silx/gui/colors.py
@@ -29,7 +29,7 @@ from __future__ import absolute_import
__authors__ = ["T. Vincent", "H.Payno"]
__license__ = "MIT"
-__date__ = "14/06/2018"
+__date__ = "05/10/2018"
from silx.gui import qt
import copy as copy_mdl
@@ -234,6 +234,8 @@ class Colormap(qt.QObject):
self._colors = None
else:
colors = numpy.array(colors, copy=False)
+ if colors.shape == ():
+ raise TypeError("An array is expected for 'colors' argument. '%s' was found." % type(colors))
colors.shape = -1, colors.shape[-1]
if colors.dtype.kind == 'f':
colors = self._convertColorsFromFloatToUint8(colors)
@@ -518,6 +520,11 @@ class Colormap(qt.QObject):
raise NotEditableError('Colormap is not editable')
name = dic['name'] if 'name' in dic else None
colors = dic['colors'] if 'colors' in dic else None
+ if name is not None and colors is not None:
+ if isinstance(colors, int):
+ # Filter out argument which was supported but never used
+ _logger.info("Unused 'colors' from colormap dictionary filterer.")
+ colors = None
vmin = dic['vmin'] if 'vmin' in dic else None
vmax = dic['vmax'] if 'vmax' in dic else None
if 'normalization' in dic:
diff --git a/silx/gui/data/Hdf5TableView.py b/silx/gui/data/Hdf5TableView.py
index 04199b2..9e28fbf 100644
--- a/silx/gui/data/Hdf5TableView.py
+++ b/silx/gui/data/Hdf5TableView.py
@@ -30,7 +30,7 @@ from __future__ import division
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "23/05/2018"
+__date__ = "05/07/2018"
import collections
import functools
@@ -101,6 +101,9 @@ class _CellData(object):
def invalidateToolTip(self):
self.__tooltip = None
+ def data(self, role):
+ return None
+
class _TableData(object):
"""Modelize a table with header, row and column span.
@@ -183,6 +186,46 @@ class _TableData(object):
self.__data.append(row)
+class _CellFilterAvailableData(_CellData):
+ """Cell rendering for availability of a filter"""
+
+ _states = {
+ True: ("Available", qt.QColor(0x000000), None, None),
+ False: ("Not available", qt.QColor(0xFFFFFF), qt.QColor(0xFF0000),
+ "You have to install this filter on your system to be able to read this dataset"),
+ "na": ("n.a.", qt.QColor(0x000000), None,
+ "This version of h5py/hdf5 is not able to display the information"),
+ }
+
+ def __init__(self, filterId):
+ import h5py.version
+ if h5py.version.hdf5_version_tuple >= (1, 10, 2):
+ # Previous versions only returns True if the filter was first used
+ # to decode a dataset
+ import h5py.h5z
+ self.__availability = h5py.h5z.filter_avail(filterId)
+ else:
+ self.__availability = "na"
+ _CellData.__init__(self)
+
+ def value(self):
+ state = self._states[self.__availability]
+ return state[0]
+
+ def tooltip(self):
+ state = self._states[self.__availability]
+ return state[3]
+
+ def data(self, role=qt.Qt.DisplayRole):
+ state = self._states[self.__availability]
+ if role == qt.Qt.TextColorRole:
+ return state[1]
+ elif role == qt.Qt.BackgroundColorRole:
+ return state[2]
+ else:
+ return None
+
+
class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
"""This data model provides access to HDF5 node content (File, Group,
Dataset). Main info, like name, file, attributes... are displayed
@@ -198,7 +241,7 @@ class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
super(Hdf5TableModel, self).__init__(parent)
self.__obj = None
- self.__data = _TableData(columnCount=4)
+ self.__data = _TableData(columnCount=5)
self.__formatter = None
self.__hdf5Formatter = Hdf5Formatter(self)
formatter = TextFormatter(self)
@@ -245,6 +288,8 @@ class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
cell.invalidateToolTip()
raise
return value
+ else:
+ return cell.data(role)
return None
def flags(self, index):
@@ -394,14 +439,16 @@ class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
hdf5id = _CellData(value="HDF5 ID", isHeader=True)
name = _CellData(value="Name", isHeader=True)
options = _CellData(value="Options", isHeader=True)
- self.__data.addRow(pos, hdf5id, name, options)
+ availability = _CellData(value="", isHeader=True)
+ self.__data.addRow(pos, hdf5id, name, options, availability)
for index in range(dcpl.get_nfilters()):
- callback = lambda index, dataIndex, x: self.__get_filter_info(x, index)[dataIndex]
- pos = _CellData(value=functools.partial(callback, index, 0))
- hdf5id = _CellData(value=functools.partial(callback, index, 1))
- name = _CellData(value=functools.partial(callback, index, 2))
- options = _CellData(value=functools.partial(callback, index, 3))
- self.__data.addRow(pos, hdf5id, name, options)
+ filterId, name, options = self.__getFilterInfo(obj, index)
+ pos = _CellData(value=index)
+ hdf5id = _CellData(value=filterId)
+ name = _CellData(value=name)
+ options = _CellData(value=options)
+ availability = _CellFilterAvailableData(filterId=filterId)
+ self.__data.addRow(pos, hdf5id, name, options, availability)
if hasattr(obj, "attrs"):
if len(obj.attrs) > 0:
@@ -413,7 +460,7 @@ class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
value=functools.partial(callback, key),
tooltip=functools.partial(callbackTooltip, key))
- def __get_filter_info(self, dataset, filterIndex):
+ def __getFilterInfo(self, dataset, filterIndex):
"""Get a tuple of readable info from dataset filters
:param h5py.Dataset dataset: A h5py dataset
@@ -425,10 +472,10 @@ class Hdf5TableModel(HierarchicalTableView.HierarchicalTableModel):
filterId, _flags, cdValues, name = info
name = self.__formatter.toString(name)
options = " ".join([self.__formatter.toString(i) for i in cdValues])
- return (filterIndex, filterId, name, options)
+ return (filterId, name, options)
except Exception:
_logger.debug("Backtrace", exc_info=True)
- return [filterIndex, None, None, None]
+ return (None, None, None)
def object(self):
"""Returns the internal object modelized.
@@ -503,5 +550,8 @@ class Hdf5TableView(HierarchicalTableView.HierarchicalTableView):
else:
setResizeMode = header.setSectionResizeMode
setResizeMode(0, qt.QHeaderView.Fixed)
- setResizeMode(1, qt.QHeaderView.Stretch)
- header.setStretchLastSection(True)
+ setResizeMode(1, qt.QHeaderView.ResizeToContents)
+ setResizeMode(2, qt.QHeaderView.Stretch)
+ setResizeMode(3, qt.QHeaderView.ResizeToContents)
+ setResizeMode(4, qt.QHeaderView.ResizeToContents)
+ header.setStretchLastSection(False)
diff --git a/silx/gui/data/NXdataWidgets.py b/silx/gui/data/NXdataWidgets.py
index 1bf5425..f7c479d 100644
--- a/silx/gui/data/NXdataWidgets.py
+++ b/silx/gui/data/NXdataWidgets.py
@@ -26,7 +26,7 @@
"""
__authors__ = ["P. Knobel"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "10/10/2018"
import numpy
@@ -337,6 +337,7 @@ class ArrayImagePlot(qt.QWidget):
self._plot.setDefaultColormap(Colormap(name="viridis",
vmin=None, vmax=None,
normalization=Colormap.LINEAR))
+ self._plot.getIntensityHistogramAction().setVisible(True)
self.selectorDock = qt.QDockWidget("Data selector", self._plot)
# not closable
diff --git a/silx/gui/data/RecordTableView.py b/silx/gui/data/RecordTableView.py
index 54881b7..b1b7dcd 100644
--- a/silx/gui/data/RecordTableView.py
+++ b/silx/gui/data/RecordTableView.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -37,7 +37,7 @@ from silx.gui.widgets.TableWidget import CopySelectedCellsAction
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "02/10/2017"
+__date__ = "29/08/2018"
class _MultiLineItem(qt.QItemDelegate):
@@ -205,10 +205,13 @@ class RecordTableModel(qt.QAbstractTableModel):
if len(key) > 1:
data = data[key[1]]
+ # no dtype in case of 1D array of unicode objects (#2093)
+ dtype = getattr(data, "dtype", None)
+
if role == qt.Qt.DisplayRole:
- return self.__formatter.toString(data, dtype=self.__data.dtype)
+ return self.__formatter.toString(data, dtype=dtype)
elif role == qt.Qt.EditRole:
- return self.__editFormatter.toString(data, dtype=self.__data.dtype)
+ return self.__editFormatter.toString(data, dtype=dtype)
return None
def headerData(self, section, orientation, role=qt.Qt.DisplayRole):
@@ -382,8 +385,10 @@ class RecordTableView(qt.QTableView):
qt.QTableView.__init__(self, parent)
model = _ShowEditorProxyModel(self)
- model.setSourceModel(RecordTableModel())
+ self._model = RecordTableModel()
+ model.setSourceModel(self._model)
self.setModel(model)
+
self.__multilineView = _MultiLineItem(self)
self.setEditTriggers(qt.QAbstractItemView.AllEditTriggers)
self._copyAction = CopySelectedCellsAction(self)
@@ -393,13 +398,16 @@ class RecordTableView(qt.QTableView):
self._copyAction.trigger()
def setArrayData(self, data):
- self.model().sourceModel().setArrayData(data)
+ model = self.model()
+ sourceModel = model.sourceModel()
+ sourceModel.setArrayData(data)
+
if data is not None:
if issubclass(data.dtype.type, (numpy.string_, numpy.unicode_)):
# TODO it would be nice to also fix fields
# but using it only for string array is already very useful
self.setItemDelegateForColumn(0, self.__multilineView)
- self.model().forceCellEditor(True)
+ model.forceCellEditor(True)
else:
self.setItemDelegateForColumn(0, None)
- self.model().forceCellEditor(False)
+ model.forceCellEditor(False)
diff --git a/silx/gui/data/TextFormatter.py b/silx/gui/data/TextFormatter.py
index 8440509..1401634 100644
--- a/silx/gui/data/TextFormatter.py
+++ b/silx/gui/data/TextFormatter.py
@@ -27,7 +27,7 @@ data module to format data as text in the same way."""
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "25/06/2018"
+__date__ = "24/07/2018"
import numpy
import numbers
@@ -206,7 +206,13 @@ class TextFormatter(qt.QObject):
if six.PY2:
data = [ord(d) for d in data.data]
else:
- data = data.item().astype(numpy.uint8)
+ data = data.item()
+ if isinstance(data, numpy.ndarray):
+ # Before numpy 1.15.0 the item API was returning a numpy array
+ data = data.astype(numpy.uint8)
+ else:
+ # Now it is supposed to be a bytes type
+ pass
elif six.PY2:
data = [ord(d) for d in data]
# In python3 data is already a bytes array
diff --git a/silx/gui/data/test/test_arraywidget.py b/silx/gui/data/test/test_arraywidget.py
index bbd7ee5..50ffc84 100644
--- a/silx/gui/data/test/test_arraywidget.py
+++ b/silx/gui/data/test/test_arraywidget.py
@@ -34,7 +34,7 @@ import numpy
from silx.gui import qt
from silx.gui.data import ArrayTableWidget
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
try:
import h5py
diff --git a/silx/gui/data/test/test_dataviewer.py b/silx/gui/data/test/test_dataviewer.py
index f3c2808..a681f33 100644
--- a/silx/gui/data/test/test_dataviewer.py
+++ b/silx/gui/data/test/test_dataviewer.py
@@ -39,8 +39,8 @@ from .. import DataViews
from silx.gui import qt
from silx.gui.data.DataViewerFrame import DataViewerFrame
-from silx.gui.test.utils import SignalListener
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import SignalListener
+from silx.gui.utils.testutils import TestCaseQt
try:
import h5py
@@ -183,7 +183,7 @@ class AbstractDataViewerTests(TestCaseQt):
widget.dataChanged.connect(listener)
widget.setData(10)
widget.setData(None)
- self.assertEquals(listener.callCount(), 2)
+ self.assertEqual(listener.callCount(), 2)
def test_display_mode_event(self):
listener = SignalListener()
@@ -192,7 +192,7 @@ class AbstractDataViewerTests(TestCaseQt):
widget.setData(10)
widget.setData(None)
modes = [v.modeId() for v in listener.arguments(argumentIndex=0)]
- self.assertEquals(modes, [DataViews.RAW_MODE, DataViews.EMPTY_MODE])
+ self.assertEqual(modes, [DataViews.RAW_MODE, DataViews.EMPTY_MODE])
listener.clear()
def test_change_display_mode(self):
@@ -201,13 +201,13 @@ class AbstractDataViewerTests(TestCaseQt):
widget = self.create_widget()
widget.setData(data)
widget.setDisplayMode(DataViews.PLOT1D_MODE)
- self.assertEquals(widget.displayedView().modeId(), DataViews.PLOT1D_MODE)
+ self.assertEqual(widget.displayedView().modeId(), DataViews.PLOT1D_MODE)
widget.setDisplayMode(DataViews.IMAGE_MODE)
- self.assertEquals(widget.displayedView().modeId(), DataViews.IMAGE_MODE)
+ self.assertEqual(widget.displayedView().modeId(), DataViews.IMAGE_MODE)
widget.setDisplayMode(DataViews.RAW_MODE)
- self.assertEquals(widget.displayedView().modeId(), DataViews.RAW_MODE)
+ self.assertEqual(widget.displayedView().modeId(), DataViews.RAW_MODE)
widget.setDisplayMode(DataViews.EMPTY_MODE)
- self.assertEquals(widget.displayedView().modeId(), DataViews.EMPTY_MODE)
+ self.assertEqual(widget.displayedView().modeId(), DataViews.EMPTY_MODE)
def test_create_default_views(self):
widget = self.create_widget()
diff --git a/silx/gui/data/test/test_numpyaxesselector.py b/silx/gui/data/test/test_numpyaxesselector.py
index 6ce5119..6b7b58c 100644
--- a/silx/gui/data/test/test_numpyaxesselector.py
+++ b/silx/gui/data/test/test_numpyaxesselector.py
@@ -34,8 +34,8 @@ from contextlib import contextmanager
import numpy
from silx.gui.data.NumpyAxesSelector import NumpyAxesSelector
-from silx.gui.test.utils import SignalListener
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import SignalListener
+from silx.gui.utils.testutils import TestCaseQt
try:
import h5py
diff --git a/silx/gui/data/test/test_textformatter.py b/silx/gui/data/test/test_textformatter.py
index 06a29ba..850aa00 100644
--- a/silx/gui/data/test/test_textformatter.py
+++ b/silx/gui/data/test/test_textformatter.py
@@ -31,8 +31,8 @@ import shutil
import tempfile
import numpy
-from silx.gui.test.utils import TestCaseQt
-from silx.gui.test.utils import SignalListener
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui.utils.testutils import SignalListener
from ..TextFormatter import TextFormatter
from silx.third_party import six
@@ -49,10 +49,10 @@ class TestTextFormatter(TestCaseQt):
copy = TextFormatter(formatter=formatter)
self.assertIsNot(formatter, copy)
copy.setFloatFormat("%.3f")
- self.assertEquals(formatter.integerFormat(), copy.integerFormat())
+ self.assertEqual(formatter.integerFormat(), copy.integerFormat())
self.assertNotEquals(formatter.floatFormat(), copy.floatFormat())
- self.assertEquals(formatter.useQuoteForText(), copy.useQuoteForText())
- self.assertEquals(formatter.imaginaryUnit(), copy.imaginaryUnit())
+ self.assertEqual(formatter.useQuoteForText(), copy.useQuoteForText())
+ self.assertEqual(formatter.imaginaryUnit(), copy.imaginaryUnit())
def test_event(self):
listener = SignalListener()
@@ -62,19 +62,19 @@ class TestTextFormatter(TestCaseQt):
formatter.setIntegerFormat("%03i")
formatter.setUseQuoteForText(False)
formatter.setImaginaryUnit("z")
- self.assertEquals(listener.callCount(), 4)
+ self.assertEqual(listener.callCount(), 4)
def test_int(self):
formatter = TextFormatter()
formatter.setIntegerFormat("%05i")
result = formatter.toString(512)
- self.assertEquals(result, "00512")
+ self.assertEqual(result, "00512")
def test_float(self):
formatter = TextFormatter()
formatter.setFloatFormat("%.3f")
result = formatter.toString(1.3)
- self.assertEquals(result, "1.300")
+ self.assertEqual(result, "1.300")
def test_complex(self):
formatter = TextFormatter()
@@ -82,25 +82,25 @@ class TestTextFormatter(TestCaseQt):
formatter.setImaginaryUnit("i")
result = formatter.toString(1.0 + 5j)
result = result.replace(" ", "")
- self.assertEquals(result, "1.0+5.0i")
+ self.assertEqual(result, "1.0+5.0i")
def test_string(self):
formatter = TextFormatter()
formatter.setIntegerFormat("%.1f")
formatter.setImaginaryUnit("z")
result = formatter.toString("toto")
- self.assertEquals(result, '"toto"')
+ self.assertEqual(result, '"toto"')
def test_numpy_void(self):
formatter = TextFormatter()
result = formatter.toString(numpy.void(b"\xFF"))
- self.assertEquals(result, 'b"\\xFF"')
+ self.assertEqual(result, 'b"\\xFF"')
def test_char_cp1252(self):
# degree character in cp1252
formatter = TextFormatter()
result = formatter.toString(numpy.bytes_(b"\xB0"))
- self.assertEquals(result, u'"\u00B0"')
+ self.assertEqual(result, u'"\u00B0"')
class TestTextFormatterWithH5py(TestCaseQt):
@@ -130,74 +130,74 @@ class TestTextFormatterWithH5py(TestCaseQt):
def testAscii(self):
d = self.create_dataset(data=b"abc")
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '"abc"')
+ self.assertEqual(result, '"abc"')
def testUnicode(self):
d = self.create_dataset(data=u"i\u2661cookies")
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(len(result), 11)
- self.assertEquals(result, u'"i\u2661cookies"')
+ self.assertEqual(len(result), 11)
+ self.assertEqual(result, u'"i\u2661cookies"')
def testBadAscii(self):
d = self.create_dataset(data=b"\xF0\x9F\x92\x94")
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, 'b"\\xF0\\x9F\\x92\\x94"')
+ self.assertEqual(result, 'b"\\xF0\\x9F\\x92\\x94"')
def testVoid(self):
d = self.create_dataset(data=numpy.void(b"abc\xF0"))
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, 'b"\\x61\\x62\\x63\\xF0"')
+ self.assertEqual(result, 'b"\\x61\\x62\\x63\\xF0"')
def testEnum(self):
dtype = h5py.special_dtype(enum=('i', {"RED": 0, "GREEN": 1, "BLUE": 42}))
d = numpy.array(42, dtype=dtype)
d = self.create_dataset(data=d)
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, 'BLUE(42)')
+ self.assertEqual(result, 'BLUE(42)')
def testRef(self):
dtype = h5py.special_dtype(ref=h5py.Reference)
d = numpy.array(self.h5File.ref, dtype=dtype)
d = self.create_dataset(data=d)
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, 'REF')
+ self.assertEqual(result, 'REF')
def testArrayAscii(self):
d = self.create_dataset(data=[b"abc"])
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '["abc"]')
+ self.assertEqual(result, '["abc"]')
def testArrayUnicode(self):
dtype = h5py.special_dtype(vlen=six.text_type)
d = numpy.array([u"i\u2661cookies"], dtype=dtype)
d = self.create_dataset(data=d)
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(len(result), 13)
- self.assertEquals(result, u'["i\u2661cookies"]')
+ self.assertEqual(len(result), 13)
+ self.assertEqual(result, u'["i\u2661cookies"]')
def testArrayBadAscii(self):
d = self.create_dataset(data=[b"\xF0\x9F\x92\x94"])
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '[b"\\xF0\\x9F\\x92\\x94"]')
+ self.assertEqual(result, '[b"\\xF0\\x9F\\x92\\x94"]')
def testArrayVoid(self):
d = self.create_dataset(data=numpy.void([b"abc\xF0"]))
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '[b"\\x61\\x62\\x63\\xF0"]')
+ self.assertEqual(result, '[b"\\x61\\x62\\x63\\xF0"]')
def testArrayEnum(self):
dtype = h5py.special_dtype(enum=('i', {"RED": 0, "GREEN": 1, "BLUE": 42}))
d = numpy.array([42, 1, 100], dtype=dtype)
d = self.create_dataset(data=d)
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '[BLUE(42) GREEN(1) 100]')
+ self.assertEqual(result, '[BLUE(42) GREEN(1) 100]')
def testArrayRef(self):
dtype = h5py.special_dtype(ref=h5py.Reference)
d = numpy.array([self.h5File.ref, None], dtype=dtype)
d = self.create_dataset(data=d)
result = self.formatter.toString(d[()], dtype=d.dtype)
- self.assertEquals(result, '[REF NULL_REF]')
+ self.assertEqual(result, '[REF NULL_REF]')
def suite():
diff --git a/silx/gui/dialog/AbstractDataFileDialog.py b/silx/gui/dialog/AbstractDataFileDialog.py
index cb6711c..40045fe 100644
--- a/silx/gui/dialog/AbstractDataFileDialog.py
+++ b/silx/gui/dialog/AbstractDataFileDialog.py
@@ -1170,7 +1170,7 @@ class AbstractDataFileDialog(qt.QDialog):
def __filterSelected(self, index):
filters = self.__fileTypeCombo.itemExtensions(index)
- self.__fileModel.setNameFilters(filters)
+ self.__fileModel.setNameFilters(list(filters))
def __setData(self, data):
self.__data = data
diff --git a/silx/gui/dialog/ColormapDialog.py b/silx/gui/dialog/ColormapDialog.py
index ed10728..cbbfa5a 100644
--- a/silx/gui/dialog/ColormapDialog.py
+++ b/silx/gui/dialog/ColormapDialog.py
@@ -710,8 +710,9 @@ class ColormapDialog(qt.QDialog):
self._updateMinMaxData()
def getColormap(self):
- """Return the colormap description as a :class:`.Colormap`.
+ """Return the colormap description.
+ :rtype: ~silx.gui.colors.Colormap
"""
if self._colormap is None:
return None
@@ -811,7 +812,7 @@ class ColormapDialog(qt.QDialog):
def setColormap(self, colormap):
"""Set the colormap description
- :param :class:`Colormap` colormap: the colormap to edit
+ :param ~silx.gui.colors.Colormap colormap: the colormap to edit
"""
assert colormap is None or isinstance(colormap, Colormap)
if self._ignoreColormapChange is True:
diff --git a/silx/gui/dialog/DatasetDialog.py b/silx/gui/dialog/DatasetDialog.py
new file mode 100644
index 0000000..87fc89d
--- /dev/null
+++ b/silx/gui/dialog/DatasetDialog.py
@@ -0,0 +1,122 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides a dialog widget to select a HDF5 dataset in a
+tree.
+
+.. autoclass:: DatasetDialog
+ :members: addFile, addGroup, getSelectedDataUrl, setMode
+
+"""
+from .GroupDialog import _Hdf5ItemSelectionDialog
+import silx.io
+from silx.io.url import DataUrl
+
+
+__authors__ = ["P. Knobel"]
+__license__ = "MIT"
+__date__ = "05/09/2018"
+
+
+class DatasetDialog(_Hdf5ItemSelectionDialog):
+ """This :class:`QDialog` uses a :class:`silx.gui.hdf5.Hdf5TreeView` to
+ provide a HDF5 dataset selection dialog.
+
+ The information identifying the selected node is provided as a
+ :class:`silx.io.url.DataUrl`.
+
+ Example:
+
+ .. code-block:: python
+
+ dialog = DatasetDialog()
+ dialog.addFile(filepath1)
+ dialog.addFile(filepath2)
+
+ if dialog.exec_():
+ print("File path: %s" % dialog.getSelectedDataUrl().file_path())
+ print("HDF5 dataset path : %s " % dialog.getSelectedDataUrl().data_path())
+ else:
+ print("Operation cancelled :(")
+
+ """
+ def __init__(self, parent=None):
+ _Hdf5ItemSelectionDialog.__init__(self, parent)
+
+ # customization for groups
+ self.setWindowTitle("HDF5 dataset selection")
+
+ self._header.setSections([self._model.NAME_COLUMN,
+ self._model.NODE_COLUMN,
+ self._model.LINK_COLUMN,
+ self._model.TYPE_COLUMN,
+ self._model.SHAPE_COLUMN])
+ self._selectDatasetStatusText = "Select a dataset or type a new dataset name"
+
+ def setMode(self, mode):
+ """Set dialog mode DatasetDialog.SaveMode or DatasetDialog.LoadMode
+
+ :param mode: DatasetDialog.SaveMode or DatasetDialog.LoadMode
+ """
+ _Hdf5ItemSelectionDialog.setMode(self, mode)
+ if mode == DatasetDialog.SaveMode:
+ self._selectDatasetStatusText = "Select a dataset or type a new dataset name"
+ elif mode == DatasetDialog.LoadMode:
+ self._selectDatasetStatusText = "Select a dataset"
+
+ def _onActivation(self, idx):
+ # double-click or enter press: filter for datasets
+ nodes = list(self._tree.selectedH5Nodes())
+ node = nodes[0]
+ if silx.io.is_dataset(node.h5py_object):
+ self.accept()
+
+ def _updateUrl(self):
+ # overloaded to filter for datasets
+ nodes = list(self._tree.selectedH5Nodes())
+ newDatasetName = self._lineEditNewItem.text()
+ isDatasetSelected = False
+ if nodes:
+ node = nodes[0]
+ if silx.io.is_dataset(node.h5py_object):
+ data_path = node.local_name
+ isDatasetSelected = True
+ elif silx.io.is_group(node.h5py_object):
+ data_path = node.local_name
+ if newDatasetName.lstrip("/"):
+ if not data_path.endswith("/"):
+ data_path += "/"
+ data_path += newDatasetName.lstrip("/")
+ isDatasetSelected = True
+
+ if isDatasetSelected:
+ self._selectedUrl = DataUrl(file_path=node.local_filename,
+ data_path=data_path)
+ self._okButton.setEnabled(True)
+ self._labelSelection.setText(
+ self._selectedUrl.path())
+ else:
+ self._selectedUrl = None
+ self._okButton.setEnabled(False)
+ self._labelSelection.setText(self._selectDatasetStatusText)
diff --git a/silx/gui/dialog/GroupDialog.py b/silx/gui/dialog/GroupDialog.py
index 71235d2..217a03c 100644
--- a/silx/gui/dialog/GroupDialog.py
+++ b/silx/gui/dialog/GroupDialog.py
@@ -26,9 +26,7 @@
tree.
.. autoclass:: GroupDialog
- :show-inheritance:
- :members:
-
+ :members: addFile, addGroup, getSelectedDataUrl, setMode
"""
from silx.gui import qt
@@ -41,31 +39,18 @@ __license__ = "MIT"
__date__ = "22/03/2018"
-class GroupDialog(qt.QDialog):
- """This :class:`QDialog` uses a :class:`silx.gui.hdf5.Hdf5TreeView` to
- provide a HDF5 group selection dialog.
-
- The information identifying the selected node is provided as a
- :class:`silx.io.url.DataUrl`.
-
- Example:
-
- .. code-block:: python
-
- dialog = GroupDialog()
- dialog.addFile(filepath1)
- dialog.addFile(filepath2)
+class _Hdf5ItemSelectionDialog(qt.QDialog):
+ SaveMode = 1
+ """Mode used to set the HDF5 item selection dialog to *save* mode.
+ This adds a text field to type in a new item name."""
- if dialog.exec_():
- print("File path: %s" % dialog.getSelectedDataUrl().file_path())
- print("HDF5 group path : %s " % dialog.getSelectedDataUrl().data_path())
- else:
- print("Operation cancelled :(")
+ LoadMode = 2
+ """Mode used to set the HDF5 item selection dialog to *load* mode.
+ Only existing items of the HDF5 file can be selected in this mode."""
- """
def __init__(self, parent=None):
qt.QDialog.__init__(self, parent)
- self.setWindowTitle("HDF5 group selection")
+ self.setWindowTitle("HDF5 item selection")
self._tree = Hdf5TreeView(self)
self._tree.setSelectionMode(qt.QAbstractItemView.SingleSelection)
@@ -76,25 +61,26 @@ class GroupDialog(qt.QDialog):
self._model = self._tree.findHdf5TreeModel()
self._header = self._tree.header()
- self._header.setSections([self._model.NAME_COLUMN,
- self._model.NODE_COLUMN,
- self._model.LINK_COLUMN])
- _labelSubgroup = qt.QLabel(self)
- _labelSubgroup.setText("Subgroup name (optional)")
- self._lineEditSubgroup = qt.QLineEdit(self)
- self._lineEditSubgroup.setToolTip(
- "Specify the name of a new subgroup "
+ self._newItemWidget = qt.QWidget(self)
+ newItemLayout = qt.QVBoxLayout(self._newItemWidget)
+ self._labelNewItem = qt.QLabel(self._newItemWidget)
+ self._labelNewItem.setText("Create new item in selected group (optional):")
+ self._lineEditNewItem = qt.QLineEdit(self._newItemWidget)
+ self._lineEditNewItem.setToolTip(
+ "Specify the name of a new item "
"to be created in the selected group.")
- self._lineEditSubgroup.textChanged.connect(
- self._onSubgroupNameChange)
+ self._lineEditNewItem.textChanged.connect(
+ self._onNewItemNameChange)
+ newItemLayout.addWidget(self._labelNewItem)
+ newItemLayout.addWidget(self._lineEditNewItem)
_labelSelectionTitle = qt.QLabel(self)
_labelSelectionTitle.setText("Current selection")
self._labelSelection = qt.QLabel(self)
self._labelSelection.setStyleSheet("color: gray")
self._labelSelection.setWordWrap(True)
- self._labelSelection.setText("Select a group")
+ self._labelSelection.setText("Select an item")
buttonBox = qt.QDialogButtonBox()
self._okButton = buttonBox.addButton(qt.QDialogButtonBox.Ok)
@@ -106,8 +92,7 @@ class GroupDialog(qt.QDialog):
vlayout = qt.QVBoxLayout(self)
vlayout.addWidget(self._tree)
- vlayout.addWidget(_labelSubgroup)
- vlayout.addWidget(self._lineEditSubgroup)
+ vlayout.addWidget(self._newItemWidget)
vlayout.addWidget(_labelSelectionTitle)
vlayout.addWidget(self._labelSelection)
vlayout.addWidget(buttonBox)
@@ -117,6 +102,30 @@ class GroupDialog(qt.QDialog):
self._selectedUrl = None
+ def _onSelectionChange(self, old, new):
+ self._updateUrl()
+
+ def _onNewItemNameChange(self, text):
+ self._updateUrl()
+
+ def _onActivation(self, idx):
+ # double-click or enter press
+ self.accept()
+
+ def setMode(self, mode):
+ """Set dialog mode DatasetDialog.SaveMode or DatasetDialog.LoadMode
+
+ :param mode: DatasetDialog.SaveMode or DatasetDialog.LoadMode
+ """
+ if mode == self.LoadMode:
+ # hide "Create new item" field
+ self._lineEditNewItem.clear()
+ self._newItemWidget.hide()
+ elif mode == self.SaveMode:
+ self._newItemWidget.show()
+ else:
+ raise ValueError("Invalid DatasetDialog mode %s" % mode)
+
def addFile(self, path):
"""Add a HDF5 file to the tree.
All groups it contains will be selectable in the dialog.
@@ -133,22 +142,75 @@ class GroupDialog(qt.QDialog):
"""
self._model.insertH5pyObject(group)
+ def _updateUrl(self):
+ nodes = list(self._tree.selectedH5Nodes())
+ subgroupName = self._lineEditNewItem.text()
+ if nodes:
+ node = nodes[0]
+ data_path = node.local_name
+ if subgroupName.lstrip("/"):
+ if not data_path.endswith("/"):
+ data_path += "/"
+ data_path += subgroupName.lstrip("/")
+ self._selectedUrl = DataUrl(file_path=node.local_filename,
+ data_path=data_path)
+ self._okButton.setEnabled(True)
+ self._labelSelection.setText(
+ self._selectedUrl.path())
+
+ def getSelectedDataUrl(self):
+ """Return a :class:`DataUrl` with a file path and a data path.
+ Return None if the dialog was cancelled.
+
+ :return: :class:`silx.io.url.DataUrl` object pointing to the
+ selected HDF5 item.
+ """
+ return self._selectedUrl
+
+
+class GroupDialog(_Hdf5ItemSelectionDialog):
+ """This :class:`QDialog` uses a :class:`silx.gui.hdf5.Hdf5TreeView` to
+ provide a HDF5 group selection dialog.
+
+ The information identifying the selected node is provided as a
+ :class:`silx.io.url.DataUrl`.
+
+ Example:
+
+ .. code-block:: python
+
+ dialog = GroupDialog()
+ dialog.addFile(filepath1)
+ dialog.addFile(filepath2)
+
+ if dialog.exec_():
+ print("File path: %s" % dialog.getSelectedDataUrl().file_path())
+ print("HDF5 group path : %s " % dialog.getSelectedDataUrl().data_path())
+ else:
+ print("Operation cancelled :(")
+
+ """
+ def __init__(self, parent=None):
+ _Hdf5ItemSelectionDialog.__init__(self, parent)
+
+ # customization for groups
+ self.setWindowTitle("HDF5 group selection")
+
+ self._header.setSections([self._model.NAME_COLUMN,
+ self._model.NODE_COLUMN,
+ self._model.LINK_COLUMN])
+
def _onActivation(self, idx):
- # double-click or enter press
+ # double-click or enter press: filter for groups
nodes = list(self._tree.selectedH5Nodes())
node = nodes[0]
if silx.io.is_group(node.h5py_object):
self.accept()
- def _onSelectionChange(self, old, new):
- self._updateUrl()
-
- def _onSubgroupNameChange(self, text):
- self._updateUrl()
-
def _updateUrl(self):
+ # overloaded to filter for groups
nodes = list(self._tree.selectedH5Nodes())
- subgroupName = self._lineEditSubgroup.text()
+ subgroupName = self._lineEditNewItem.text()
if nodes:
node = nodes[0]
if silx.io.is_group(node.h5py_object):
@@ -166,12 +228,3 @@ class GroupDialog(qt.QDialog):
self._selectedUrl = None
self._okButton.setEnabled(False)
self._labelSelection.setText("Select a group")
-
- def getSelectedDataUrl(self):
- """Return a :class:`DataUrl` with a file path and a data path.
- Return None if the dialog was cancelled.
-
- :return: :class:`silx.io.url.DataUrl` object pointing to the
- selected group.
- """
- return self._selectedUrl
diff --git a/silx/gui/dialog/SafeFileIconProvider.py b/silx/gui/dialog/SafeFileIconProvider.py
index 7fac7c0..1e06b64 100644
--- a/silx/gui/dialog/SafeFileIconProvider.py
+++ b/silx/gui/dialog/SafeFileIconProvider.py
@@ -115,6 +115,10 @@ class SafeFileIconProvider(qt.QFileIconProvider):
return driveInfo[0]
def icon(self, info):
+ if isinstance(info, qt.QFileIconProvider.IconType):
+ # It's another C++ method signature:
+ # QIcon QFileIconProvider::icon(QFileIconProvider::IconType type)
+ return super(SafeFileIconProvider, self).icon(info)
style = qt.QApplication.instance().style()
path = info.filePath()
if path in ["", "/"]:
diff --git a/silx/gui/dialog/SafeFileSystemModel.py b/silx/gui/dialog/SafeFileSystemModel.py
index 8a97974..198e089 100644
--- a/silx/gui/dialog/SafeFileSystemModel.py
+++ b/silx/gui/dialog/SafeFileSystemModel.py
@@ -749,7 +749,7 @@ class SafeFileSystemModel(qt.QSortFilterProxyModel):
index = self.mapToSource(index)
filters = sourceModel.flags(index)
- if self.__nameFilterDisables:
+ if self.__nameFilterDisables and not sourceModel.isDir(index):
item = sourceModel._item(index)
if not self.__nameFiltersAccepted(item):
filters &= ~qt.Qt.ItemIsEnabled
diff --git a/silx/gui/dialog/test/test_colormapdialog.py b/silx/gui/dialog/test/test_colormapdialog.py
index 6f0ceea..6e50193 100644
--- a/silx/gui/dialog/test/test_colormapdialog.py
+++ b/silx/gui/dialog/test/test_colormapdialog.py
@@ -32,10 +32,10 @@ __date__ = "23/05/2018"
import doctest
import unittest
-from silx.gui.test.utils import qWaitForWindowExposedAndActivate
+from silx.gui.utils.testutils import qWaitForWindowExposedAndActivate
from silx.gui import qt
from silx.gui.dialog import ColormapDialog
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.colors import Colormap, preferredColormaps
from silx.utils.testutils import ParametricTestCase
from silx.gui.plot.PlotWindow import PlotWindow
diff --git a/silx/gui/dialog/test/test_datafiledialog.py b/silx/gui/dialog/test/test_datafiledialog.py
index 38fa03b..aff6bc4 100644
--- a/silx/gui/dialog/test/test_datafiledialog.py
+++ b/silx/gui/dialog/test/test_datafiledialog.py
@@ -26,7 +26,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "03/07/2018"
+__date__ = "05/10/2018"
import unittest
@@ -48,7 +48,7 @@ except ImportError:
import silx.io.url
from silx.gui import qt
-from silx.gui.test import utils
+from silx.gui.utils import testutils
from ..DataFileDialog import DataFileDialog
from silx.gui.hdf5 import Hdf5TreeModel
@@ -134,7 +134,7 @@ class _UtilsMixin(object):
path2_ = os.path.normcase(path2)
if path1_ != path2_:
# Use the unittest API to log and display error
- self.assertEquals(path1, path2)
+ self.assertEqual(path1, path2)
def assertNotSamePath(self, path1, path2):
path1_ = os.path.normcase(path1)
@@ -144,11 +144,11 @@ class _UtilsMixin(object):
self.assertNotEquals(path1, path2)
-class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
+class TestDataFileDialogInteraction(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def testDisplayAndKeyEscape(self):
dialog = self.createDialog()
@@ -158,7 +158,7 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.keyClick(dialog, qt.Qt.Key_Escape)
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickCancel(self):
dialog = self.createDialog()
@@ -166,11 +166,11 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
- button = utils.findChildren(dialog, qt.QPushButton, name="cancel")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="cancel")[0]
self.mouseClick(button, qt.Qt.LeftButton)
self.assertFalse(dialog.isVisible())
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickLockedOpen(self):
dialog = self.createDialog()
@@ -178,17 +178,17 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.mouseClick(button, qt.Qt.LeftButton)
# open button locked, dialog is not closed
self.assertTrue(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testSelectRoot_Activate(self):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -202,19 +202,19 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertTrue(url.data_path() is not None)
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testSelectGroup_Activate(self):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -234,19 +234,19 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertEqual(url.data_path(), "/group")
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testSelectDataset_Activate(self):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -266,13 +266,13 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertEqual(url.data_path(), "/scalar")
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testClickOnBackToParentTool(self):
if h5py is None:
@@ -281,9 +281,9 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toParentAction")[0]
- toParentButton = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toParentAction")[0]
+ toParentButton = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data/data.h5"
# init state
@@ -313,9 +313,9 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toRootFileAction")[0]
- button = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toRootFileAction")[0]
+ button = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data.h5"
# init state
@@ -338,9 +338,9 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toDirectoryAction")[0]
- button = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toDirectoryAction")[0]
+ button = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data.h5"
# init state
@@ -367,9 +367,9 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- forwardAction = utils.findChildren(dialog, qt.QAction, name="forwardAction")[0]
- backwardAction = utils.findChildren(dialog, qt.QAction, name="backwardAction")[0]
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ forwardAction = testutils.findChildren(dialog, qt.QAction, name="forwardAction")[0]
+ backwardAction = testutils.findChildren(dialog, qt.QAction, name="backwardAction")[0]
filename = _tmpDirectory + "/data.h5"
dialog.setDirectory(_tmpDirectory)
@@ -387,14 +387,14 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.assertFalse(forwardAction.isEnabled())
self.assertTrue(backwardAction.isEnabled())
- button = utils.getQToolButtonFromAction(backwardAction)
+ button = testutils.getQToolButtonFromAction(backwardAction)
self.mouseClick(button, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
self.assertTrue(forwardAction.isEnabled())
self.assertTrue(backwardAction.isEnabled())
self.assertSamePath(url.text(), path2)
- button = utils.getQToolButtonFromAction(forwardAction)
+ button = testutils.getQToolButtonFromAction(forwardAction)
self.mouseClick(button, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
self.assertFalse(forwardAction.isEnabled())
@@ -494,7 +494,7 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
# init state
dialog.selectUrl(_tmpDirectory)
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/data.h5"
path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path()
index = browser.rootIndex().model().index(filename)
@@ -514,7 +514,7 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
# init state
dialog.selectUrl(_tmpDirectory)
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/badformat.h5"
index = browser.rootIndex().model().index(filename)
browser.activated.emit(index)
@@ -538,7 +538,7 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
dialog.selectUrl(_tmpDirectory)
@@ -546,11 +546,11 @@ class TestDataFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 4)
-class TestDataFileDialog_FilterDataset(utils.TestCaseQt, _UtilsMixin):
+class TestDataFileDialog_FilterDataset(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def _createDialog(self):
dialog = DataFileDialog()
@@ -561,7 +561,7 @@ class TestDataFileDialog_FilterDataset(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -581,14 +581,14 @@ class TestDataFileDialog_FilterDataset(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertFalse(button.isEnabled())
def testSelectDataset_Activate(self):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -608,23 +608,23 @@ class TestDataFileDialog_FilterDataset(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertEqual(url.data_path(), "/scalar")
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
data = dialog.selectedData()
self.assertEqual(data, 10)
-class TestDataFileDialog_FilterGroup(utils.TestCaseQt, _UtilsMixin):
+class TestDataFileDialog_FilterGroup(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def _createDialog(self):
dialog = DataFileDialog()
@@ -635,7 +635,7 @@ class TestDataFileDialog_FilterGroup(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -655,13 +655,13 @@ class TestDataFileDialog_FilterGroup(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertEqual(url.data_path(), "/group")
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
self.assertRaises(Exception, dialog.selectedData)
@@ -669,7 +669,7 @@ class TestDataFileDialog_FilterGroup(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -689,15 +689,15 @@ class TestDataFileDialog_FilterGroup(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertFalse(button.isEnabled())
-class TestDataFileDialog_FilterNXdata(utils.TestCaseQt, _UtilsMixin):
+class TestDataFileDialog_FilterNXdata(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def _createDialog(self):
def customFilter(obj):
@@ -714,7 +714,7 @@ class TestDataFileDialog_FilterNXdata(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -734,7 +734,7 @@ class TestDataFileDialog_FilterNXdata(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertFalse(button.isEnabled())
self.assertRaises(Exception, dialog.selectedData)
@@ -743,7 +743,7 @@ class TestDataFileDialog_FilterNXdata(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
@@ -763,20 +763,20 @@ class TestDataFileDialog_FilterNXdata(utils.TestCaseQt, _UtilsMixin):
browser.activated.emit(index)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
url = silx.io.url.DataUrl(dialog.selectedUrl())
self.assertEqual(url.data_path(), "/nxdata")
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
-class TestDataFileDialogApi(utils.TestCaseQt, _UtilsMixin):
+class TestDataFileDialogApi(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def _createDialog(self):
dialog = DataFileDialog()
@@ -949,7 +949,7 @@ class TestDataFileDialogApi(utils.TestCaseQt, _UtilsMixin):
dialog = self.createDialog()
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/data.h5"
url = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/foobar")
diff --git a/silx/gui/dialog/test/test_imagefiledialog.py b/silx/gui/dialog/test/test_imagefiledialog.py
index 8fef3c5..66469f3 100644
--- a/silx/gui/dialog/test/test_imagefiledialog.py
+++ b/silx/gui/dialog/test/test_imagefiledialog.py
@@ -26,7 +26,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "03/07/2018"
+__date__ = "05/10/2018"
import unittest
@@ -48,7 +48,7 @@ except ImportError:
import silx.io.url
from silx.gui import qt
-from silx.gui.test import utils
+from silx.gui.utils import testutils
from ..ImageFileDialog import ImageFileDialog
from silx.gui.colors import Colormap
from silx.gui.hdf5 import Hdf5TreeModel
@@ -141,7 +141,7 @@ class _UtilsMixin(object):
path2_ = os.path.normcase(path2)
if path1_ != path2_:
# Use the unittest API to log and display error
- self.assertEquals(path1, path2)
+ self.assertEqual(path1, path2)
def assertNotSamePath(self, path1, path2):
path1_ = os.path.normcase(path1)
@@ -151,11 +151,11 @@ class _UtilsMixin(object):
self.assertNotEquals(path1, path2)
-class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
+class TestImageFileDialogInteraction(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def testDisplayAndKeyEscape(self):
dialog = self.createDialog()
@@ -165,7 +165,7 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.keyClick(dialog, qt.Qt.Key_Escape)
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickCancel(self):
dialog = self.createDialog()
@@ -173,11 +173,11 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
- button = utils.findChildren(dialog, qt.QPushButton, name="cancel")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="cancel")[0]
self.mouseClick(button, qt.Qt.LeftButton)
self.assertFalse(dialog.isVisible())
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickLockedOpen(self):
dialog = self.createDialog()
@@ -185,11 +185,11 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.qWaitForWindowExposed(dialog)
self.assertTrue(dialog.isVisible())
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.mouseClick(button, qt.Qt.LeftButton)
# open button locked, dialog is not closed
self.assertTrue(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Rejected)
+ self.assertEqual(dialog.result(), qt.QDialog.Rejected)
def testDisplayAndClickOpen(self):
if fabio is None:
@@ -202,20 +202,20 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.selectFile(filename)
self.qWaitForPendingActions(dialog)
- button = utils.findChildren(dialog, qt.QPushButton, name="open")[0]
+ button = testutils.findChildren(dialog, qt.QPushButton, name="open")[0]
self.assertTrue(button.isEnabled())
self.mouseClick(button, qt.Qt.LeftButton)
self.assertFalse(dialog.isVisible())
- self.assertEquals(dialog.result(), qt.QDialog.Accepted)
+ self.assertEqual(dialog.result(), qt.QDialog.Accepted)
def testClickOnShortcut(self):
dialog = self.createDialog()
dialog.show()
self.qWaitForWindowExposed(dialog)
- sidebar = utils.findChildren(dialog, qt.QListView, name="sidebar")[0]
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ sidebar = testutils.findChildren(dialog, qt.QListView, name="sidebar")[0]
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
dialog.setDirectory(_tmpDirectory)
self.qWaitForPendingActions(dialog)
@@ -248,13 +248,13 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- action = utils.findChildren(dialog, qt.QAction, name="detailModeAction")[0]
- detailModeButton = utils.getQToolButtonFromAction(action)
+ action = testutils.findChildren(dialog, qt.QAction, name="detailModeAction")[0]
+ detailModeButton = testutils.getQToolButtonFromAction(action)
self.mouseClick(detailModeButton, qt.Qt.LeftButton)
self.assertEqual(dialog.viewMode(), qt.QFileDialog.Detail)
- action = utils.findChildren(dialog, qt.QAction, name="listModeAction")[0]
- listModeButton = utils.getQToolButtonFromAction(action)
+ action = testutils.findChildren(dialog, qt.QAction, name="listModeAction")[0]
+ listModeButton = testutils.getQToolButtonFromAction(action)
self.mouseClick(listModeButton, qt.Qt.LeftButton)
self.assertEqual(dialog.viewMode(), qt.QFileDialog.List)
@@ -265,9 +265,9 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toParentAction")[0]
- toParentButton = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toParentAction")[0]
+ toParentButton = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data/data.h5"
# init state
@@ -275,23 +275,19 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.selectUrl(path)
self.qWaitForPendingActions(dialog)
path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/image").path()
- print(url.text())
self.assertSamePath(url.text(), path)
# test
self.mouseClick(toParentButton, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path()
- print(url.text())
self.assertSamePath(url.text(), path)
self.mouseClick(toParentButton, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
- print(url.text())
self.assertSamePath(url.text(), _tmpDirectory + "/data")
self.mouseClick(toParentButton, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
- print(url.text())
self.assertSamePath(url.text(), _tmpDirectory)
def testClickOnBackToRootTool(self):
@@ -301,9 +297,9 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toRootFileAction")[0]
- button = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toRootFileAction")[0]
+ button = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data.h5"
# init state
@@ -326,9 +322,9 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- action = utils.findChildren(dialog, qt.QAction, name="toDirectoryAction")[0]
- button = utils.getQToolButtonFromAction(action)
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ action = testutils.findChildren(dialog, qt.QAction, name="toDirectoryAction")[0]
+ button = testutils.getQToolButtonFromAction(action)
filename = _tmpDirectory + "/data.h5"
# init state
@@ -355,9 +351,9 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
dialog.show()
self.qWaitForWindowExposed(dialog)
- url = utils.findChildren(dialog, qt.QLineEdit, name="url")[0]
- forwardAction = utils.findChildren(dialog, qt.QAction, name="forwardAction")[0]
- backwardAction = utils.findChildren(dialog, qt.QAction, name="backwardAction")[0]
+ url = testutils.findChildren(dialog, qt.QLineEdit, name="url")[0]
+ forwardAction = testutils.findChildren(dialog, qt.QAction, name="forwardAction")[0]
+ backwardAction = testutils.findChildren(dialog, qt.QAction, name="backwardAction")[0]
filename = _tmpDirectory + "/data.h5"
dialog.setDirectory(_tmpDirectory)
@@ -375,14 +371,14 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.assertFalse(forwardAction.isEnabled())
self.assertTrue(backwardAction.isEnabled())
- button = utils.getQToolButtonFromAction(backwardAction)
+ button = testutils.getQToolButtonFromAction(backwardAction)
self.mouseClick(button, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
self.assertTrue(forwardAction.isEnabled())
self.assertTrue(backwardAction.isEnabled())
self.assertSamePath(url.text(), path2)
- button = utils.getQToolButtonFromAction(forwardAction)
+ button = testutils.getQToolButtonFromAction(forwardAction)
self.mouseClick(button, qt.Qt.LeftButton)
self.qWaitForPendingActions(dialog)
self.assertFalse(forwardAction.isEnabled())
@@ -415,7 +411,7 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
# init state
dialog.selectUrl(_tmpDirectory)
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/singleimage.edf"
path = silx.io.url.DataUrl(scheme="fabio", file_path=filename).path()
index = browser.rootIndex().model().index(filename)
@@ -489,7 +485,7 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
# init state
dialog.selectUrl(_tmpDirectory)
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/data.h5"
path = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/").path()
index = browser.rootIndex().model().index(filename)
@@ -526,7 +522,7 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
# init state
dialog.selectUrl(_tmpDirectory)
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/badformat.edf"
index = browser.rootIndex().model().index(filename)
browser.activated.emit(index)
@@ -550,8 +546,8 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
if fabio is None:
self.skipTest("fabio is missing")
dialog = self.createDialog()
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
- filters = utils.findChildren(dialog, qt.QWidget, name="fileTypeCombo")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ filters = testutils.findChildren(dialog, qt.QWidget, name="fileTypeCombo")[0]
dialog.show()
self.qWaitForWindowExposed(dialog)
dialog.selectUrl(_tmpDirectory)
@@ -573,11 +569,11 @@ class TestImageFileDialogInteraction(utils.TestCaseQt, _UtilsMixin):
self.assertEqual(self._countSelectableItems(browser.model(), browser.rootIndex()), 2)
-class TestImageFileDialogApi(utils.TestCaseQt, _UtilsMixin):
+class TestImageFileDialogApi(testutils.TestCaseQt, _UtilsMixin):
def tearDown(self):
self._deleteDialog()
- utils.TestCaseQt.tearDown(self)
+ testutils.TestCaseQt.tearDown(self)
def testSaveRestoreState(self):
dialog = self.createDialog()
@@ -782,7 +778,7 @@ class TestImageFileDialogApi(utils.TestCaseQt, _UtilsMixin):
dialog = self.createDialog()
self.qWaitForPendingActions(dialog)
- browser = utils.findChildren(dialog, qt.QWidget, name="browser")[0]
+ browser = testutils.findChildren(dialog, qt.QWidget, name="browser")[0]
filename = _tmpDirectory + "/data.h5"
url = silx.io.url.DataUrl(scheme="silx", file_path=filename, data_path="/group/foobar")
diff --git a/silx/gui/fit/FitConfig.py b/silx/gui/fit/FitConfig.py
index 04e411b..479e469 100644
--- a/silx/gui/fit/FitConfig.py
+++ b/silx/gui/fit/FitConfig.py
@@ -1,6 +1,6 @@
# coding: utf-8
# /*##########################################################################
-# Copyright (C) 2004-2016 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -60,7 +60,7 @@ class TabsDialog(qt.QDialog):
# layout2.addWidget(self.buttonHelp)
self.buttonDefault = qt.QPushButton(self)
- self.buttonDefault.setText("Default")
+ self.buttonDefault.setText("Undo changes")
layout2.addWidget(self.buttonDefault)
spacer = qt.QSpacerItem(20, 20,
@@ -138,7 +138,7 @@ class TabsDialogData(TabsDialog):
self.default = {} if default is None else default
- self.buttonDefault.clicked.connect(self.setDefault)
+ self.buttonDefault.clicked.connect(self._resetDefault)
# self.keyPressEvent(qt.Qt.Key_Enter).
def keyPressEvent(self, event):
@@ -174,6 +174,9 @@ class TabsDialogData(TabsDialog):
self.setDefault()
super(TabsDialogData, self).reject()
+ def _resetDefault(self, checked):
+ self.setDefault()
+
def setDefault(self, newdefault=None):
"""Reinitialize :attr:`output` with :attr:`default` or with
new dictionary ``newdefault`` if provided.
diff --git a/silx/gui/fit/FitWidget.py b/silx/gui/fit/FitWidget.py
index 7012b63..78230b1 100644
--- a/silx/gui/fit/FitWidget.py
+++ b/silx/gui/fit/FitWidget.py
@@ -38,7 +38,7 @@ be user defined, or by default are loaded from
__authors__ = ["V.A. Sole", "P. Knobel"]
__license__ = "MIT"
-__date__ = "15/02/2017"
+__date__ = "17/07/2018"
import logging
import sys
@@ -315,8 +315,8 @@ class FitWidget(qt.QWidget):
configuration.update(self.configure())
def setdata(self, x, y, sigmay=None, xmin=None, xmax=None):
- warnings.warn("Method renamed to setData",
- DeprecationWarning)
+ warnings.warning("Method renamed to setData",
+ DeprecationWarning)
self.setData(x, y, sigmay, xmin, xmax)
def setData(self, x, y, sigmay=None, xmin=None, xmax=None):
@@ -525,8 +525,8 @@ class FitWidget(qt.QWidget):
self._emitSignal(ddict)
def startfit(self):
- warnings.warn("Method renamed to startFit",
- DeprecationWarning)
+ warnings.warning("Method renamed to startFit",
+ DeprecationWarning)
self.startFit()
def startFit(self):
diff --git a/silx/gui/fit/test/testBackgroundWidget.py b/silx/gui/fit/test/testBackgroundWidget.py
index 2e366e4..03b17b9 100644
--- a/silx/gui/fit/test/testBackgroundWidget.py
+++ b/silx/gui/fit/test/testBackgroundWidget.py
@@ -24,7 +24,7 @@
# ###########################################################################*/
import unittest
-from ...test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from .. import BackgroundWidget
diff --git a/silx/gui/fit/test/testFitConfig.py b/silx/gui/fit/test/testFitConfig.py
index eea35cc..f89c099 100644
--- a/silx/gui/fit/test/testFitConfig.py
+++ b/silx/gui/fit/test/testFitConfig.py
@@ -30,7 +30,7 @@ __date__ = "05/12/2016"
import unittest
-from ...test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from .. import FitConfig
diff --git a/silx/gui/fit/test/testFitWidget.py b/silx/gui/fit/test/testFitWidget.py
index d542fd0..cfd2bc9 100644
--- a/silx/gui/fit/test/testFitWidget.py
+++ b/silx/gui/fit/test/testFitWidget.py
@@ -26,7 +26,7 @@
import unittest
-from ...test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from ... import qt
from .. import FitWidget
diff --git a/silx/gui/hdf5/Hdf5Item.py b/silx/gui/hdf5/Hdf5Item.py
index 9804907..b3c313e 100644
--- a/silx/gui/hdf5/Hdf5Item.py
+++ b/silx/gui/hdf5/Hdf5Item.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "10/10/2017"
+__date__ = "03/09/2018"
import logging
@@ -37,9 +37,8 @@ from .Hdf5Node import Hdf5Node
import silx.io.utils
from silx.gui.data.TextFormatter import TextFormatter
from ..hdf5.Hdf5Formatter import Hdf5Formatter
-
+from ...third_party import six
_logger = logging.getLogger(__name__)
-
_formatter = TextFormatter()
_hdf5Formatter = Hdf5Formatter(textFormatter=_formatter)
# FIXME: The formatter should be an attribute of the Hdf5Model
@@ -63,8 +62,16 @@ class Hdf5Item(Hdf5Node):
self.__error = None
self.__text = text
self.__linkClass = linkClass
+ self.__nx_class = None
Hdf5Node.__init__(self, parent, populateAll=populateAll)
+ def _getCanonicalName(self):
+ parent = self.parent
+ if parent is None:
+ return self.__text
+ else:
+ return "%s/%s" % (parent._getCanonicalName(), self.__text)
+
@property
def obj(self):
if self.__key:
@@ -152,8 +159,7 @@ class Hdf5Item(Hdf5Node):
try:
obj = parent_obj.get(self.__key)
except Exception as e:
- lib_name = self.obj.__class__.__module__.split(".")[0]
- _logger.debug("Internal %s error", lib_name, exc_info=True)
+ _logger.error("Internal error while reaching HDF5 object: %s", str(e))
_logger.debug("Backtrace", exc_info=True)
try:
self.__obj = parent_obj.get(self.__key, getlink=True)
@@ -184,7 +190,7 @@ class Hdf5Item(Hdf5Node):
elif class_ == silx.io.utils.H5Type.SOFT_LINK:
message = "Soft link broken. Path %s does not exist" % (self.__obj.path)
else:
- name = self.obj.__class__.__name__.split(".")[-1].capitalize()
+ name = self.__obj.__class__.__name__.split(".")[-1].capitalize()
message = "%s broken" % (name)
self.__error = message
self.__isBroken = True
@@ -293,6 +299,8 @@ class Hdf5Item(Hdf5Node):
attributeDict["Data type"] = self._getFormatter().humanReadableType(self.obj, full=True)
elif self.h5Class == silx.io.utils.H5Type.GROUP:
attributeDict["#Title"] = "HDF5 Group"
+ if self.nexusClassName:
+ attributeDict["NX_class"] = self.nexusClassName
attributeDict["Name"] = self.basename
attributeDict["Path"] = self.obj.name
elif self.h5Class == silx.io.utils.H5Type.FILE:
@@ -332,6 +340,20 @@ class Hdf5Item(Hdf5Node):
return tooltip
+ @property
+ def nexusClassName(self):
+ """Returns the Nexus class name"""
+ if self.__nx_class is None:
+ self.__nx_class = self.obj.attrs.get("NX_class", None)
+ if self.__nx_class is None:
+ self.__nx_class = ""
+ else:
+ if six.PY2:
+ self.__nx_class = self.__nx_class.decode()
+ elif not isinstance(self.__nx_class, str):
+ self.__nx_class = str(self.__nx_class, "UTF-8")
+ return self.__nx_class
+
def dataName(self, role):
"""Data for the name column"""
if role == qt.Qt.TextAlignmentRole:
@@ -354,12 +376,13 @@ class Hdf5Item(Hdf5Node):
if self.__error is not None:
return ""
class_ = self.h5Class
- if class_ == silx.io.utils.H5Type.DATASET:
+ if self.isGroupObj():
+ text = self.nexusClassName
+ elif class_ == silx.io.utils.H5Type.DATASET:
text = self._getFormatter().humanReadableType(self.obj)
else:
text = ""
return text
-
return None
def dataShape(self, role):
diff --git a/silx/gui/hdf5/Hdf5LoadingItem.py b/silx/gui/hdf5/Hdf5LoadingItem.py
index 4467366..f11d252 100644
--- a/silx/gui/hdf5/Hdf5LoadingItem.py
+++ b/silx/gui/hdf5/Hdf5LoadingItem.py
@@ -25,11 +25,12 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "23/09/2016"
+__date__ = "06/07/2018"
from .. import qt
from .Hdf5Node import Hdf5Node
+import silx.io.utils
class Hdf5LoadingItem(Hdf5Node):
@@ -49,6 +50,14 @@ class Hdf5LoadingItem(Hdf5Node):
def obj(self):
return None
+ @property
+ def h5Class(self):
+ """Returns the class of the stored object.
+
+ :rtype: silx.io.utils.H5Type
+ """
+ return silx.io.utils.H5Type.FILE
+
def dataName(self, role):
if role == qt.Qt.DecorationRole:
return self.__animatedIcon.currentIcon()
diff --git a/silx/gui/hdf5/Hdf5Node.py b/silx/gui/hdf5/Hdf5Node.py
index 0fcb407..be16535 100644
--- a/silx/gui/hdf5/Hdf5Node.py
+++ b/silx/gui/hdf5/Hdf5Node.py
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "16/06/2017"
+__date__ = "24/07/2018"
import weakref
@@ -52,6 +52,13 @@ class Hdf5Node(object):
self.__child = []
self._populateChild(populateAll=True)
+ def _getCanonicalName(self):
+ parent = self.parent
+ if parent is None:
+ return "root"
+ else:
+ return "%s/?" % (parent._getCanonicalName())
+
@property
def parent(self):
"""Parent of the node, or None if the node is a root
diff --git a/silx/gui/hdf5/Hdf5TreeModel.py b/silx/gui/hdf5/Hdf5TreeModel.py
index 835708a..438200b 100644
--- a/silx/gui/hdf5/Hdf5TreeModel.py
+++ b/silx/gui/hdf5/Hdf5TreeModel.py
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "11/06/2018"
+__date__ = "08/10/2018"
import os
@@ -591,6 +591,13 @@ class Hdf5TreeModel(qt.QAbstractItemModel):
filename = node.obj.filename
self.insertFileAsync(filename, index.row(), synchronizingNode=node)
+ def h5pyObjectRow(self, h5pyObject):
+ for row in range(self.__root.childCount()):
+ item = self.__root.child(row)
+ if item.obj == h5pyObject:
+ return row
+ return -1
+
def synchronizeH5pyObject(self, h5pyObject):
"""
Synchronize a h5py object in all the tree.
@@ -602,7 +609,7 @@ class Hdf5TreeModel(qt.QAbstractItemModel):
index = 0
while index < self.__root.childCount():
item = self.__root.child(index)
- if item.obj is h5pyObject:
+ if item.obj == h5pyObject:
qindex = self.index(index, 0, qt.QModelIndex())
self.synchronizeIndex(qindex)
index += 1
@@ -614,7 +621,7 @@ class Hdf5TreeModel(qt.QAbstractItemModel):
:param qt.QModelIndex index: Index of the item to remove
"""
node = self.nodeFromIndex(index)
- if node.parent is not self.__root:
+ if node.parent != self.__root:
return
self._closeFileIfOwned(node)
self.beginRemoveRows(qt.QModelIndex(), index.row(), index.row())
@@ -632,7 +639,7 @@ class Hdf5TreeModel(qt.QAbstractItemModel):
index = 0
while index < self.__root.childCount():
item = self.__root.child(index)
- if item.obj is h5pyObject:
+ if item.obj == h5pyObject:
qindex = self.index(index, 0, qt.QModelIndex())
self.removeIndex(qindex)
else:
diff --git a/silx/gui/hdf5/NexusSortFilterProxyModel.py b/silx/gui/hdf5/NexusSortFilterProxyModel.py
index 3f2cf8d..216e992 100644
--- a/silx/gui/hdf5/NexusSortFilterProxyModel.py
+++ b/silx/gui/hdf5/NexusSortFilterProxyModel.py
@@ -25,7 +25,7 @@
__authors__ = ["V. Valls"]
__license__ = "MIT"
-__date__ = "25/06/2018"
+__date__ = "24/07/2018"
import logging
@@ -48,6 +48,24 @@ class NexusSortFilterProxyModel(qt.QSortFilterProxyModel):
self.__split = re.compile("(\\d+|\\D+)")
self.__iconCache = {}
+ def hasChildren(self, parent):
+ """Returns true if parent has any children; otherwise returns false.
+
+ :param qt.QModelIndex parent: Index of the item to check
+ :rtype: bool
+ """
+ parent = self.mapToSource(parent)
+ return self.sourceModel().hasChildren(parent)
+
+ def rowCount(self, parent):
+ """Returns the number of rows under the given parent.
+
+ :param qt.QModelIndex parent: Index of the item to check
+ :rtype: int
+ """
+ parent = self.mapToSource(parent)
+ return self.sourceModel().rowCount(parent)
+
def lessThan(self, sourceLeft, sourceRight):
"""Returns True if the value of the item referred to by the given
index `sourceLeft` is less than the value of the item referred to by
diff --git a/silx/gui/hdf5/_utils.py b/silx/gui/hdf5/_utils.py
index 8385129..6a34933 100644
--- a/silx/gui/hdf5/_utils.py
+++ b/silx/gui/hdf5/_utils.py
@@ -178,10 +178,11 @@ class H5Node(object):
elif obj.name.startswith("/"):
elements.pop(0)
path = ""
+ subpath = ""
while len(elements) > 0:
e = elements.pop(0)
- path = path + "/" + e
- link = obj.parent.get(path, getlink=True)
+ subpath = path + "/" + e
+ link = obj.parent.get(subpath, getlink=True)
classlink = silx.io.utils.get_h5_class(link)
if classlink == silx.io.utils.H5Type.EXTERNAL_LINK:
@@ -190,14 +191,18 @@ class H5Node(object):
return self.__get_target(external_obj)
elif classlink == silx.io.utils.H5Type.SOFT_LINK:
# Restart from this stat
- path = ""
root_elements = link.path.split("/")
if link.path == "/":
+ path = ""
root_elements = []
elif link.path.startswith("/"):
+ path = ""
root_elements.pop(0)
+
for name in reversed(root_elements):
elements.insert(0, name)
+ else:
+ path = subpath
return obj.file[path]
diff --git a/silx/gui/hdf5/test/test_hdf5.py b/silx/gui/hdf5/test/test_hdf5.py
index fc27f6b..1751a21 100644
--- a/silx/gui/hdf5/test/test_hdf5.py
+++ b/silx/gui/hdf5/test/test_hdf5.py
@@ -37,9 +37,9 @@ import numpy
import shutil
from contextlib import contextmanager
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import hdf5
-from silx.gui.test.utils import SignalListener
+from silx.gui.utils.testutils import SignalListener
from silx.io import commonh5
import weakref
@@ -123,9 +123,9 @@ class TestHdf5TreeModel(TestCaseQt):
def testAppendFilename(self):
filename = _tmpDirectory + "/data.h5"
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
model.appendFile(filename)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
# clean up
index = model.index(0, 0, qt.QModelIndex())
h5File = model.data(index, hdf5.Hdf5TreeModel.H5PY_OBJECT_ROLE)
@@ -141,9 +141,9 @@ class TestHdf5TreeModel(TestCaseQt):
filename = _tmpDirectory + "/data.h5"
try:
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
model.insertFile(filename)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
# clean up
index = model.index(0, 0, qt.QModelIndex())
h5File = model.data(index, hdf5.Hdf5TreeModel.H5PY_OBJECT_ROLE)
@@ -157,7 +157,7 @@ class TestHdf5TreeModel(TestCaseQt):
filename = _tmpDirectory + "/data.h5"
try:
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
model.insertFileAsync(filename)
index = model.index(0, 0, qt.QModelIndex())
self.assertIsInstance(model.nodeFromIndex(index), hdf5.Hdf5LoadingItem.Hdf5LoadingItem)
@@ -172,25 +172,25 @@ class TestHdf5TreeModel(TestCaseQt):
def testInsertObject(self):
h5 = commonh5.File("/foo/bar/1.mock", "w")
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
model.insertH5pyObject(h5)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
def testRemoveObject(self):
h5 = commonh5.File("/foo/bar/1.mock", "w")
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
model.insertH5pyObject(h5)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
model.removeH5pyObject(h5)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 0)
def testSynchronizeObject(self):
filename = _tmpDirectory + "/data.h5"
h5 = h5py.File(filename)
model = hdf5.Hdf5TreeModel()
model.insertH5pyObject(h5)
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
index = model.index(0, 0, qt.QModelIndex())
node1 = model.nodeFromIndex(index)
model.synchronizeH5pyObject(h5)
@@ -220,15 +220,15 @@ class TestHdf5TreeModel(TestCaseQt):
def testFileMoveState(self):
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.isFileMoveEnabled(), True)
+ self.assertEqual(model.isFileMoveEnabled(), True)
model.setFileMoveEnabled(False)
- self.assertEquals(model.isFileMoveEnabled(), False)
+ self.assertEqual(model.isFileMoveEnabled(), False)
def testFileDropState(self):
model = hdf5.Hdf5TreeModel()
- self.assertEquals(model.isFileDropEnabled(), True)
+ self.assertEqual(model.isFileDropEnabled(), True)
model.setFileDropEnabled(False)
- self.assertEquals(model.isFileDropEnabled(), False)
+ self.assertEqual(model.isFileDropEnabled(), False)
def testSupportedDrop(self):
model = hdf5.Hdf5TreeModel()
@@ -236,7 +236,7 @@ class TestHdf5TreeModel(TestCaseQt):
model.setFileMoveEnabled(False)
model.setFileDropEnabled(False)
- self.assertEquals(model.supportedDropActions(), 0)
+ self.assertEqual(model.supportedDropActions(), 0)
model.setFileMoveEnabled(False)
model.setFileDropEnabled(True)
@@ -252,7 +252,7 @@ class TestHdf5TreeModel(TestCaseQt):
mimeData = qt.QMimeData()
mimeData.setUrls([qt.QUrl.fromLocalFile(filename)])
model.dropMimeData(mimeData, qt.Qt.CopyAction, 0, 0, qt.QModelIndex())
- self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
+ self.assertEqual(model.rowCount(qt.QModelIndex()), 1)
# after sync
self.waitForPendingOperations(model)
index = model.index(0, 0, qt.QModelIndex())
@@ -285,13 +285,13 @@ class TestHdf5TreeModel(TestCaseQt):
model = hdf5.Hdf5TreeModel()
model.insertH5pyObject(h5)
displayed = self.getRowDataAsDict(model, row=0)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock")
self.assertIsInstance(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole], qt.QIcon)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "File")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "File")
def testGroupData(self):
h5 = commonh5.File("/foo/bar/1.mock", "w")
@@ -301,13 +301,13 @@ class TestHdf5TreeModel(TestCaseQt):
model = hdf5.Hdf5TreeModel()
model.insertH5pyObject(d)
displayed = self.getRowDataAsDict(model, row=0)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock::foo")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock::foo")
self.assertIsInstance(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole], qt.QIcon)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "fooo")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "Group")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "fooo")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "Group")
def testDatasetData(self):
h5 = commonh5.File("/foo/bar/1.mock", "w")
@@ -317,13 +317,13 @@ class TestHdf5TreeModel(TestCaseQt):
model = hdf5.Hdf5TreeModel()
model.insertH5pyObject(d)
displayed = self.getRowDataAsDict(model, row=0)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock::foo")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock::foo")
self.assertIsInstance(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole], qt.QIcon)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], value.dtype.name)
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "3")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "[1 2 3]")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "")
- self.assertEquals(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "Dataset")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], value.dtype.name)
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "3")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "[1 2 3]")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "")
+ self.assertEqual(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "Dataset")
def testDropLastAsFirst(self):
model = hdf5.Hdf5TreeModel()
@@ -331,13 +331,13 @@ class TestHdf5TreeModel(TestCaseQt):
h5_2 = commonh5.File("/foo/bar/2.mock", "w")
model.insertH5pyObject(h5_1)
model.insertH5pyObject(h5_2)
- self.assertEquals(self.getItemName(model, 0), "1.mock")
- self.assertEquals(self.getItemName(model, 1), "2.mock")
+ self.assertEqual(self.getItemName(model, 0), "1.mock")
+ self.assertEqual(self.getItemName(model, 1), "2.mock")
index = model.index(1, 0, qt.QModelIndex())
mimeData = model.mimeData([index])
model.dropMimeData(mimeData, qt.Qt.MoveAction, 0, 0, qt.QModelIndex())
- self.assertEquals(self.getItemName(model, 0), "2.mock")
- self.assertEquals(self.getItemName(model, 1), "1.mock")
+ self.assertEqual(self.getItemName(model, 0), "2.mock")
+ self.assertEqual(self.getItemName(model, 1), "1.mock")
def testDropFirstAsLast(self):
model = hdf5.Hdf5TreeModel()
@@ -345,13 +345,13 @@ class TestHdf5TreeModel(TestCaseQt):
h5_2 = commonh5.File("/foo/bar/2.mock", "w")
model.insertH5pyObject(h5_1)
model.insertH5pyObject(h5_2)
- self.assertEquals(self.getItemName(model, 0), "1.mock")
- self.assertEquals(self.getItemName(model, 1), "2.mock")
+ self.assertEqual(self.getItemName(model, 0), "1.mock")
+ self.assertEqual(self.getItemName(model, 1), "2.mock")
index = model.index(0, 0, qt.QModelIndex())
mimeData = model.mimeData([index])
model.dropMimeData(mimeData, qt.Qt.MoveAction, 2, 0, qt.QModelIndex())
- self.assertEquals(self.getItemName(model, 0), "2.mock")
- self.assertEquals(self.getItemName(model, 1), "1.mock")
+ self.assertEqual(self.getItemName(model, 0), "2.mock")
+ self.assertEqual(self.getItemName(model, 1), "1.mock")
def testRootParent(self):
model = hdf5.Hdf5TreeModel()
@@ -359,7 +359,7 @@ class TestHdf5TreeModel(TestCaseQt):
model.insertH5pyObject(h5_1)
index = model.index(0, 0, qt.QModelIndex())
index = model.parent(index)
- self.assertEquals(index, qt.QModelIndex())
+ self.assertEqual(index, qt.QModelIndex())
class TestHdf5TreeModelSignals(TestCaseQt):
@@ -397,27 +397,27 @@ class TestHdf5TreeModelSignals(TestCaseQt):
filename = _tmpDirectory + "/data.h5"
h5 = h5py.File(filename)
self.model.insertH5pyObject(h5)
- self.assertEquals(self.listener.callCount(), 0)
+ self.assertEqual(self.listener.callCount(), 0)
def testLoaded(self):
filename = _tmpDirectory + "/data.h5"
self.model.insertFile(filename)
- self.assertEquals(self.listener.callCount(), 1)
- self.assertEquals(self.listener.karguments(argumentName="signal")[0], "loaded")
+ self.assertEqual(self.listener.callCount(), 1)
+ self.assertEqual(self.listener.karguments(argumentName="signal")[0], "loaded")
self.assertIsNot(self.listener.arguments(callIndex=0)[0], self.h5)
- self.assertEquals(self.listener.arguments(callIndex=0)[0].filename, filename)
+ self.assertEqual(self.listener.arguments(callIndex=0)[0].filename, filename)
def testRemoved(self):
self.model.removeH5pyObject(self.h5)
- self.assertEquals(self.listener.callCount(), 1)
- self.assertEquals(self.listener.karguments(argumentName="signal")[0], "removed")
+ self.assertEqual(self.listener.callCount(), 1)
+ self.assertEqual(self.listener.karguments(argumentName="signal")[0], "removed")
self.assertIs(self.listener.arguments(callIndex=0)[0], self.h5)
def testSynchonized(self):
self.model.synchronizeH5pyObject(self.h5)
self.waitForPendingOperations(self.model)
- self.assertEquals(self.listener.callCount(), 1)
- self.assertEquals(self.listener.karguments(argumentName="signal")[0], "synchronized")
+ self.assertEqual(self.listener.callCount(), 1)
+ self.assertEqual(self.listener.karguments(argumentName="signal")[0], "synchronized")
self.assertIs(self.listener.arguments(callIndex=0)[0], self.h5)
self.assertIsNot(self.listener.arguments(callIndex=0)[1], self.h5)
@@ -595,6 +595,7 @@ class TestH5Node(TestCaseQt):
h5["link/soft_link_to_group"] = h5py.SoftLink("/group")
h5["link/soft_link_to_link"] = h5py.SoftLink("/link/soft_link")
h5["link/soft_link_to_file"] = h5py.SoftLink("/")
+ h5["group/soft_link_relative"] = h5py.SoftLink("dataset")
h5["link/external_link"] = h5py.ExternalLink(externalFilename, "/target/dataset")
h5["link/external_link_to_link"] = h5py.ExternalLink(externalFilename, "/target/link")
h5["broken_link/external_broken_file"] = h5py.ExternalLink(externalFilename + "_not_exists", "/target/link")
@@ -697,6 +698,17 @@ class TestH5Node(TestCaseQt):
self.assertEqual(h5node.local_basename, "soft_link_to_link")
self.assertEqual(h5node.local_name, "/link/soft_link_to_link")
+ def testSoftLinkRelative(self):
+ path = ["base.h5", "group", "soft_link_relative"]
+ h5node = self.getH5NodeFromPath(self.model, path)
+
+ self.assertEqual(h5node.physical_filename, h5node.local_filename)
+ self.assertIn("base.h5", h5node.physical_filename)
+ self.assertEqual(h5node.physical_basename, "dataset")
+ self.assertEqual(h5node.physical_name, "/group/dataset")
+ self.assertEqual(h5node.local_basename, "soft_link_relative")
+ self.assertEqual(h5node.local_name, "/group/soft_link_relative")
+
def testExternalLink(self):
path = ["base.h5", "link", "external_link"]
h5node = self.getH5NodeFromPath(self.model, path)
@@ -895,7 +907,7 @@ class TestHdf5TreeView(TestCaseQt):
view.setSelectedH5Node(tree)
selection = list(view.selectedH5Nodes())
- self.assertEquals(len(selection), 0)
+ self.assertEqual(len(selection), 0)
def testSelection_Tree(self):
tree1 = commonh5.File("/foo/bar/1.mock", "w")
diff --git a/silx/gui/icons.py b/silx/gui/icons.py
index bd10300..ef99591 100644
--- a/silx/gui/icons.py
+++ b/silx/gui/icons.py
@@ -29,7 +29,7 @@ Use :func:`getQIcon` to create Qt QIcon from the name identifying an icon.
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "19/06/2018"
+__date__ = "05/10/2018"
import os
@@ -45,10 +45,30 @@ _logger = logging.getLogger(__name__)
"""Module logger"""
-_cached_icons = weakref.WeakValueDictionary()
+_cached_icons = None
"""Cache loaded icons in a weak structure"""
+def getIconCache():
+ """Get access to all cached icons
+
+ :rtype: dict
+ """
+ global _cached_icons
+ if _cached_icons is None:
+ _cached_icons = weakref.WeakValueDictionary()
+ # Clean up the cache before leaving the application
+ # See https://github.com/silx-kit/silx/issues/1771
+ qt.QApplication.instance().aboutToQuit.connect(cleanIconCache)
+ return _cached_icons
+
+
+def cleanIconCache():
+ """Clean up the icon cache"""
+ _logger.debug("Clean up icon cache")
+ _cached_icons.clear()
+
+
_supported_formats = None
"""Order of file format extension to check"""
@@ -285,7 +305,8 @@ def getAnimatedIcon(name):
:raises: ValueError when name is not known
"""
key = name + "__anim"
- if key not in _cached_icons:
+ cached_icons = getIconCache()
+ if key not in cached_icons:
qtMajorVersion = int(qt.qVersion().split(".")[0])
icon = None
@@ -306,9 +327,9 @@ def getAnimatedIcon(name):
if icon is None:
raise ValueError("Not an animated icon name: %s", name)
- _cached_icons[key] = icon
+ cached_icons[key] = icon
else:
- icon = _cached_icons[key]
+ icon = cached_icons[key]
return icon
@@ -329,12 +350,13 @@ def getQIcon(name):
:return: Corresponding QIcon
:raises: ValueError when name is not known
"""
- if name not in _cached_icons:
+ cached_icons = getIconCache()
+ if name not in cached_icons:
qfile = getQFile(name)
icon = qt.QIcon(qfile.fileName())
- _cached_icons[name] = icon
+ cached_icons[name] = icon
else:
- icon = _cached_icons[name]
+ icon = cached_icons[name]
return icon
diff --git a/silx/gui/plot/ColorBar.py b/silx/gui/plot/ColorBar.py
index 0941e82..fd4d34e 100644
--- a/silx/gui/plot/ColorBar.py
+++ b/silx/gui/plot/ColorBar.py
@@ -155,19 +155,17 @@ class ColorBarWidget(qt.QWidget):
self._disconnectPlot()
def getColormap(self):
- """
-
- :return: the :class:`.Colormap` colormap displayed in the colorbar.
+ """Returns the colormap displayed in the colorbar.
+ :rtype: ~silx.gui.colors.Colormap
"""
return self.getColorScaleBar().getColormap()
def setColormap(self, colormap, data=None):
"""Set the colormap to be displayed.
- :param colormap: The colormap to apply on the
- ColorBarWidget
- :type colormap: :class:`.Colormap`
+ :param ~silx.gui.colors.Colormap colormap:
+ The colormap to apply on the ColorBarWidget
:param numpy.ndarray data: the data to display, needed if the colormap
require an autoscale
"""
@@ -207,7 +205,7 @@ class ColorBarWidget(qt.QWidget):
:return: return the legend displayed along the colorbar
:rtype: str
"""
- return self.legend.getText()
+ return self.legend.text()
def _activeScatterChanged(self, previous, legend):
"""Handle plot active scatter changed"""
diff --git a/silx/gui/plot/CompareImages.py b/silx/gui/plot/CompareImages.py
new file mode 100644
index 0000000..88b257d
--- /dev/null
+++ b/silx/gui/plot/CompareImages.py
@@ -0,0 +1,1190 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""A widget dedicated to compare 2 images.
+"""
+
+__authors__ = ["V. Valls"]
+__license__ = "MIT"
+__date__ = "23/07/2018"
+
+
+import logging
+import numpy
+import weakref
+import collections
+import math
+
+import silx.image.bilinear
+from silx.gui import qt
+from silx.gui import plot
+from silx.gui import icons
+from silx.gui.colors import Colormap
+from silx.gui.plot import tools
+from silx.third_party import enum
+
+_logger = logging.getLogger(__name__)
+
+from silx.opencl import ocl
+if ocl is not None:
+ from silx.opencl import sift
+else: # No OpenCL device or no pyopencl
+ sift = None
+
+
+@enum.unique
+class VisualizationMode(enum.Enum):
+ """Enum for each visualization mode available."""
+ ONLY_A = 'a'
+ ONLY_B = 'b'
+ VERTICAL_LINE = 'vline'
+ HORIZONTAL_LINE = 'hline'
+ COMPOSITE_RED_BLUE_GRAY = "rbgchannel"
+ COMPOSITE_RED_BLUE_GRAY_NEG = "rbgnegchannel"
+
+
+@enum.unique
+class AlignmentMode(enum.Enum):
+ """Enum for each alignment mode available."""
+ ORIGIN = 'origin'
+ CENTER = 'center'
+ STRETCH = 'stretch'
+ AUTO = 'auto'
+
+
+AffineTransformation = collections.namedtuple("AffineTransformation",
+ ["tx", "ty", "sx", "sy", "rot"])
+"""Contains a 2D affine transformation: translation, scale and rotation"""
+
+
+class CompareImagesToolBar(qt.QToolBar):
+ """ToolBar containing specific tools to custom the configuration of a
+ :class:`CompareImages` widget
+
+ Use :meth:`setCompareWidget` to connect this toolbar to a specific
+ :class:`CompareImages` widget.
+
+ :param Union[qt.QWidget,None] parent: Parent of this widget.
+ """
+ def __init__(self, parent=None):
+ qt.QToolBar.__init__(self, parent)
+
+ self.__compareWidget = None
+
+ menu = qt.QMenu(self)
+ self.__visualizationAction = qt.QAction(self)
+ self.__visualizationAction.setMenu(menu)
+ self.__visualizationAction.setCheckable(False)
+ self.addAction(self.__visualizationAction)
+ self.__visualizationGroup = qt.QActionGroup(self)
+ self.__visualizationGroup.setExclusive(True)
+ self.__visualizationGroup.triggered.connect(self.__visualizationModeChanged)
+
+ icon = icons.getQIcon("compare-mode-a")
+ action = qt.QAction(icon, "Display the first image only", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_A))
+ action.setProperty("mode", VisualizationMode.ONLY_A)
+ menu.addAction(action)
+ self.__aModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-mode-b")
+ action = qt.QAction(icon, "Display the second image only", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_B))
+ action.setProperty("mode", VisualizationMode.ONLY_B)
+ menu.addAction(action)
+ self.__bModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-mode-vline")
+ action = qt.QAction(icon, "Vertical compare mode", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_V))
+ action.setProperty("mode", VisualizationMode.VERTICAL_LINE)
+ menu.addAction(action)
+ self.__vlineModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-mode-hline")
+ action = qt.QAction(icon, "Horizontal compare mode", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_H))
+ action.setProperty("mode", VisualizationMode.HORIZONTAL_LINE)
+ menu.addAction(action)
+ self.__hlineModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-mode-rb-channel")
+ action = qt.QAction(icon, "Blue/red compare mode (additive mode)", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_C))
+ action.setProperty("mode", VisualizationMode.COMPOSITE_RED_BLUE_GRAY)
+ menu.addAction(action)
+ self.__brChannelModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-mode-rbneg-channel")
+ action = qt.QAction(icon, "Yellow/cyan compare mode (subtractive mode)", self)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ action.setShortcut(qt.QKeySequence(qt.Qt.Key_W))
+ action.setProperty("mode", VisualizationMode.COMPOSITE_RED_BLUE_GRAY_NEG)
+ menu.addAction(action)
+ self.__ycChannelModeAction = action
+ self.__visualizationGroup.addAction(action)
+
+ menu = qt.QMenu(self)
+ self.__alignmentAction = qt.QAction(self)
+ self.__alignmentAction.setMenu(menu)
+ self.__alignmentAction.setIconVisibleInMenu(True)
+ self.addAction(self.__alignmentAction)
+ self.__alignmentGroup = qt.QActionGroup(self)
+ self.__alignmentGroup.setExclusive(True)
+ self.__alignmentGroup.triggered.connect(self.__alignmentModeChanged)
+
+ icon = icons.getQIcon("compare-align-origin")
+ action = qt.QAction(icon, "Align images on their upper-left pixel", self)
+ action.setProperty("mode", AlignmentMode.ORIGIN)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ self.__originAlignAction = action
+ menu.addAction(action)
+ self.__alignmentGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-align-center")
+ action = qt.QAction(icon, "Center images", self)
+ action.setProperty("mode", AlignmentMode.CENTER)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ self.__centerAlignAction = action
+ menu.addAction(action)
+ self.__alignmentGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-align-stretch")
+ action = qt.QAction(icon, "Stretch the second image on the first one", self)
+ action.setProperty("mode", AlignmentMode.STRETCH)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ self.__stretchAlignAction = action
+ menu.addAction(action)
+ self.__alignmentGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-align-auto")
+ action = qt.QAction(icon, "Auto-alignment of the second image", self)
+ action.setProperty("mode", AlignmentMode.AUTO)
+ action.setIconVisibleInMenu(True)
+ action.setCheckable(True)
+ self.__autoAlignAction = action
+ menu.addAction(action)
+ if sift is None:
+ action.setEnabled(False)
+ action.setToolTip("Sift module is not available")
+ self.__alignmentGroup.addAction(action)
+
+ icon = icons.getQIcon("compare-keypoints")
+ action = qt.QAction(icon, "Display/hide alignment keypoints", self)
+ action.setCheckable(True)
+ action.triggered.connect(self.__keypointVisibilityChanged)
+ self.addAction(action)
+ self.__displayKeypoints = action
+
+ def setCompareWidget(self, widget):
+ """
+ Connect this tool bar to a specific :class:`CompareImages` widget.
+
+ :param Union[None,CompareImages] widget: The widget to connect with.
+ """
+ compareWidget = self.getCompareWidget()
+ if compareWidget is not None:
+ compareWidget.sigConfigurationChanged.disconnect(self.__updateSelectedActions)
+ compareWidget = widget
+ if compareWidget is None:
+ self.__compareWidget = None
+ else:
+ self.__compareWidget = weakref.ref(compareWidget)
+ if compareWidget is not None:
+ widget.sigConfigurationChanged.connect(self.__updateSelectedActions)
+ self.__updateSelectedActions()
+
+ def getCompareWidget(self):
+ """Returns the connected widget.
+
+ :rtype: CompareImages
+ """
+ if self.__compareWidget is None:
+ return None
+ else:
+ return self.__compareWidget()
+
+ def __updateSelectedActions(self):
+ """
+ Update the state of this tool bar according to the state of the
+ connected :class:`CompareImages` widget.
+ """
+ widget = self.getCompareWidget()
+ if widget is None:
+ return
+
+ mode = widget.getVisualizationMode()
+ action = None
+ for a in self.__visualizationGroup.actions():
+ actionMode = a.property("mode")
+ if mode == actionMode:
+ action = a
+ break
+ old = self.__visualizationGroup.blockSignals(True)
+ if action is not None:
+ # Check this action
+ action.setChecked(True)
+ else:
+ action = self.__visualizationGroup.checkedAction()
+ if action is not None:
+ # Uncheck this action
+ action.setChecked(False)
+ self.__updateVisualizationMenu()
+ self.__visualizationGroup.blockSignals(old)
+
+ mode = widget.getAlignmentMode()
+ action = None
+ for a in self.__alignmentGroup.actions():
+ actionMode = a.property("mode")
+ if mode == actionMode:
+ action = a
+ break
+ old = self.__alignmentGroup.blockSignals(True)
+ if action is not None:
+ # Check this action
+ action.setChecked(True)
+ else:
+ action = self.__alignmentGroup.checkedAction()
+ if action is not None:
+ # Uncheck this action
+ action.setChecked(False)
+ self.__updateAlignmentMenu()
+ self.__alignmentGroup.blockSignals(old)
+
+ def __visualizationModeChanged(self, selectedAction):
+ """Called when user requesting changes of the visualization mode.
+ """
+ self.__updateVisualizationMenu()
+ widget = self.getCompareWidget()
+ if widget is not None:
+ mode = selectedAction.property("mode")
+ widget.setVisualizationMode(mode)
+
+ def __updateVisualizationMenu(self):
+ """Update the state of the action containing visualization menu.
+ """
+ selectedAction = self.__visualizationGroup.checkedAction()
+ if selectedAction is not None:
+ self.__visualizationAction.setText(selectedAction.text())
+ self.__visualizationAction.setIcon(selectedAction.icon())
+ self.__visualizationAction.setToolTip(selectedAction.toolTip())
+ else:
+ self.__visualizationAction.setText("")
+ self.__visualizationAction.setIcon(qt.QIcon())
+ self.__visualizationAction.setToolTip("")
+
+ def __alignmentModeChanged(self, selectedAction):
+ """Called when user requesting changes of the alignment mode.
+ """
+ self.__updateAlignmentMenu()
+ widget = self.getCompareWidget()
+ if widget is not None:
+ mode = selectedAction.property("mode")
+ widget.setAlignmentMode(mode)
+
+ def __updateAlignmentMenu(self):
+ """Update the state of the action containing alignment menu.
+ """
+ selectedAction = self.__alignmentGroup.checkedAction()
+ if selectedAction is not None:
+ self.__alignmentAction.setText(selectedAction.text())
+ self.__alignmentAction.setIcon(selectedAction.icon())
+ self.__alignmentAction.setToolTip(selectedAction.toolTip())
+ else:
+ self.__alignmentAction.setText("")
+ self.__alignmentAction.setIcon(qt.QIcon())
+ self.__alignmentAction.setToolTip("")
+
+ def __keypointVisibilityChanged(self):
+ """Called when action managing keypoints visibility changes"""
+ widget = self.getCompareWidget()
+ if widget is not None:
+ keypointsVisible = self.__displayKeypoints.isChecked()
+ widget.setKeypointsVisible(keypointsVisible)
+
+
+class CompareImagesStatusBar(qt.QStatusBar):
+ """StatusBar containing specific information contained in a
+ :class:`CompareImages` widget
+
+ Use :meth:`setCompareWidget` to connect this toolbar to a specific
+ :class:`CompareImages` widget.
+
+ :param Union[qt.QWidget,None] parent: Parent of this widget.
+ """
+ def __init__(self, parent=None):
+ qt.QStatusBar.__init__(self, parent)
+ self.setSizeGripEnabled(False)
+ self.layout().setSpacing(0)
+ self.__compareWidget = None
+ self._label1 = qt.QLabel(self)
+ self._label1.setFrameShape(qt.QFrame.WinPanel)
+ self._label1.setFrameShadow(qt.QFrame.Sunken)
+ self._label2 = qt.QLabel(self)
+ self._label2.setFrameShape(qt.QFrame.WinPanel)
+ self._label2.setFrameShadow(qt.QFrame.Sunken)
+ self._transform = qt.QLabel(self)
+ self._transform.setFrameShape(qt.QFrame.WinPanel)
+ self._transform.setFrameShadow(qt.QFrame.Sunken)
+ self.addWidget(self._label1)
+ self.addWidget(self._label2)
+ self.addWidget(self._transform)
+ self._pos = None
+ self._updateStatusBar()
+
+ def setCompareWidget(self, widget):
+ """
+ Connect this tool bar to a specific :class:`CompareImages` widget.
+
+ :param Union[None,CompareImages] widget: The widget to connect with.
+ """
+ compareWidget = self.getCompareWidget()
+ if compareWidget is not None:
+ compareWidget.getPlot().sigPlotSignal.disconnect(self.__plotSignalReceived)
+ compareWidget.sigConfigurationChanged.disconnect(self.__dataChanged)
+ compareWidget = widget
+ if compareWidget is None:
+ self.__compareWidget = None
+ else:
+ self.__compareWidget = weakref.ref(compareWidget)
+ if compareWidget is not None:
+ compareWidget.getPlot().sigPlotSignal.connect(self.__plotSignalReceived)
+ compareWidget.sigConfigurationChanged.connect(self.__dataChanged)
+
+ def getCompareWidget(self):
+ """Returns the connected widget.
+
+ :rtype: CompareImages
+ """
+ if self.__compareWidget is None:
+ return None
+ else:
+ return self.__compareWidget()
+
+ def __plotSignalReceived(self, event):
+ """Called when old style signals at emmited from the plot."""
+ if event["event"] == "mouseMoved":
+ x, y = event["x"], event["y"]
+ self.__mouseMoved(x, y)
+
+ def __mouseMoved(self, x, y):
+ """Called when mouse move over the plot."""
+ self._pos = x, y
+ self._updateStatusBar()
+
+ def __dataChanged(self):
+ """Called when internal data from the connected widget changes."""
+ self._updateStatusBar()
+
+ def _formatData(self, data):
+ """Format pixel of an image.
+
+ It supports intensity, RGB, and RGBA.
+
+ :param Union[int,float,numpy.ndarray,str]: Value of a pixel
+ :rtype: str
+ """
+ if data is None:
+ return "No data"
+ if isinstance(data, (int, numpy.integer)):
+ return "%d" % data
+ if isinstance(data, (float, numpy.floating)):
+ return "%f" % data
+ if isinstance(data, numpy.ndarray):
+ # RGBA value
+ if data.shape == (3,):
+ return "R:%d G:%d B:%d" % (data[0], data[1], data[2])
+ elif data.shape == (4,):
+ return "R:%d G:%d B:%d A:%d" % (data[0], data[1], data[2], data[3])
+ _logger.debug("Unsupported data format %s. Cast it to string.", type(data))
+ return str(data)
+
+ def _updateStatusBar(self):
+ """Update the content of the status bar"""
+ widget = self.getCompareWidget()
+ if widget is None:
+ self._label1.setText("Image1: NA")
+ self._label2.setText("Image2: NA")
+ self._transform.setVisible(False)
+ else:
+ transform = widget.getTransformation()
+ self._transform.setVisible(transform is not None)
+ if transform is not None:
+ has_notable_translation = not numpy.isclose(transform.tx, 0.0, atol=0.01) \
+ or not numpy.isclose(transform.ty, 0.0, atol=0.01)
+ has_notable_scale = not numpy.isclose(transform.sx, 1.0, atol=0.01) \
+ or not numpy.isclose(transform.sy, 1.0, atol=0.01)
+ has_notable_rotation = not numpy.isclose(transform.rot, 0.0, atol=0.01)
+
+ strings = []
+ if has_notable_translation:
+ strings.append("Translation")
+ if has_notable_scale:
+ strings.append("Scale")
+ if has_notable_rotation:
+ strings.append("Rotation")
+ if strings == []:
+ has_translation = not numpy.isclose(transform.tx, 0.0) \
+ or not numpy.isclose(transform.ty, 0.0)
+ has_scale = not numpy.isclose(transform.sx, 1.0) \
+ or not numpy.isclose(transform.sy, 1.0)
+ has_rotation = not numpy.isclose(transform.rot, 0.0)
+ if has_translation or has_scale or has_rotation:
+ text = "No big changes"
+ else:
+ text = "No changes"
+ else:
+ text = "+".join(strings)
+ self._transform.setText("Align: " + text)
+
+ strings = []
+ if not numpy.isclose(transform.ty, 0.0):
+ strings.append("Translation x: %0.3fpx" % transform.tx)
+ if not numpy.isclose(transform.ty, 0.0):
+ strings.append("Translation y: %0.3fpx" % transform.ty)
+ if not numpy.isclose(transform.sx, 1.0):
+ strings.append("Scale x: %0.3f" % transform.sx)
+ if not numpy.isclose(transform.sy, 1.0):
+ strings.append("Scale y: %0.3f" % transform.sy)
+ if not numpy.isclose(transform.rot, 0.0):
+ strings.append("Rotation: %0.3fdeg" % (transform.rot * 180 / numpy.pi))
+ if strings == []:
+ text = "No transformation"
+ else:
+ text = "\n".join(strings)
+ self._transform.setToolTip(text)
+
+ if self._pos is None:
+ self._label1.setText("Image1: NA")
+ self._label2.setText("Image2: NA")
+ else:
+ data1, data2 = widget.getRawPixelData(self._pos[0], self._pos[1])
+ if isinstance(data1, str):
+ self._label1.setToolTip(data1)
+ text1 = "NA"
+ else:
+ self._label1.setToolTip("")
+ text1 = self._formatData(data1)
+ if isinstance(data2, str):
+ self._label2.setToolTip(data2)
+ text2 = "NA"
+ else:
+ self._label2.setToolTip("")
+ text2 = self._formatData(data2)
+ self._label1.setText("Image1: %s" % text1)
+ self._label2.setText("Image2: %s" % text2)
+
+
+class CompareImages(qt.QMainWindow):
+ """Widget providing tools to compare 2 images.
+
+ .. image:: img/CompareImages.png
+
+ :param Union[qt.QWidget,None] parent: Parent of this widget.
+ :param backend: The backend to use, in:
+ 'matplotlib' (default), 'mpl', 'opengl', 'gl', 'none'
+ or a :class:`BackendBase.BackendBase` class
+ :type backend: str or :class:`BackendBase.BackendBase`
+ """
+
+ VisualizationMode = VisualizationMode
+ """Available visualization modes"""
+
+ AlignmentMode = AlignmentMode
+ """Available alignment modes"""
+
+ sigConfigurationChanged = qt.Signal()
+ """Emitted when the configuration of the widget (visualization mode,
+ alignement mode...) have changed."""
+
+ def __init__(self, parent=None, backend=None):
+ qt.QMainWindow.__init__(self, parent)
+
+ if parent is None:
+ self.setWindowTitle('Compare images')
+ else:
+ self.setWindowFlags(qt.Qt.Widget)
+
+ self.__transformation = None
+ self.__raw1 = None
+ self.__raw2 = None
+ self.__data1 = None
+ self.__data2 = None
+ self.__previousSeparatorPosition = None
+
+ self.__plot = plot.PlotWidget(parent=self, backend=backend)
+ self.__plot.getXAxis().setLabel('Columns')
+ self.__plot.getYAxis().setLabel('Rows')
+ if silx.config.DEFAULT_PLOT_IMAGE_Y_AXIS_ORIENTATION == 'downward':
+ self.__plot.getYAxis().setInverted(True)
+
+ self.__plot.setKeepDataAspectRatio(True)
+ self.__plot.sigPlotSignal.connect(self.__plotSlot)
+ self.__plot.setAxesDisplayed(False)
+
+ self.setCentralWidget(self.__plot)
+
+ legend = VisualizationMode.VERTICAL_LINE.name
+ self.__plot.addXMarker(
+ 0,
+ legend=legend,
+ text='',
+ draggable=True,
+ color='blue',
+ constraint=self.__separatorConstraint)
+ self.__vline = self.__plot._getMarker(legend)
+
+ legend = VisualizationMode.HORIZONTAL_LINE.name
+ self.__plot.addYMarker(
+ 0,
+ legend=legend,
+ text='',
+ draggable=True,
+ color='blue',
+ constraint=self.__separatorConstraint)
+ self.__hline = self.__plot._getMarker(legend)
+
+ # default values
+ self.__visualizationMode = ""
+ self.__alignmentMode = ""
+ self.__keypointsVisible = True
+
+ self.setAlignmentMode(AlignmentMode.ORIGIN)
+ self.setVisualizationMode(VisualizationMode.VERTICAL_LINE)
+ self.setKeypointsVisible(False)
+
+ # Toolbars
+
+ self._createToolBars(self.__plot)
+ if self._interactiveModeToolBar is not None:
+ self.addToolBar(self._interactiveModeToolBar)
+ if self._imageToolBar is not None:
+ self.addToolBar(self._imageToolBar)
+ if self._compareToolBar is not None:
+ self.addToolBar(self._compareToolBar)
+
+ # Statusbar
+
+ self._createStatusBar(self.__plot)
+ if self._statusBar is not None:
+ self.setStatusBar(self._statusBar)
+
+ def _createStatusBar(self, plot):
+ self._statusBar = CompareImagesStatusBar(self)
+ self._statusBar.setCompareWidget(self)
+
+ def _createToolBars(self, plot):
+ """Create tool bars displayed by the widget"""
+ toolBar = tools.InteractiveModeToolBar(parent=self, plot=plot)
+ self._interactiveModeToolBar = toolBar
+ toolBar = tools.ImageToolBar(parent=self, plot=plot)
+ self._imageToolBar = toolBar
+ toolBar = CompareImagesToolBar(self)
+ toolBar.setCompareWidget(self)
+ self._compareToolBar = toolBar
+
+ def getPlot(self):
+ """Returns the plot which is used to display the images.
+
+ :rtype: silx.gui.plot.PlotWidget
+ """
+ return self.__plot
+
+ def getRawPixelData(self, x, y):
+ """Return the raw pixel of each image data from axes positions.
+
+ If the coordinate is outside of the image it returns None element in
+ the tuple.
+
+ The pixel is reach from the raw data image without filter or
+ transformation. But the coordinate x and y are in the reference of the
+ current displayed mode.
+
+ :param float x: X-coordinate of the pixel in the current displayed plot
+ :param float y: Y-coordinate of the pixel in the current displayed plot
+ :return: A tuple of for each images containing pixel information. It
+ could be a scalar value or an array in case of RGB/RGBA informations.
+ It also could be a string containing information is some cases.
+ :rtype: Tuple(Union[int,float,numpy.ndarray,str],Union[int,float,numpy.ndarray,str])
+ """
+ data2 = None
+ alignmentMode = self.__alignmentMode
+ raw1, raw2 = self.__raw1, self.__raw2
+ if alignmentMode == AlignmentMode.ORIGIN:
+ x1 = x
+ y1 = y
+ x2 = x
+ y2 = y
+ elif alignmentMode == AlignmentMode.CENTER:
+ yy = max(raw1.shape[0], raw2.shape[0])
+ xx = max(raw1.shape[1], raw2.shape[1])
+ x1 = x - (xx - raw1.shape[1]) * 0.5
+ x2 = x - (xx - raw2.shape[1]) * 0.5
+ y1 = y - (yy - raw1.shape[0]) * 0.5
+ y2 = y - (yy - raw2.shape[0]) * 0.5
+ elif alignmentMode == AlignmentMode.STRETCH:
+ x1 = x
+ y1 = y
+ x2 = x * raw2.shape[1] / raw1.shape[1]
+ y2 = x * raw2.shape[1] / raw1.shape[1]
+ elif alignmentMode == AlignmentMode.AUTO:
+ x1 = x
+ y1 = y
+ # Not implemented
+ data2 = "Not implemented with sift"
+ else:
+ assert(False)
+
+ x1, y1 = int(x1), int(y1)
+ if raw1 is None or y1 < 0 or y1 >= raw1.shape[0] or x1 < 0 or x1 >= raw1.shape[1]:
+ data1 = None
+ else:
+ data1 = raw1[y1, x1]
+
+ if data2 is None:
+ x2, y2 = int(x2), int(y2)
+ if raw2 is None or y2 < 0 or y2 >= raw2.shape[0] or x2 < 0 or x2 >= raw2.shape[1]:
+ data2 = None
+ else:
+ data2 = raw2[y2, x2]
+
+ return data1, data2
+
+ def setVisualizationMode(self, mode):
+ """Set the visualization mode.
+
+ :param str mode: New visualization to display the image comparison
+ """
+ if self.__visualizationMode == mode:
+ return
+ self.__visualizationMode = mode
+ mode = self.getVisualizationMode()
+ self.__vline.setVisible(mode == VisualizationMode.VERTICAL_LINE)
+ self.__hline.setVisible(mode == VisualizationMode.HORIZONTAL_LINE)
+ self.__updateData()
+ self.sigConfigurationChanged.emit()
+
+ def getVisualizationMode(self):
+ """Returns the current interaction mode."""
+ return self.__visualizationMode
+
+ def setAlignmentMode(self, mode):
+ """Set the alignment mode.
+
+ :param str mode: New alignement to apply to images
+ """
+ if self.__alignmentMode == mode:
+ return
+ self.__alignmentMode = mode
+ self.__updateData()
+ self.sigConfigurationChanged.emit()
+
+ def getAlignmentMode(self):
+ """Returns the current selected alignemnt mode."""
+ return self.__alignmentMode
+
+ def setKeypointsVisible(self, isVisible):
+ """Set keypoints visibility.
+
+ :param bool isVisible: If True, keypoints are displayed (if some)
+ """
+ if self.__keypointsVisible == isVisible:
+ return
+ self.__keypointsVisible = isVisible
+ self.__updateKeyPoints()
+ self.sigConfigurationChanged.emit()
+
+ def __setDefaultAlignmentMode(self):
+ """Reset the alignemnt mode to the default value"""
+ self.setAlignmentMode(AlignmentMode.ORIGIN)
+
+ def __plotSlot(self, event):
+ """Handle events from the plot"""
+ if event['event'] in ('markerMoving', 'markerMoved'):
+ mode = self.getVisualizationMode()
+ legend = mode.name
+ if event['label'] == legend:
+ if mode == VisualizationMode.VERTICAL_LINE:
+ value = int(float(str(event['xdata'])))
+ elif mode == VisualizationMode.HORIZONTAL_LINE:
+ value = int(float(str(event['ydata'])))
+ else:
+ assert(False)
+ if self.__previousSeparatorPosition != value:
+ self.__separatorMoved(value)
+ self.__previousSeparatorPosition = value
+
+ def __separatorConstraint(self, x, y):
+ """Manage contains on the separators to clamp them inside the images."""
+ if self.__data1 is None:
+ return 0, 0
+ x = int(x)
+ if x < 0:
+ x = 0
+ elif x > self.__data1.shape[1]:
+ x = self.__data1.shape[1]
+ y = int(y)
+ if y < 0:
+ y = 0
+ elif y > self.__data1.shape[0]:
+ y = self.__data1.shape[0]
+ return x, y
+
+ def __updateSeparators(self):
+ """Redraw images according to the current state of the separators.
+ """
+ mode = self.getVisualizationMode()
+ if mode == VisualizationMode.VERTICAL_LINE:
+ pos = self.__vline.getXPosition()
+ self.__separatorMoved(pos)
+ self.__previousSeparatorPosition = pos
+ elif mode == VisualizationMode.HORIZONTAL_LINE:
+ pos = self.__hline.getYPosition()
+ self.__separatorMoved(pos)
+ self.__previousSeparatorPosition = pos
+ else:
+ self.__image1.setOrigin((0, 0))
+ self.__image2.setOrigin((0, 0))
+
+ def __separatorMoved(self, pos):
+ """Called when vertical or horizontal separators have moved.
+
+ Update the displayed images.
+ """
+ if self.__data1 is None:
+ return
+
+ mode = self.getVisualizationMode()
+ if mode == VisualizationMode.VERTICAL_LINE:
+ pos = int(pos)
+ if pos <= 0:
+ pos = 0
+ elif pos >= self.__data1.shape[1]:
+ pos = self.__data1.shape[1]
+ data1 = self.__data1[:, 0:pos]
+ data2 = self.__data2[:, pos:]
+ self.__image1.setData(data1, copy=False)
+ self.__image2.setData(data2, copy=False)
+ self.__image2.setOrigin((pos, 0))
+ elif mode == VisualizationMode.HORIZONTAL_LINE:
+ pos = int(pos)
+ if pos <= 0:
+ pos = 0
+ elif pos >= self.__data1.shape[0]:
+ pos = self.__data1.shape[0]
+ data1 = self.__data1[0:pos, :]
+ data2 = self.__data2[pos:, :]
+ self.__image1.setData(data1, copy=False)
+ self.__image2.setData(data2, copy=False)
+ self.__image2.setOrigin((0, pos))
+ else:
+ assert(False)
+
+ def setData(self, image1, image2):
+ """Set images to compare.
+
+ Images can contains floating-point or integer values, or RGB and RGBA
+ values, but should have comparable intensities.
+
+ RGB and RGBA images are provided as an array as `[width,height,channels]`
+ of usigned integer 8-bits or floating-points between 0.0 to 1.0.
+
+ :param numpy.ndarray image1: The first image
+ :param numpy.ndarray image2: The second image
+ """
+ self.__raw1 = image1
+ self.__raw2 = image2
+ self.__updateData()
+ self.__plot.resetZoom()
+
+ def setImage1(self, image1):
+ """Set image1 to be compared.
+
+ Images can contains floating-point or integer values, or RGB and RGBA
+ values, but should have comparable intensities.
+
+ RGB and RGBA images are provided as an array as `[width,height,channels]`
+ of usigned integer 8-bits or floating-points between 0.0 to 1.0.
+
+ :param numpy.ndarray image1: The first image
+ """
+ self.__raw1 = image1
+ self.__updateData()
+ self.__plot.resetZoom()
+
+ def setImage2(self, image2):
+ """Set image2 to be compared.
+
+ Images can contains floating-point or integer values, or RGB and RGBA
+ values, but should have comparable intensities.
+
+ RGB and RGBA images are provided as an array as `[width,height,channels]`
+ of usigned integer 8-bits or floating-points between 0.0 to 1.0.
+
+ :param numpy.ndarray image2: The second image
+ """
+ self.__raw2 = image2
+ self.__updateData()
+ self.__plot.resetZoom()
+
+ def __updateKeyPoints(self):
+ """Update the displayed keypoints using cached keypoints.
+ """
+ if self.__keypointsVisible:
+ data = self.__matching_keypoints
+ else:
+ data = [], [], []
+ self.__plot.addScatter(x=data[0],
+ y=data[1],
+ z=1,
+ value=data[2],
+ legend="keypoints",
+ colormap=Colormap("spring"))
+
+ def __updateData(self):
+ """Compute aligned image when the alignement mode changes.
+
+ This function cache input images which are used when
+ vertical/horizontal separators moves.
+ """
+ raw1, raw2 = self.__raw1, self.__raw2
+ if raw1 is None or raw2 is None:
+ return
+
+ alignmentMode = self.getAlignmentMode()
+ self.__transformation = None
+
+ if alignmentMode == AlignmentMode.ORIGIN:
+ yy = max(raw1.shape[0], raw2.shape[0])
+ xx = max(raw1.shape[1], raw2.shape[1])
+ size = yy, xx
+ data1 = self.__createMarginImage(raw1, size, transparent=True)
+ data2 = self.__createMarginImage(raw2, size, transparent=True)
+ self.__matching_keypoints = [0.0], [0.0], [1.0]
+ elif alignmentMode == AlignmentMode.CENTER:
+ yy = max(raw1.shape[0], raw2.shape[0])
+ xx = max(raw1.shape[1], raw2.shape[1])
+ size = yy, xx
+ data1 = self.__createMarginImage(raw1, size, transparent=True, center=True)
+ data2 = self.__createMarginImage(raw2, size, transparent=True, center=True)
+ self.__matching_keypoints = ([data1.shape[1] // 2],
+ [data1.shape[0] // 2],
+ [1.0])
+ elif alignmentMode == AlignmentMode.STRETCH:
+ data1 = raw1
+ data2 = self.__rescaleImage(raw2, data1.shape)
+ self.__matching_keypoints = ([0, data1.shape[1], data1.shape[1], 0],
+ [0, 0, data1.shape[0], data1.shape[0]],
+ [1.0, 1.0, 1.0, 1.0])
+ elif alignmentMode == AlignmentMode.AUTO:
+ # TODO: sift implementation do not support RGBA images
+ yy = max(raw1.shape[0], raw2.shape[0])
+ xx = max(raw1.shape[1], raw2.shape[1])
+ size = yy, xx
+ data1 = self.__createMarginImage(raw1, size)
+ data2 = self.__createMarginImage(raw2, size)
+ self.__matching_keypoints = [0.0], [0.0], [1.0]
+ try:
+ data1, data2 = self.__createSiftData(data1, data2)
+ if data2 is None:
+ raise ValueError("Unexpected None value")
+ except Exception as e:
+ # TODO: Display it on the GUI
+ _logger.error(e)
+ self.__setDefaultAlignmentMode()
+ return
+ else:
+ assert(False)
+
+ mode = self.getVisualizationMode()
+ if mode == VisualizationMode.COMPOSITE_RED_BLUE_GRAY_NEG:
+ data1 = self.__composeImage(data1, data2, mode)
+ data2 = numpy.empty((0, 0))
+ elif mode == VisualizationMode.COMPOSITE_RED_BLUE_GRAY:
+ data1 = self.__composeImage(data1, data2, mode)
+ data2 = numpy.empty((0, 0))
+ elif mode == VisualizationMode.ONLY_A:
+ data2 = numpy.empty((0, 0))
+ elif mode == VisualizationMode.ONLY_B:
+ data1 = numpy.empty((0, 0))
+
+ self.__data1, self.__data2 = data1, data2
+ self.__plot.addImage(data1, z=0, legend="image1", resetzoom=False)
+ self.__plot.addImage(data2, z=0, legend="image2", resetzoom=False)
+ self.__image1 = self.__plot.getImage("image1")
+ self.__image2 = self.__plot.getImage("image2")
+ self.__updateKeyPoints()
+
+ # Set the separator into the middle
+ if self.__previousSeparatorPosition is None:
+ value = self.__data1.shape[1] // 2
+ self.__vline.setPosition(value, 0)
+ value = self.__data1.shape[0] // 2
+ self.__hline.setPosition(0, value)
+ self.__updateSeparators()
+
+ # Avoid to change the colormap range when the separator is moving
+ # TODO: The colormap histogram will still be wrong
+ mode1 = self.__getImageMode(data1)
+ mode2 = self.__getImageMode(data2)
+ if mode1 == "intensity" and mode1 == mode2:
+ if self.__data1.size == 0:
+ vmin = self.__data2.min()
+ vmax = self.__data2.max()
+ elif self.__data2.size == 0:
+ vmin = self.__data1.min()
+ vmax = self.__data1.max()
+ else:
+ vmin = min(self.__data1.min(), self.__data2.min())
+ vmax = max(self.__data1.max(), self.__data2.max())
+ colormap = Colormap(vmin=vmin, vmax=vmax)
+ self.__image1.setColormap(colormap)
+ self.__image2.setColormap(colormap)
+
+ def __getImageMode(self, image):
+ """Returns a value identifying the way the image is stored in the
+ array.
+
+ :param numpy.ndarray image: Image to check
+ :rtype: str
+ """
+ if len(image.shape) == 2:
+ return "intensity"
+ elif len(image.shape) == 3:
+ if image.shape[2] == 3:
+ return "rgb"
+ elif image.shape[2] == 4:
+ return "rgba"
+ raise TypeError("'image' argument is not an image.")
+
+ def __rescaleImage(self, image, shape):
+ """Rescale an image to the requested shape.
+
+ :rtype: numpy.ndarray
+ """
+ mode = self.__getImageMode(image)
+ if mode == "intensity":
+ data = self.__rescaleArray(image, shape)
+ elif mode == "rgb":
+ data = numpy.empty((shape[0], shape[1], 3), dtype=image.dtype)
+ for c in range(3):
+ data[:, :, c] = self.__rescaleArray(image[:, :, c], shape)
+ elif mode == "rgba":
+ data = numpy.empty((shape[0], shape[1], 4), dtype=image.dtype)
+ for c in range(4):
+ data[:, :, c] = self.__rescaleArray(image[:, :, c], shape)
+ return data
+
+ def __composeImage(self, data1, data2, mode):
+ """Returns an RBG image containing composition of data1 and data2 in 2
+ different channels
+
+ :param numpy.ndarray data1: First image
+ :param numpy.ndarray data1: Second image
+ :param VisualizationMode mode: Composition mode.
+ :rtype: numpy.ndarray
+ """
+ assert(data1.shape[0:2] == data2.shape[0:2])
+ mode1 = self.__getImageMode(data1)
+ if mode1 in ["rgb", "rgba"]:
+ intensity1 = self.__luminosityImage(data1)
+ vmin1, vmax1 = 0.0, 1.0
+ else:
+ intensity1 = data1
+ vmin1, vmax1 = data1.min(), data1.max()
+
+ mode2 = self.__getImageMode(data2)
+ if mode2 in ["rgb", "rgba"]:
+ intensity2 = self.__luminosityImage(data2)
+ vmin2, vmax2 = 0.0, 1.0
+ else:
+ intensity2 = data2
+ vmin2, vmax2 = data2.min(), data2.max()
+
+ vmin, vmax = min(vmin1, vmin2) * 1.0, max(vmax1, vmax2) * 1.0
+ shape = data1.shape
+ result = numpy.empty((shape[0], shape[1], 3), dtype=numpy.uint8)
+ a = (intensity1 - vmin) * (1.0 / (vmax - vmin)) * 255.0
+ b = (intensity2 - vmin) * (1.0 / (vmax - vmin)) * 255.0
+ if mode == VisualizationMode.COMPOSITE_RED_BLUE_GRAY:
+ result[:, :, 0] = a
+ result[:, :, 1] = (a + b) / 2
+ result[:, :, 2] = b
+ elif mode == VisualizationMode.COMPOSITE_RED_BLUE_GRAY_NEG:
+ result[:, :, 0] = 255 - b
+ result[:, :, 1] = 255 - (a + b) / 2
+ result[:, :, 2] = 255 - a
+ return result
+
+ def __luminosityImage(self, image):
+ """Returns the luminosity channel from an RBG(A) image.
+ The alpha channel is ignored.
+
+ :rtype: numpy.ndarray
+ """
+ mode = self.__getImageMode(image)
+ assert(mode in ["rgb", "rgba"])
+ is_uint8 = image.dtype.type == numpy.uint8
+ # luminosity
+ image = 0.21 * image[..., 0] + 0.72 * image[..., 1] + 0.07 * image[..., 2]
+ if is_uint8:
+ image = image / 255.0
+ return image
+
+ def __rescaleArray(self, image, shape):
+ """Rescale a 2D array to the requested shape.
+
+ :rtype: numpy.ndarray
+ """
+ y, x = numpy.ogrid[:shape[0], :shape[1]]
+ y, x = y * 1.0 * (image.shape[0] - 1) / (shape[0] - 1), x * 1.0 * (image.shape[1] - 1) / (shape[1] - 1)
+ b = silx.image.bilinear.BilinearImage(image)
+ # TODO: could be optimized using strides
+ x2d = numpy.zeros_like(y) + x
+ y2d = numpy.zeros_like(x) + y
+ result = b.map_coordinates((y2d, x2d))
+ return result
+
+ def __createMarginImage(self, image, size, transparent=False, center=False):
+ """Returns a new image with margin to respect the requested size.
+
+ :rtype: numpy.ndarray
+ """
+ assert(image.shape[0] <= size[0])
+ assert(image.shape[1] <= size[1])
+ if image.shape == size:
+ return image
+ mode = self.__getImageMode(image)
+
+ if center:
+ pos0 = size[0] // 2 - image.shape[0] // 2
+ pos1 = size[1] // 2 - image.shape[1] // 2
+ else:
+ pos0, pos1 = 0, 0
+
+ if mode == "intensity":
+ data = numpy.zeros(size, dtype=image.dtype)
+ data[pos0:pos0 + image.shape[0], pos1:pos1 + image.shape[1]] = image
+ # TODO: It is maybe possible to put NaN on the margin
+ else:
+ if transparent:
+ data = numpy.zeros((size[0], size[1], 4), dtype=numpy.uint8)
+ else:
+ data = numpy.zeros((size[0], size[1], 3), dtype=numpy.uint8)
+ depth = min(data.shape[2], image.shape[2])
+ data[pos0:pos0 + image.shape[0], pos1:pos1 + image.shape[1], 0:depth] = image[:, :, 0:depth]
+ if transparent and depth == 3:
+ data[pos0:pos0 + image.shape[0], pos1:pos1 + image.shape[1], 3] = 255
+ return data
+
+ def __toAffineTransformation(self, sift_result):
+ """Returns an affine transformation from the sift result.
+
+ :param dict sift_result: Result of sift when using `all_result=True`
+ :rtype: AffineTransformation
+ """
+ offset = sift_result["offset"]
+ matrix = sift_result["matrix"]
+
+ tx = offset[0]
+ ty = offset[1]
+ a = matrix[0, 0]
+ b = matrix[0, 1]
+ c = matrix[1, 0]
+ d = matrix[1, 1]
+ rot = math.atan2(-b, a)
+ sx = (-1.0 if a < 0 else 1.0) * math.sqrt(a**2 + b**2)
+ sy = (-1.0 if d < 0 else 1.0) * math.sqrt(c**2 + d**2)
+ return AffineTransformation(tx, ty, sx, sy, rot)
+
+ def getTransformation(self):
+ """Retuns the affine transformation applied to the second image to align
+ it to the first image.
+
+ This result is only valid for sift alignment.
+
+ :rtype: Union[None,AffineTransformation]
+ """
+ return self.__transformation
+
+ def __createSiftData(self, image, second_image):
+ """Generate key points and aligned images from 2 images.
+
+ If no keypoints matches, unaligned data are anyway returns.
+
+ :rtype: Tuple(numpy.ndarray,numpy.ndarray)
+ """
+ devicetype = "GPU"
+
+ # Compute base image
+ sift_ocl = sift.SiftPlan(template=image, devicetype=devicetype)
+ keypoints = sift_ocl(image)
+
+ # Check image compatibility
+ second_keypoints = sift_ocl(second_image)
+ mp = sift.MatchPlan()
+ match = mp(keypoints, second_keypoints)
+ _logger.info("Number of Keypoints within image 1: %i" % keypoints.size)
+ _logger.info(" within image 2: %i" % second_keypoints.size)
+
+ self.__matching_keypoints = (match[:].x[:, 0],
+ match[:].y[:, 0],
+ match[:].scale[:, 0])
+ matching_keypoints = match.shape[0]
+ _logger.info("Matching keypoints: %i" % matching_keypoints)
+ if matching_keypoints == 0:
+ return image, second_image
+
+ # TODO: Problem here is we have to compute 2 time sift
+ # The first time to extract matching keypoints, second time
+ # to extract the aligned image.
+
+ # Normalize the second image
+ sa = sift.LinearAlign(image, devicetype=devicetype)
+ data1 = image
+ # TODO: Create a sift issue: if data1 is RGB and data2 intensity
+ # it returns None, while extracting manually keypoints (above) works
+ result = sa.align(second_image, return_all=True)
+ data2 = result["result"]
+ self.__transformation = self.__toAffineTransformation(result)
+ return data1, data2
diff --git a/silx/gui/plot/ImageView.py b/silx/gui/plot/ImageView.py
index c28ffca..eba9bc6 100644
--- a/silx/gui/plot/ImageView.py
+++ b/silx/gui/plot/ImageView.py
@@ -315,7 +315,7 @@ class ImageView(PlotWindow):
def _initWidgets(self, backend):
"""Set-up layout and plots."""
- self._histoHPlot = PlotWidget(backend=backend)
+ self._histoHPlot = PlotWidget(backend=backend, parent=self)
self._histoHPlot.getWidgetHandle().setMinimumHeight(
self.HISTOGRAMS_HEIGHT)
self._histoHPlot.getWidgetHandle().setMaximumHeight(
@@ -330,7 +330,7 @@ class ImageView(PlotWindow):
self.getYAxis().sigInvertedChanged.connect(self._updateYAxisInverted)
self.sigActiveImageChanged.connect(self._activeImageChangedSlot)
- self._histoVPlot = PlotWidget(backend=backend)
+ self._histoVPlot = PlotWidget(backend=backend, parent=self)
self._histoVPlot.getWidgetHandle().setMinimumWidth(
self.HISTOGRAMS_HEIGHT)
self._histoVPlot.getWidgetHandle().setMaximumWidth(
@@ -338,14 +338,15 @@ class ImageView(PlotWindow):
self._histoVPlot.setInteractiveMode('zoom')
self._histoVPlot.sigPlotSignal.connect(self._histoVPlotCB)
- self._radarView = RadarView()
+ self._radarView = RadarView(parent=self)
self._radarView.visibleRectDragged.connect(self._radarViewCB)
layout = qt.QGridLayout()
layout.addWidget(self.getWidgetHandle(), 0, 0)
layout.addWidget(self._histoVPlot.getWidgetHandle(), 0, 1)
layout.addWidget(self._histoHPlot.getWidgetHandle(), 1, 0)
- layout.addWidget(self._radarView, 1, 1)
+ layout.addWidget(self._radarView, 1, 1, 1, 2)
+ layout.addWidget(self.getColorBarWidget(), 0, 2)
layout.setColumnMinimumWidth(0, self.IMAGE_MIN_SIZE)
layout.setColumnStretch(0, 1)
diff --git a/silx/gui/plot/LegendSelector.py b/silx/gui/plot/LegendSelector.py
index e9cfd1d..b9d0fd3 100644
--- a/silx/gui/plot/LegendSelector.py
+++ b/silx/gui/plot/LegendSelector.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2004-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2004-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -35,7 +35,10 @@ __data__ = "16/10/2017"
import logging
import weakref
-from .. import qt
+import numpy
+
+from .. import qt, colors
+from . import items
_logger = logging.getLogger(__name__)
@@ -92,10 +95,16 @@ NoLineStyle = (None, 'None', 'none', '', ' ')
class LegendIcon(qt.QWidget):
- """Object displaying a curve linestyle and symbol."""
+ """Object displaying a curve linestyle and symbol.
+
+ :param QWidget parent: See :class:`QWidget`
+ :param Union[~silx.gui.plot.items.Curve,None] curve:
+ Curve with which to synchronize
+ """
- def __init__(self, parent=None):
+ def __init__(self, parent=None, curve=None):
super(LegendIcon, self).__init__(parent)
+ self._curveRef = None
# Visibilities
self.showLine = True
@@ -118,9 +127,85 @@ class LegendIcon(qt.QWidget):
self.setSizePolicy(qt.QSizePolicy.Fixed,
qt.QSizePolicy.Fixed)
+ self.setCurve(curve)
+
def sizeHint(self):
return qt.QSize(50, 15)
+ # Synchronize with a curve
+
+ def getCurve(self):
+ """Returns curve associated to this widget
+
+ :rtype: Union[~silx.gui.plot.items.Curve,None]
+ """
+ return None if self._curveRef is None else self._curveRef()
+
+ def setCurve(self, curve):
+ """Set the curve with which to synchronize this widget.
+
+ :param curve: Union[~silx.gui.plot.items.Curve,None]
+ """
+ assert curve is None or isinstance(curve, items.Curve)
+
+ previousCurve = self.getCurve()
+ if curve == previousCurve:
+ return
+
+ if previousCurve is not None:
+ previousCurve.sigItemChanged.disconnect(self._curveChanged)
+
+ self._curveRef = None if curve is None else weakref.ref(curve)
+
+ if curve is not None:
+ curve.sigItemChanged.connect(self._curveChanged)
+
+ self._update()
+
+ def _update(self):
+ """Update widget according to current curve state.
+ """
+ curve = self.getCurve()
+ if curve is None:
+ _logger.error('Curve no more exists')
+ self.setEnabled(False)
+ return
+
+ style = curve.getCurrentStyle()
+
+ self.setEnabled(curve.isVisible())
+ self.setSymbol(style.getSymbol())
+ self.setLineWidth(style.getLineWidth())
+ self.setLineStyle(style.getLineStyle())
+
+ color = style.getColor()
+ if numpy.array(color, copy=False).ndim != 1:
+ # array of colors, use transparent black
+ color = 0., 0., 0., 0.
+ color = colors.rgba(color) # Make sure it is float in [0, 1]
+ alpha = curve.getAlpha()
+ color = qt.QColor.fromRgbF(
+ color[0], color[1], color[2], color[3] * alpha)
+ self.setLineColor(color)
+ self.setSymbolColor(color)
+ self.update() # TODO this should not be needed
+
+ def _curveChanged(self, event):
+ """Handle update of curve item
+
+ :param event: Kind of change
+ """
+ if event in (items.ItemChangedType.VISIBLE,
+ items.ItemChangedType.SYMBOL,
+ items.ItemChangedType.SYMBOL_SIZE,
+ items.ItemChangedType.LINE_WIDTH,
+ items.ItemChangedType.LINE_STYLE,
+ items.ItemChangedType.COLOR,
+ items.ItemChangedType.ALPHA,
+ items.ItemChangedType.HIGHLIGHTED,
+ items.ItemChangedType.HIGHLIGHTED_STYLE):
+ self._update()
+
# Modify Symbol
def setSymbol(self, symbol):
symbol = str(symbol)
@@ -185,6 +270,14 @@ class LegendIcon(qt.QWidget):
symbolOffset = qt.QPointF(.5 * (ratio - 1.), 0.)
# Determine and scale offset
offset = qt.QPointF(float(rect.left()) / scale, float(rect.top()) / scale)
+
+ # Override color when disabled
+ if self.isEnabled():
+ overrideColor = None
+ else:
+ overrideColor = palette.color(qt.QPalette.Disabled,
+ qt.QPalette.WindowText)
+
# Draw BG rectangle (for debugging)
# bottomRight = qt.QPointF(
# float(rect.right())/scale,
@@ -197,15 +290,15 @@ class LegendIcon(qt.QWidget):
linePath.moveTo(0., 0.5)
linePath.lineTo(ratio, 0.5)
# linePath.lineTo(2.5, 0.5)
+ lineBrush = qt.QBrush(
+ self.lineColor if overrideColor is None else overrideColor)
linePen = qt.QPen(
- qt.QBrush(self.lineColor),
+ lineBrush,
(self.lineWidth / self.height()),
self.lineStyle,
qt.Qt.FlatCap
)
- llist.append((linePath,
- linePen,
- qt.QBrush(self.lineColor)))
+ llist.append((linePath, linePen, lineBrush))
if (self.showSymbol and len(self.symbol) and
self.symbol not in NoSymbols):
# PITFALL ahead: Let this be a warning to others
@@ -214,9 +307,8 @@ class LegendIcon(qt.QWidget):
symbolPath = qt.QPainterPath(Symbols[self.symbol])
symbolPath.translate(symbolOffset)
symbolBrush = qt.QBrush(
- self.symbolColor,
- self.symbolStyle
- )
+ self.symbolColor if overrideColor is None else overrideColor,
+ self.symbolStyle)
symbolPen = qt.QPen(
self.symbolOutlineBrush, # Brush
1. / self.height(), # Width
@@ -1062,18 +1154,18 @@ class LegendsDockWidget(qt.QDockWidget):
for curve in self.plot.getAllCurves(withhidden=True):
legend = curve.getLegend()
# Use active color if curve is active
- if legend == self.plot.getActiveCurve(just_legend=True):
- color = qt.QColor(self.plot.getActiveCurveColor())
- isActive = True
- else:
- color = qt.QColor.fromRgbF(*curve.getColor())
- isActive = False
+ isActive = legend == self.plot.getActiveCurve(just_legend=True)
+ style = curve.getCurrentStyle()
+ color = style.getColor()
+ if numpy.array(color, copy=False).ndim != 1:
+ # array of colors, use transparent black
+ color = 0., 0., 0., 0.
curveInfo = {
- 'color': color,
- 'linewidth': curve.getLineWidth(),
- 'linestyle': curve.getLineStyle(),
- 'symbol': curve.getSymbol(),
+ 'color': qt.QColor.fromRgbF(*color),
+ 'linewidth': style.getLineWidth(),
+ 'linestyle': style.getLineStyle(),
+ 'symbol': style.getSymbol(),
'selected': not self.plot.isCurveHidden(legend),
'active': isActive}
legendList.append((legend, curveInfo))
diff --git a/silx/gui/plot/MaskToolsWidget.py b/silx/gui/plot/MaskToolsWidget.py
index 797068e..990e479 100644
--- a/silx/gui/plot/MaskToolsWidget.py
+++ b/silx/gui/plot/MaskToolsWidget.py
@@ -35,7 +35,7 @@ from __future__ import division
__authors__ = ["T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "29/08/2018"
import os
@@ -43,8 +43,11 @@ import sys
import numpy
import logging
import collections
+import h5py
from silx.image import shapes
+from silx.io.utils import NEXUS_HDF5_EXT, is_dataset
+from silx.gui.dialog.DatasetDialog import DatasetDialog
from ._BaseMaskToolsWidget import BaseMask, BaseMaskToolsWidget, BaseMaskToolsDockWidget
from . import items
@@ -63,6 +66,27 @@ except ImportError:
_logger = logging.getLogger(__name__)
+_HDF5_EXT_STR = ' '.join(['*' + ext for ext in NEXUS_HDF5_EXT])
+
+
+def _selectDataset(filename, mode=DatasetDialog.SaveMode):
+ """Open a dialog to prompt the user to select a dataset in
+ a hdf5 file.
+
+ :param str filename: name of an existing HDF5 file
+ :param mode: DatasetDialog.SaveMode or DatasetDialog.LoadMode
+ :rtype: str
+ :return: Name of selected dataset
+ """
+ dialog = DatasetDialog()
+ dialog.addFile(filename)
+ dialog.setWindowTitle("Select a 2D dataset")
+ dialog.setMode(mode)
+ if not dialog.exec_():
+ return None
+ return dialog.getSelectedDataUrl().data_path()
+
+
class ImageMask(BaseMask):
"""A 2D mask field with update operations.
@@ -89,7 +113,7 @@ class ImageMask(BaseMask):
"""Save current mask in a file
:param str filename: The file where to save to mask
- :param str kind: The kind of file to save in 'edf', 'tif', 'npy',
+ :param str kind: The kind of file to save in 'edf', 'tif', 'npy', 'h5'
or 'msk' (if FabIO is installed)
:raise Exception: Raised if the file writing fail
"""
@@ -107,6 +131,9 @@ class ImageMask(BaseMask):
except IOError:
raise RuntimeError("Mask file can't be written")
+ elif ("." + kind) in NEXUS_HDF5_EXT:
+ self._saveToHdf5(filename, self.getMask(copy=False))
+
elif kind == 'msk':
if fabio is None:
raise ImportError("Fit2d mask files can't be written: Fabio module is not available")
@@ -118,10 +145,41 @@ class ImageMask(BaseMask):
except Exception:
_logger.debug("Backtrace", exc_info=True)
raise RuntimeError("Mask file can't be written")
-
else:
raise ValueError("Format '%s' is not supported" % kind)
+ @staticmethod
+ def _saveToHdf5(filename, mask):
+ """Save a mask array to a HDF5 file.
+
+ :param str filename: name of an existing HDF5 file
+ :param numpy.ndarray mask: Mask array.
+ :returns: True if operation succeeded, False otherwise.
+ """
+ if not os.path.exists(filename):
+ # create new file
+ with h5py.File(filename, "w") as _h5f:
+ pass
+ dataPath = _selectDataset(filename)
+ if dataPath is None:
+ return False
+ with h5py.File(filename, "a") as h5f:
+ existing_ds = h5f.get(dataPath)
+ if existing_ds is not None:
+ reply = qt.QMessageBox.question(
+ None,
+ "Confirm overwrite",
+ "Do you want to overwrite an existing dataset?",
+ qt.QMessageBox.Yes | qt.QMessageBox.No)
+ if reply != qt.QMessageBox.Yes:
+ return False
+ del h5f[dataPath]
+ try:
+ h5f.create_dataset(dataPath, data=mask)
+ except Exception:
+ return False
+ return True
+
# Drawing operations
def updateRectangle(self, level, row, col, height, width, mask=True):
"""Mask/Unmask a rectangle of the given mask level.
@@ -310,8 +368,9 @@ class MaskToolsWidget(BaseMaskToolsWidget):
self._activeImageChanged)
except (RuntimeError, TypeError):
pass
- if not self.browseAction.isChecked():
- self.browseAction.trigger() # Disable drawing tool
+ if self.isMaskInteractionActivated():
+ # Disable drawing tool
+ self.browseAction.trigger()
if self.getSelectionMask(copy=False) is not None:
self.plot.sigActiveImageChanged.connect(
@@ -450,6 +509,10 @@ class MaskToolsWidget(BaseMaskToolsWidget):
_logger.error("Can't load fit2d mask file")
_logger.debug("Backtrace", exc_info=True)
raise e
+ elif ("." + extension) in NEXUS_HDF5_EXT:
+ mask = self._loadFromHdf5(filename)
+ if mask is None:
+ raise IOError("Could not load mask from HDF5 dataset")
else:
msg = "Extension '%s' is not supported."
raise RuntimeError(msg % extension)
@@ -472,6 +535,7 @@ class MaskToolsWidget(BaseMaskToolsWidget):
extensions["EDF files"] = "*.edf"
extensions["TIFF files"] = "*.tif *.tiff"
extensions["NumPy binary files"] = "*.npy"
+ extensions["HDF5 files"] = _HDF5_EXT_STR
# Fit2D mask is displayed anyway fabio is here or not
# to show to the user that the option exists
extensions["Fit2D mask files"] = "*.msk"
@@ -508,15 +572,37 @@ class MaskToolsWidget(BaseMaskToolsWidget):
msg.setText("Cannot load mask from file. " + message)
msg.exec_()
+ @staticmethod
+ def _loadFromHdf5(filename):
+ """Load a mask array from a HDF5 file.
+
+ :param str filename: name of an existing HDF5 file
+ :returns: A mask as a numpy array, or None if the interactive dialog
+ was cancelled
+ """
+ dataPath = _selectDataset(filename, mode=DatasetDialog.LoadMode)
+ if dataPath is None:
+ return None
+
+ with h5py.File(filename, "r") as h5f:
+ dataset = h5f.get(dataPath)
+ if not is_dataset(dataset):
+ raise IOError("%s is not a dataset" % dataPath)
+ mask = dataset[()]
+ return mask
+
def _saveMask(self):
"""Open Save mask dialog"""
dialog = qt.QFileDialog(self)
dialog.setWindowTitle("Save Mask")
+ dialog.setOption(dialog.DontUseNativeDialog)
dialog.setModal(1)
+ hdf5Filter = 'HDF5 (%s)' % _HDF5_EXT_STR
filters = [
'EDF (*.edf)',
'TIFF (*.tif)',
'NumPy binary file (*.npy)',
+ hdf5Filter,
# Fit2D mask is displayed anyway fabio is here or not
# to show to the user that the option exists
'Fit2D mask (*.msk)',
@@ -525,19 +611,41 @@ class MaskToolsWidget(BaseMaskToolsWidget):
dialog.setFileMode(qt.QFileDialog.AnyFile)
dialog.setAcceptMode(qt.QFileDialog.AcceptSave)
dialog.setDirectory(self.maskFileDir)
+
+ def onFilterSelection(filt_):
+ # disable overwrite confirmation for HDF5,
+ # because we append the data to existing files
+ if filt_ == hdf5Filter:
+ dialog.setOption(dialog.DontConfirmOverwrite)
+ else:
+ dialog.setOption(dialog.DontConfirmOverwrite, False)
+
+ dialog.filterSelected.connect(onFilterSelection)
if not dialog.exec_():
dialog.close()
return
- # convert filter name to extension name with the .
- extension = dialog.selectedNameFilter().split()[-1][2:-1]
+ nameFilter = dialog.selectedNameFilter()
filename = dialog.selectedFiles()[0]
dialog.close()
- if not filename.lower().endswith(extension):
- filename += extension
+ if "HDF5" in nameFilter:
+ has_allowed_ext = False
+ for ext in NEXUS_HDF5_EXT:
+ if (len(filename) > len(ext) and
+ filename[-len(ext):].lower() == ext.lower()):
+ has_allowed_ext = True
+ extension = ext
+ if not has_allowed_ext:
+ extension = ".h5"
+ filename += ".h5"
+ else:
+ # convert filter name to extension name with the .
+ extension = nameFilter.split()[-1][2:-1]
+ if not filename.lower().endswith(extension):
+ filename += extension
- if os.path.exists(filename):
+ if os.path.exists(filename) and "HDF5" not in nameFilter:
try:
os.remove(filename)
except IOError:
@@ -552,6 +660,7 @@ class MaskToolsWidget(BaseMaskToolsWidget):
try:
self.save(filename, extension[1:])
except Exception as e:
+ raise
msg = qt.QMessageBox(self)
msg.setIcon(qt.QMessageBox.Critical)
msg.setText("Cannot save file %s\n%s" % (filename, e.args[0]))
diff --git a/silx/gui/plot/PlotToolButtons.py b/silx/gui/plot/PlotToolButtons.py
index e354877..f6291b5 100644
--- a/silx/gui/plot/PlotToolButtons.py
+++ b/silx/gui/plot/PlotToolButtons.py
@@ -240,6 +240,62 @@ class YAxisOriginToolButton(PlotToolButton):
self.setToolTip(toolTip)
+class ProfileOptionToolButton(PlotToolButton):
+ """Button to define option on the profile"""
+ sigMethodChanged = qt.Signal(str)
+
+ def __init__(self, parent=None, plot=None):
+ PlotToolButton.__init__(self, parent=parent, plot=plot)
+
+ self.STATE = {}
+ # is down
+ self.STATE['sum', "icon"] = icons.getQIcon('math-sigma')
+ self.STATE['sum', "state"] = "compute profile sum"
+ self.STATE['sum', "action"] = "compute profile sum"
+ # keep ration
+ self.STATE['mean', "icon"] = icons.getQIcon('math-mean')
+ self.STATE['mean', "state"] = "compute profile mean"
+ self.STATE['mean', "action"] = "compute profile mean"
+
+ sumAction = self._createAction('sum')
+ sumAction.triggered.connect(self.setSum)
+ sumAction.setIconVisibleInMenu(True)
+
+ meanAction = self._createAction('mean')
+ meanAction.triggered.connect(self.setMean)
+ meanAction.setIconVisibleInMenu(True)
+
+ menu = qt.QMenu(self)
+ menu.addAction(sumAction)
+ menu.addAction(meanAction)
+ self.setMenu(menu)
+ self.setPopupMode(qt.QToolButton.InstantPopup)
+ self.setMean()
+
+ def _createAction(self, method):
+ icon = self.STATE[method, "icon"]
+ text = self.STATE[method, "action"]
+ return qt.QAction(icon, text, self)
+
+ def setSum(self):
+ """Configure the plot to use y-axis upward"""
+ self._method = 'sum'
+ self.sigMethodChanged.emit(self._method)
+ self._update()
+
+ def _update(self):
+ icon = self.STATE[self._method, "icon"]
+ toolTip = self.STATE[self._method, "state"]
+ self.setIcon(icon)
+ self.setToolTip(toolTip)
+
+ def setMean(self):
+ """Configure the plot to use y-axis downward"""
+ self._method = 'mean'
+ self.sigMethodChanged.emit(self._method)
+ self._update()
+
+
class ProfileToolButton(PlotToolButton):
"""Button used in Profile3DToolbar to switch between 2D profile
and 1D profile."""
diff --git a/silx/gui/plot/PlotWidget.py b/silx/gui/plot/PlotWidget.py
index 2f7132c..e023a21 100644
--- a/silx/gui/plot/PlotWidget.py
+++ b/silx/gui/plot/PlotWidget.py
@@ -31,7 +31,7 @@ from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent"]
__license__ = "MIT"
-__date__ = "14/06/2018"
+__date__ = "12/10/2018"
from collections import OrderedDict, namedtuple
@@ -58,7 +58,8 @@ from .LimitsHistory import LimitsHistory
from . import _utils
from . import items
-from .items.axis import TickMode
+from .items.curve import CurveStyle
+from .items.axis import TickMode # noqa
from .. import qt
from ._utils.panzoom import ViewConstraints
@@ -68,27 +69,7 @@ _logger = logging.getLogger(__name__)
_COLORDICT = colors.COLORDICT
-_COLORLIST = [_COLORDICT['black'],
- _COLORDICT['blue'],
- _COLORDICT['red'],
- _COLORDICT['green'],
- _COLORDICT['pink'],
- _COLORDICT['yellow'],
- _COLORDICT['brown'],
- _COLORDICT['cyan'],
- _COLORDICT['magenta'],
- _COLORDICT['orange'],
- _COLORDICT['violet'],
- # _COLORDICT['bluegreen'],
- _COLORDICT['grey'],
- _COLORDICT['darkBlue'],
- _COLORDICT['darkRed'],
- _COLORDICT['darkGreen'],
- _COLORDICT['darkCyan'],
- _COLORDICT['darkMagenta'],
- _COLORDICT['darkYellow'],
- _COLORDICT['darkBrown']]
-
+_COLORLIST = silx.config.DEFAULT_PLOT_CURVE_COLORS
"""
Object returned when requesting the data range.
@@ -193,6 +174,25 @@ class PlotWidget(qt.QMainWindow):
It provides the source as passed to :meth:`setInteractiveMode`.
"""
+ sigItemAdded = qt.Signal(items.Item)
+ """Signal emitted when an item was just added to the plot
+
+ It provides the added item.
+ """
+
+ sigItemAboutToBeRemoved = qt.Signal(items.Item)
+ """Signal emitted right before an item is removed from the plot.
+
+ It provides the item that will be removed.
+ """
+
+ sigVisibilityChanged = qt.Signal(bool)
+ """Signal emitted when the widget becomes visible (or invisible).
+ This happens when the widget is hidden or shown.
+
+ It provides the visible state.
+ """
+
def __init__(self, parent=None, backend=None,
legends=False, callback=None, **kw):
self._autoreplot = False
@@ -253,8 +253,8 @@ class PlotWidget(qt.QMainWindow):
self._colorIndex = 0
self._styleIndex = 0
- self._activeCurveHandling = True
- self._activeCurveColor = "#000000"
+ self._activeCurveSelectionMode = "atmostone"
+ self._activeCurveStyle = CurveStyle(color='#000000')
self._activeLegend = {'curve': None, 'image': None,
'scatter': None}
@@ -346,8 +346,18 @@ class PlotWidget(qt.QMainWindow):
else:
self._dirty = True
- if self._autoreplot and not wasDirty:
+ if self._autoreplot and not wasDirty and self.isVisible():
+ self._backend.postRedisplay()
+
+ def showEvent(self, event):
+ if self._autoreplot and self._dirty:
self._backend.postRedisplay()
+ super(PlotWidget, self).showEvent(event)
+ self.sigVisibilityChanged.emit(True)
+
+ def hideEvent(self, event):
+ super(PlotWidget, self).hideEvent(event)
+ self.sigVisibilityChanged.emit(False)
def _invalidateDataRange(self):
"""
@@ -447,6 +457,7 @@ class PlotWidget(qt.QMainWindow):
self._invalidateDataRange() # TODO handle this automatically
self._notifyContentChanged(item)
+ self.sigItemAdded.emit(item)
def _notifyContentChanged(self, item):
legend, kind = self._itemKey(item)
@@ -461,6 +472,8 @@ class PlotWidget(qt.QMainWindow):
if key not in self._content:
raise RuntimeError('Item not in the plot')
+ self.sigItemAboutToBeRemoved.emit(item)
+
legend, kind = key
if kind in self._ACTIVE_ITEM_KINDS:
@@ -721,6 +734,12 @@ class PlotWidget(qt.QMainWindow):
if wasActive:
self.setActiveCurve(curve.getLegend())
+ elif self.getActiveCurveSelectionMode() == "legacy":
+ if self.getActiveCurve(just_legend=True) is None:
+ if len(self.getAllCurves(just_legend=True,
+ withhidden=False)) == 1:
+ if curve.isVisible():
+ self.setActiveCurve(curve.getLegend())
if resetzoom:
# We ask for a zoom reset in order to handle the plot scaling
@@ -840,10 +859,9 @@ class PlotWidget(qt.QMainWindow):
(default: False)
:param bool draggable: Indicate if the image can be moved.
(default: False)
- :param colormap: Description of the :class:`.Colormap` to use
- (or None).
- This is ignored if data is a RGB(A) image.
- :type colormap: Union[silx.gui.colors.Colormap, dict]
+ :param colormap: Colormap object to use (or None).
+ This is ignored if data is a RGB(A) image.
+ :type colormap: Union[~silx.gui.colors.Colormap, dict]
:param pixmap: Pixmap representation of the data (if any)
:type pixmap: (nrows, ncolumns, RGBA) ubyte array or None (default)
:param str xlabel: X axis label to show when this curve is active,
@@ -986,8 +1004,8 @@ class PlotWidget(qt.QMainWindow):
:param numpy.ndarray y: The data corresponding to the y coordinates
:param numpy.ndarray value: The data value associated with each point
:param str legend: The legend to be associated to the scatter (or None)
- :param silx.gui.colors.Colormap colormap:
- The :class:`.Colormap`. to be used for the scatter (or None)
+ :param ~silx.gui.colors.Colormap colormap:
+ Colormap object to be used for the scatter (or None)
:param info: User-defined information associated to the curve
:param str symbol: Symbol to be drawn at each (x, y) position::
@@ -1560,26 +1578,59 @@ class PlotWidget(qt.QMainWindow):
# Active Curve/Image
def isActiveCurveHandling(self):
- """Returns True if active curve selection is enabled."""
- return self._activeCurveHandling
+ """Returns True if active curve selection is enabled.
+
+ :rtype: bool
+ """
+ return self.getActiveCurveSelectionMode() != 'none'
def setActiveCurveHandling(self, flag=True):
"""Enable/Disable active curve selection.
- :param bool flag: True (the default) to enable active curve selection.
+ :param bool flag: True to enable 'atmostone' active curve selection,
+ False to disable active curve selection.
+ """
+ self.setActiveCurveSelectionMode('atmostone' if flag else 'none')
+
+ def getActiveCurveStyle(self):
+ """Returns the current style applied to active curve
+
+ :rtype: CurveStyle
"""
- if not flag:
- self.setActiveCurve(None) # Reset active curve
+ return self._activeCurveStyle
- self._activeCurveHandling = bool(flag)
+ def setActiveCurveStyle(self,
+ color=None,
+ linewidth=None,
+ linestyle=None,
+ symbol=None,
+ symbolsize=None):
+ """Set the style of active curve
+ :param color: Color
+ :param Union[str,None] linestyle: Style of the line
+ :param Union[float,None] linewidth: Width of the line
+ :param Union[str,None] symbol: Symbol of the markers
+ :param Union[float,None] symbolsize: Size of the symbols
+ """
+ self._activeCurveStyle = CurveStyle(color=color,
+ linewidth=linewidth,
+ linestyle=linestyle,
+ symbol=symbol,
+ symbolsize=symbolsize)
+ curve = self.getActiveCurve()
+ if curve is not None:
+ curve.setHighlightedStyle(self.getActiveCurveStyle())
+
+ @deprecated(replacement="getActiveCurveStyle", since_version="0.9")
def getActiveCurveColor(self):
"""Get the color used to display the currently active curve.
See :meth:`setActiveCurveColor`.
"""
- return self._activeCurveColor
+ return self._activeCurveStyle.getColor()
+ @deprecated(replacement="setActiveCurveStyle", since_version="0.9")
def setActiveCurveColor(self, color="#000000"):
"""Set the color to use to display the currently active curve.
@@ -1590,7 +1641,7 @@ class PlotWidget(qt.QMainWindow):
color = "black"
if color in self.colorDict:
color = self.colorDict[color]
- self._activeCurveColor = color
+ self.setActiveCurveStyle(color=color)
def getActiveCurve(self, just_legend=False):
"""Return the currently active curve.
@@ -1621,9 +1672,43 @@ class PlotWidget(qt.QMainWindow):
if not self.isActiveCurveHandling():
return
+ if legend is None and self.getActiveCurveSelectionMode() == "legacy":
+ _logger.info(
+ 'setActiveCurve(None) ignored due to active curve selection mode')
+ return
return self._setActiveItem(kind='curve', legend=legend)
+ def setActiveCurveSelectionMode(self, mode):
+ """Sets the current selection mode.
+
+ :param str mode: The active curve selection mode to use.
+ It can be: 'legacy', 'atmostone' or 'none'.
+ """
+ assert mode in ('legacy', 'atmostone', 'none')
+
+ if mode != self._activeCurveSelectionMode:
+ self._activeCurveSelectionMode = mode
+ if mode == 'none': # reset active curve
+ self._setActiveItem(kind='curve', legend=None)
+
+ elif mode == 'legacy' and self.getActiveCurve() is None:
+ # Select an active curve
+ curves = self.getAllCurves(just_legend=False,
+ withhidden=False)
+ if len(curves) == 1:
+ if curves[0].isVisible():
+ self.setActiveCurve(curves[0].getLegend())
+
+ def getActiveCurveSelectionMode(self):
+ """Returns the current selection mode.
+
+ It can be "atmostone", "legacy" or "none".
+
+ :rtype: str
+ """
+ return self._activeCurveSelectionMode
+
def getActiveImage(self, just_legend=False):
"""Returns the currently active image.
@@ -1707,7 +1792,7 @@ class PlotWidget(qt.QMainWindow):
# Curve specific: handle highlight
if kind == 'curve':
- item.setHighlightedColor(self.getActiveCurveColor())
+ item.setHighlightedStyle(self.getActiveCurveStyle())
item.setHighlighted(True)
if isinstance(item, items.LabelsMixIn):
@@ -1761,6 +1846,13 @@ class PlotWidget(qt.QMainWindow):
# Getters
+ def getItems(self):
+ """Returns the list of items in the plot
+
+ :rtype: List[silx.gui.plot.items.Item]
+ """
+ return tuple(self._content.values())
+
def getAllCurves(self, just_legend=False, withhidden=False):
"""Returns all curves legend or info and data.
@@ -2273,8 +2365,9 @@ class PlotWidget(qt.QMainWindow):
curve.setLineStyle(linestyle)
def getDefaultColormap(self):
- """Return the default :class:`.Colormap` used by :meth:`addImage`.
+ """Return the default colormap used by :meth:`addImage`.
+ :rtype: ~silx.gui.colors.Colormap
"""
return self._defaultColormap
@@ -2286,9 +2379,9 @@ class PlotWidget(qt.QMainWindow):
It only affects future calls to :meth:`addImage` without the colormap
parameter.
- :param silx.gui.colors.Colormap colormap:
+ :param ~silx.gui.colors.Colormap colormap:
The description of the default colormap, or
- None to set the :class:`.Colormap` to a linear
+ None to set the colormap to a linear
autoscale gray colormap.
"""
if colormap is None:
@@ -2328,7 +2421,7 @@ class PlotWidget(qt.QMainWindow):
self._styleIndex = (self._styleIndex + 1) % len(self._styleList)
# If color is the one of active curve, take the next one
- if color == self.getActiveCurveColor():
+ if colors.rgba(color) == self.getActiveCurveStyle().getColor():
color, style = self._getColorAndStyle()
if not self._plotLines:
diff --git a/silx/gui/plot/PlotWindow.py b/silx/gui/plot/PlotWindow.py
index 459ffdc..23ea399 100644
--- a/silx/gui/plot/PlotWindow.py
+++ b/silx/gui/plot/PlotWindow.py
@@ -29,7 +29,7 @@ The :class:`PlotWindow` is a subclass of :class:`.PlotWidget`.
__authors__ = ["V.A. Sole", "T. Vincent"]
__license__ = "MIT"
-__date__ = "05/06/2018"
+__date__ = "12/10/2018"
import collections
import logging
@@ -439,7 +439,7 @@ class PlotWindow(PlotWidget):
# The first created dock widget must be added to a Widget area
width = self.centralWidget().width()
height = self.centralWidget().height()
- if width > (2.0 * height) and width > 1000:
+ if width > (1.25 * height):
area = qt.Qt.RightDockWidgetArea
else:
area = qt.Qt.BottomDockWidgetArea
@@ -520,6 +520,7 @@ class PlotWindow(PlotWidget):
dockWidget.setWindowTitle("Curves stats")
dockWidget.layout().setContentsMargins(0, 0, 0, 0)
self._statsWidget = BasicStatsWidget(parent=self, plot=self)
+ self._statsWidget.sigVisibilityChanged.connect(self.getStatsAction().setChecked)
dockWidget.setWidget(self._statsWidget)
dockWidget.hide()
self.addTabbedDockWidget(dockWidget)
diff --git a/silx/gui/plot/PrintPreviewToolButton.py b/silx/gui/plot/PrintPreviewToolButton.py
index c5479b8..b48505d 100644
--- a/silx/gui/plot/PrintPreviewToolButton.py
+++ b/silx/gui/plot/PrintPreviewToolButton.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -175,7 +175,8 @@ class PrintPreviewToolButton(qt.QToolButton):
def _plotToPrintPreview(self):
"""Grab the plot widget and send it to the print preview dialog.
Make sure the print preview dialog is shown and raised."""
- self.printPreviewDialog.ensurePrinterIsSet()
+ if not self.printPreviewDialog.ensurePrinterIsSet():
+ return
if qt.HAS_SVG:
svgRenderer, viewBox = self._getSvgRendererAndViewbox()
diff --git a/silx/gui/plot/Profile.py b/silx/gui/plot/Profile.py
index 5a733fe..182cf60 100644
--- a/silx/gui/plot/Profile.py
+++ b/silx/gui/plot/Profile.py
@@ -28,7 +28,7 @@ and stacks of images"""
__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel", "H. Payno"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "24/07/2018"
import weakref
@@ -42,13 +42,13 @@ from .. import qt
from . import items
from ..colors import cursorColorForColormap
from . import actions
-from .PlotToolButtons import ProfileToolButton
+from .PlotToolButtons import ProfileToolButton, ProfileOptionToolButton
from .ProfileMainWindow import ProfileMainWindow
from silx.utils.deprecation import deprecated
-def _alignedFullProfile(data, origin, scale, position, roiWidth, axis):
+def _alignedFullProfile(data, origin, scale, position, roiWidth, axis, method):
"""Get a profile along one axis on a stack of images
:param numpy.ndarray data: 3D volume (stack of 2D images)
@@ -59,10 +59,12 @@ def _alignedFullProfile(data, origin, scale, position, roiWidth, axis):
on the axis orthogonal to the profile direction.
:param int roiWidth: Width of the profile in image pixels.
:param int axis: 0 for horizontal profile, 1 for vertical.
+ :param str method: method to compute the profile. Can be 'mean' or 'sum'
:return: profile image + effective ROI area corners in plot coords
"""
assert axis in (0, 1)
assert len(data.shape) == 3
+ assert method in ('mean', 'sum')
# Convert from plot to image coords
imgPos = int((position - origin[1 - axis]) / scale[1 - axis])
@@ -81,8 +83,13 @@ def _alignedFullProfile(data, origin, scale, position, roiWidth, axis):
end = start + roiWidth
if start < height and end > 0:
- profile = data[:, max(0, start):min(end, height), :].mean(
- axis=1, dtype=numpy.float32)
+ if method == 'mean':
+ _fct = numpy.mean
+ elif method == 'sum':
+ _fct = numpy.sum
+ else:
+ raise ValueError('method not managed')
+ profile = _fct(data[:, max(0, start):min(end, height), :], axis=1).astype(numpy.float32)
else:
profile = numpy.zeros((nimages, width), dtype=numpy.float32)
@@ -102,7 +109,7 @@ def _alignedFullProfile(data, origin, scale, position, roiWidth, axis):
return profile, area
-def _alignedPartialProfile(data, rowRange, colRange, axis):
+def _alignedPartialProfile(data, rowRange, colRange, axis, method):
"""Mean of a rectangular region (ROI) of a stack of images
along a given axis.
@@ -117,6 +124,7 @@ def _alignedPartialProfile(data, rowRange, colRange, axis):
:param int axis: The axis along which to take the profile of the ROI.
0: Sum rows along columns.
1: Sum columns along rows.
+ :param str method: method to compute the profile. Can be 'mean' or 'sum'
:return: Profile image along the ROI as the mean of the intersection
of the ROI and the image.
"""
@@ -124,6 +132,7 @@ def _alignedPartialProfile(data, rowRange, colRange, axis):
assert len(data.shape) == 3
assert rowRange[0] < rowRange[1]
assert colRange[0] < colRange[1]
+ assert method in ('mean', 'sum')
nimages, height, width = data.shape
@@ -138,8 +147,15 @@ def _alignedPartialProfile(data, rowRange, colRange, axis):
colStart = min(max(0, colRange[0]), width)
colEnd = min(max(0, colRange[1]), width)
- imgProfile = numpy.mean(data[:, rowStart:rowEnd, colStart:colEnd],
- axis=axis + 1, dtype=numpy.float32)
+ if method == 'mean':
+ _fct = numpy.mean
+ elif method == 'sum':
+ _fct = numpy.sum
+ else:
+ raise ValueError('method not managed')
+
+ imgProfile = _fct(data[:, rowStart:rowEnd, colStart:colEnd], axis=axis + 1,
+ dtype=numpy.float32)
# Profile including out of bound area
profile = numpy.zeros((nimages, profileLength), dtype=numpy.float32)
@@ -151,7 +167,7 @@ def _alignedPartialProfile(data, rowRange, colRange, axis):
return profile
-def createProfile(roiInfo, currentData, origin, scale, lineWidth):
+def createProfile(roiInfo, currentData, origin, scale, lineWidth, method):
"""Create the profile line for the the given image.
:param roiInfo: information about the ROI: start point, end point and
@@ -163,6 +179,7 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
:param scale: (sx, sy) the scale to use
:type scale: 2-tuple of float
:param int lineWidth: width of the profile line
+ :param str method: method to compute the profile. Can be 'mean' or 'sum'
:return: `profile, area, profileName, xLabel`, where:
- profile is a 2D array of the profiles of the stack of images.
For a single image, the profile is a curve, so this parameter
@@ -192,7 +209,8 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
profile, area = _alignedFullProfile(currentData3D,
origin, scale,
roiStart[1], roiWidth,
- axis=0)
+ axis=0,
+ method=method)
yMin, yMax = min(area[1]), max(area[1]) - 1
if roiWidth <= 1:
@@ -205,7 +223,8 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
profile, area = _alignedFullProfile(currentData3D,
origin, scale,
roiStart[0], roiWidth,
- axis=1)
+ axis=1,
+ method=method)
xMin, xMax = min(area[0]), max(area[0]) - 1
if roiWidth <= 1:
@@ -240,7 +259,8 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
colRange = startPt[1], endPt[1] + 1
profile = _alignedPartialProfile(currentData3D,
rowRange, colRange,
- axis=0)
+ axis=0,
+ method=method)
else: # Column aligned
rowRange = startPt[0], endPt[0] + 1
@@ -248,7 +268,8 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
int(startPt[1] + 0.5 + 0.5 * roiWidth))
profile = _alignedPartialProfile(currentData3D,
rowRange, colRange,
- axis=1)
+ axis=1,
+ method=method)
# Convert ranges to plot coords to draw ROI area
area = (
@@ -273,7 +294,8 @@ def createProfile(roiInfo, currentData, origin, scale, lineWidth):
profile.append(bilinear.profile_line(
(startPt[0] - 0.5, startPt[1] - 0.5),
(endPt[0] - 0.5, endPt[1] - 0.5),
- roiWidth))
+ roiWidth,
+ method=method))
profile = numpy.array(profile)
# Extend ROI with half a pixel on each end, and
@@ -346,6 +368,8 @@ class ProfileToolBar(qt.QToolBar):
_POLYGON_LEGEND = '__ProfileToolBar_ROI_Polygon'
+ DEFAULT_PROF_METHOD = 'mean'
+
def __init__(self, parent=None, plot=None, profileWindow=None,
title='Profile Selection'):
super(ProfileToolBar, self).__init__(title, parent)
@@ -354,6 +378,7 @@ class ProfileToolBar(qt.QToolBar):
self._overlayColor = None
self._defaultOverlayColor = 'red' # update when active image change
+ self._method = self.DEFAULT_PROF_METHOD
self._roiInfo = None # Store start and end points and type of ROI
@@ -426,12 +451,17 @@ class ProfileToolBar(qt.QToolBar):
# Add width spin box to toolbar
self.addWidget(qt.QLabel('W:'))
self.lineWidthSpinBox = qt.QSpinBox(self)
- self.lineWidthSpinBox.setRange(0, 1000)
+ self.lineWidthSpinBox.setRange(1, 1000)
self.lineWidthSpinBox.setValue(1)
self.lineWidthSpinBox.valueChanged[int].connect(
self._lineWidthSpinBoxValueChangedSlot)
self.addWidget(self.lineWidthSpinBox)
+ self.methodsButton = ProfileOptionToolButton(parent=self, plot=self)
+ self.addWidget(self.methodsButton)
+ # TODO: add connection with the signal
+ self.methodsButton.sigMethodChanged.connect(self.setProfileMethod)
+
self.plot.sigInteractiveModeChanged.connect(
self._interactiveModeChanged)
@@ -602,9 +632,10 @@ class ProfileToolBar(qt.QToolBar):
origin=image.getOrigin(),
scale=image.getScale(),
colormap=None, # Not used for 2D data
- z=image.getZValue())
+ z=image.getZValue(),
+ method=self.getProfileMethod())
- def _createProfile(self, currentData, origin, scale, colormap, z):
+ def _createProfile(self, currentData, origin, scale, colormap, z, method):
"""Create the profile line for the the given image.
:param numpy.ndarray currentData: the image or the stack of images
@@ -624,7 +655,8 @@ class ProfileToolBar(qt.QToolBar):
currentData=currentData,
origin=origin,
scale=scale,
- lineWidth=self.lineWidthSpinBox.value())
+ lineWidth=self.lineWidthSpinBox.value(),
+ method=method)
self.getProfilePlot().setGraphTitle(profileName)
@@ -692,6 +724,14 @@ class ProfileToolBar(qt.QToolBar):
if self.getProfileMainWindow() is not None:
self.getProfileMainWindow().hide()
+ def setProfileMethod(self, method):
+ assert method in ('sum', 'mean')
+ self._method = method
+ self.updateProfile()
+
+ def getProfileMethod(self):
+ return self._method
+
class Profile3DToolBar(ProfileToolBar):
def __init__(self, parent=None, stackview=None,
@@ -720,6 +760,7 @@ class Profile3DToolBar(ProfileToolBar):
# create the 3D toolbar
self._profileType = None
self._setProfileType(2)
+ self._method3D = 'sum'
def _setProfileType(self, dimensions):
"""Set the profile type: "1D" for a curve (profile on a single image)
@@ -750,12 +791,20 @@ class Profile3DToolBar(ProfileToolBar):
self.getProfilePlot().setGraphTitle('')
self.getProfilePlot().getXAxis().setLabel('X')
self.getProfilePlot().getYAxis().setLabel('Y')
-
self._createProfile(currentData=stackData[0],
origin=stackData[1]['origin'],
scale=stackData[1]['scale'],
colormap=stackData[1]['colormap'],
- z=stackData[1]['z'])
+ z=stackData[1]['z'],
+ method=self.getProfileMethod())
else:
raise ValueError(
"Profile type must be 1D or 2D, not %s" % self._profileType)
+
+ def setProfileMethod(self, method):
+ assert method in ('sum', 'mean')
+ self._method3D = method
+ self.updateProfile()
+
+ def getProfileMethod(self):
+ return self._method3D
diff --git a/silx/gui/plot/ProfileMainWindow.py b/silx/gui/plot/ProfileMainWindow.py
index 3738511..caa076c 100644
--- a/silx/gui/plot/ProfileMainWindow.py
+++ b/silx/gui/plot/ProfileMainWindow.py
@@ -47,6 +47,10 @@ class ProfileMainWindow(qt.QMainWindow):
"""Emitted by :meth:`closeEvent` (e.g. when the window is closed
through the window manager's close icon)."""
+ sigProfileMethodChanged = qt.Signal(str)
+ """Emitted when the method to compute the profile changed (for now can be
+ sum or mean)"""
+
def __init__(self, parent=None):
qt.QMainWindow.__init__(self, parent=parent)
@@ -57,6 +61,7 @@ class ProfileMainWindow(qt.QMainWindow):
# by default, profile is assumed to be a 1D curve
self._profileType = None
self.setProfileType("1D")
+ self.setProfileMethod('sum')
def setProfileType(self, profileType):
"""Set which profile plot widget (1D or 2D) is to be used
@@ -67,7 +72,6 @@ class ProfileMainWindow(qt.QMainWindow):
# import here to avoid circular import
from .PlotWindow import Plot1D, Plot2D # noqa
self._profileType = profileType
-
if self._profileType == "1D":
if self._plot2D is not None:
self._plot2D.setParent(None) # necessary to avoid widget destruction
@@ -99,3 +103,13 @@ class ProfileMainWindow(qt.QMainWindow):
def closeEvent(self, qCloseEvent):
self.sigClose.emit()
qCloseEvent.accept()
+
+ def setProfileMethod(self, method):
+ """
+
+ :param str method: method to manage the 'width' in the profile
+ (computing mean or sum).
+ """
+ assert method in ('sum', 'mean')
+ self._method = method
+ self.sigProfileMethodChanged.emit(self._method)
diff --git a/silx/gui/plot/ScatterMaskToolsWidget.py b/silx/gui/plot/ScatterMaskToolsWidget.py
index 2a10f6d..de645be 100644
--- a/silx/gui/plot/ScatterMaskToolsWidget.py
+++ b/silx/gui/plot/ScatterMaskToolsWidget.py
@@ -207,6 +207,13 @@ class ScatterMaskToolsWidget(BaseMaskToolsWidget):
The mask can be cropped or padded to fit active scatter,
the returned shape is that of the scatter data.
"""
+ if self._data_scatter is None:
+ # this can happen if the mask tools widget has never been shown
+ self._data_scatter = self.plot._getActiveItem(kind="scatter")
+ if self._data_scatter is None:
+ return None
+ self._adjustColorAndBrushSize(self._data_scatter)
+
if mask is None:
self.resetSelectionMask()
return self._data_scatter.getXData(copy=False).shape
@@ -261,6 +268,26 @@ class ScatterMaskToolsWidget(BaseMaskToolsWidget):
self.plot.sigActiveScatterChanged.connect(
self._activeScatterChangedAfterCare)
+ def _adjustColorAndBrushSize(self, activeScatter):
+ colormap = activeScatter.getColormap()
+ self._defaultOverlayColor = rgba(cursorColorForColormap(colormap['name']))
+ self._setMaskColors(self.levelSpinBox.value(),
+ self.transparencySlider.value() /
+ self.transparencySlider.maximum())
+ self._z = activeScatter.getZValue() + 1
+ self._data_scatter = activeScatter
+
+ # Adjust brush size to data range
+ xData = self._data_scatter.getXData(copy=False)
+ yData = self._data_scatter.getYData(copy=False)
+ # Adjust brush size to data range
+ if xData.size > 0 and yData.size > 0:
+ xMin, xMax = min_max(xData)
+ yMin, yMax = min_max(yData)
+ self._data_extent = max(xMax - xMin, yMax - yMin)
+ else:
+ self._data_extent = None
+
def _activeScatterChangedAfterCare(self, previous, next):
"""Check synchro of active scatter and mask when mask widget is hidden.
@@ -278,19 +305,7 @@ class ScatterMaskToolsWidget(BaseMaskToolsWidget):
self._data_scatter = None
else:
- colormap = activeScatter.getColormap()
- self._defaultOverlayColor = rgba(cursorColorForColormap(colormap['name']))
- self._setMaskColors(self.levelSpinBox.value(),
- self.transparencySlider.value() /
- self.transparencySlider.maximum())
-
- self._z = activeScatter.getZValue() + 1
- self._data_scatter = activeScatter
-
- # Adjust brush size to data range
- xMin, xMax = min_max(self._data_scatter.getXData(copy=False))
- yMin, yMax = min_max(self._data_scatter.getYData(copy=False))
- self._data_extent = max(xMax - xMin, yMax - yMin)
+ self._adjustColorAndBrushSize(activeScatter)
if self._data_scatter.getXData(copy=False).shape != self._mask.getMask(copy=False).shape:
# scatter has not the same size, remove mask and stop listening
@@ -322,25 +337,7 @@ class ScatterMaskToolsWidget(BaseMaskToolsWidget):
else: # There is an active scatter
self.setEnabled(True)
-
- colormap = activeScatter.getColormap()
- self._defaultOverlayColor = rgba(cursorColorForColormap(colormap['name']))
- self._setMaskColors(self.levelSpinBox.value(),
- self.transparencySlider.value() /
- self.transparencySlider.maximum())
-
- self._z = activeScatter.getZValue() + 1
- self._data_scatter = activeScatter
-
- # Adjust brush size to data range
- xData = self._data_scatter.getXData(copy=False)
- yData = self._data_scatter.getYData(copy=False)
- if xData.size > 0 and yData.size > 0:
- xMin, xMax = min_max(xData)
- yMin, yMax = min_max(yData)
- self._data_extent = max(xMax - xMin, yMax - yMin)
- else:
- self._data_extent = None
+ self._adjustColorAndBrushSize(activeScatter)
self._mask.setDataItem(self._data_scatter)
if self._data_scatter.getXData(copy=False).shape != self._mask.getMask(copy=False).shape:
diff --git a/silx/gui/plot/ScatterView.py b/silx/gui/plot/ScatterView.py
index f830cb3..ae79cf9 100644
--- a/silx/gui/plot/ScatterView.py
+++ b/silx/gui/plot/ScatterView.py
@@ -268,16 +268,16 @@ class ScatterView(qt.QMainWindow):
self.getPlotWidget().setDefaultColormap(colormap)
def getColormap(self):
- """Return the :class:`.Colormap` in use.
+ """Return the colormap object in use.
:return: Colormap currently in use
:rtype: ~silx.gui.colors.Colormap
"""
- self.getScatterItem().getColormap()
+ return self.getScatterItem().getColormap()
# Control displayed scatter plot
- def setData(self, x, y, value, xerror=None, yerror=None, copy=True):
+ def setData(self, x, y, value, xerror=None, yerror=None, alpha=None, copy=True):
"""Set the data of the scatter plot.
To reset the scatter plot, set x, y and value to None.
@@ -295,6 +295,8 @@ class ScatterView(qt.QMainWindow):
:param yerror: Values with the uncertainties on the y values
:type yerror: A float, or a numpy.ndarray of float32. See xerror.
+ :param alpha: Values with the transparency (between 0 and 1)
+ :type alpha: A float, or a numpy.ndarray of float32
:param bool copy: True make a copy of the data (default),
False to use provided arrays.
"""
@@ -303,7 +305,7 @@ class ScatterView(qt.QMainWindow):
value = () if value is None else value
self.getScatterItem().setData(
- x=x, y=y, value=value, xerror=xerror, yerror=yerror, copy=copy)
+ x=x, y=y, value=value, xerror=xerror, yerror=yerror, alpha=alpha, copy=copy)
def getData(self, *args, **kwargs):
return self.getScatterItem().getData(*args, **kwargs)
diff --git a/silx/gui/plot/StackView.py b/silx/gui/plot/StackView.py
index d1e8e3c..72b6cd4 100644
--- a/silx/gui/plot/StackView.py
+++ b/silx/gui/plot/StackView.py
@@ -69,7 +69,7 @@ Example::
__authors__ = ["P. Knobel", "H. Payno"]
__license__ = "MIT"
-__date__ = "26/04/2018"
+__date__ = "10/10/2018"
import numpy
import logging
@@ -202,6 +202,10 @@ class StackView(qt.QMainWindow):
"""Function returning the plot title based on the frame index.
It can be set to a custom function using :meth:`setTitleCallback`"""
+ self.calibrations3D = (calibration.NoCalibration(),
+ calibration.NoCalibration(),
+ calibration.NoCalibration())
+
central_widget = qt.QWidget(self)
self._plot = PlotWindow(parent=central_widget, backend=backend,
@@ -212,6 +216,7 @@ class StackView(qt.QMainWindow):
copy=copy, save=save, print_=print_,
control=control, position=position,
roi=False, mask=mask)
+ self._plot.getIntensityHistogramAction().setVisible(True)
self.sigInteractiveModeChanged = self._plot.sigInteractiveModeChanged
self.sigActiveImageChanged = self._plot.sigActiveImageChanged
self.sigPlotSignal = self._plot.sigPlotSignal
@@ -229,7 +234,7 @@ class StackView(qt.QMainWindow):
self._plot.sigPlotSignal.connect(self._plotCallback)
self.__planeSelection = PlanesWidget(self._plot)
- self.__planeSelection.sigPlaneSelectionChanged.connect(self.__setPerspective)
+ self.__planeSelection.sigPlaneSelectionChanged.connect(self.setPerspective)
self._browser_label = qt.QLabel("Image index (Dim0):")
@@ -287,12 +292,23 @@ class StackView(qt.QMainWindow):
self.valueChanged.emit(float(x), float(y),
None)
- def __setPerspective(self, perspective):
- """Function called when the browsed/orthogonal dimension changes.
- Updates :attr:`_perspective`, transposes data, updates the plot,
- emits :attr:`sigPlaneSelectionChanged` and :attr:`sigStackChanged`.
+ def getPerspective(self):
+ """Returns the index of the dimension the stack is browsed with
+
+ Possible values are: 0, 1, or 2.
- :param int perspective: the new browsed dimension
+ :rtype: int
+ """
+ return self._perspective
+
+ def setPerspective(self, perspective):
+ """Set the index of the dimension the stack is browsed with:
+
+ - slice plane Dim1-Dim2: perspective 0
+ - slice plane Dim0-Dim2: perspective 1
+ - slice plane Dim0-Dim1: perspective 2
+
+ :param int perspective: Orthogonal dimension number (0, 1, or 2)
"""
if perspective == self._perspective:
return
@@ -301,17 +317,21 @@ class StackView(qt.QMainWindow):
raise ValueError(
"Perspective must be 0, 1 or 2, not %s" % perspective)
- self._perspective = perspective
+ self._perspective = int(perspective)
self.__createTransposedView()
self.__updateFrameNumber(self._browser.value())
self._plot.resetZoom()
self.__updatePlotLabels()
+ self._updateTitle()
self._browser_label.setText("Image index (Dim%d):" %
(self._first_stack_dimension + perspective))
self.sigPlaneSelectionChanged.emit(perspective)
self.sigStackChanged.emit(self._stack.size if
self._stack is not None else 0)
+ self.__planeSelection.sigPlaneSelectionChanged.disconnect(self.setPerspective)
+ self.__planeSelection.setPerspective(self._perspective)
+ self.__planeSelection.sigPlaneSelectionChanged.connect(self.setPerspective)
def __updatePlotLabels(self):
"""Update plot axes labels depending on perspective"""
@@ -391,39 +411,47 @@ class StackView(qt.QMainWindow):
i)
self.calibrations3D.append(calib)
- def _getXYZCalibs(self):
- """Return calibrations sorted in the XYZ graph order.
+ def getCalibrations(self, order='array'):
+ """Returns currently used calibrations for each axis
- If the X or Y calibration is not linear, it will be replaced
- with a :class:`calibration.NoCalibration` object
- and as a result the corresponding axis will not be scaled."""
- xy_dims = [0, 1, 2]
- xy_dims.remove(self._perspective)
+ Returned calibrations might differ from the ones that were set as
+ non-linear calibrations used for image axes are temporarily ignored.
- xcalib = self.calibrations3D[max(xy_dims)]
- ycalib = self.calibrations3D[min(xy_dims)]
- zcalib = self.calibrations3D[self._perspective]
+ :param str order:
+ 'array' to sort calibrations as data array (dim0, dim1, dim2),
+ 'axes' to sort calibrations as currently selected x, y and z axes.
+ :return: Calibrations ordered depending on order
+ :rtype: List[~silx.math.calibration.AbstractCalibration]
+ """
+ assert order in ('array', 'axes')
+ calibs = []
# filter out non-linear calibration for graph axes
- if not xcalib.is_affine():
- xcalib = calibration.NoCalibration()
- if not ycalib.is_affine():
- ycalib = calibration.NoCalibration()
+ for index, calib in enumerate(self.calibrations3D):
+ if index != self._perspective and not calib.is_affine():
+ calib = calibration.NoCalibration()
+ calibs.append(calib)
+
+ if order == 'axes': # Move 'z' axis to the end
+ xy_dims = [d for d in (0, 1, 2) if d != self._perspective]
+ calibs = [calibs[max(xy_dims)],
+ calibs[min(xy_dims)],
+ calibs[self._perspective]]
- return xcalib, ycalib, zcalib
+ return tuple(calibs)
def _getImageScale(self):
"""
:return: 2-tuple (XScale, YScale) for current image view
"""
- xcalib, ycalib, _zcalib = self._getXYZCalibs()
+ xcalib, ycalib, _zcalib = self.getCalibrations(order='axes')
return xcalib.get_slope(), ycalib.get_slope()
def _getImageOrigin(self):
"""
:return: 2-tuple (XOrigin, YOrigin) for current image view
"""
- xcalib, ycalib, _zcalib = self._getXYZCalibs()
+ xcalib, ycalib, _zcalib = self.getCalibrations(order='axes')
return xcalib(0), ycalib(0)
def _getImageZ(self, index):
@@ -431,7 +459,7 @@ class StackView(qt.QMainWindow):
:param idx: 0-based image index in the stack
:return: calibrated Z value corresponding to the image idx
"""
- _xcalib, _ycalib, zcalib = self._getXYZCalibs()
+ _xcalib, _ycalib, zcalib = self.getCalibrations(order='axes')
return zcalib(index)
def _updateTitle(self):
@@ -442,7 +470,7 @@ class StackView(qt.QMainWindow):
return "Image z=%g" % self._getImageZ(index)
# public API, stack specific methods
- def setStack(self, stack, perspective=0, reset=True, calibrations=None):
+ def setStack(self, stack, perspective=None, reset=True, calibrations=None):
"""Set the 3D stack.
The perspective parameter is used to define which dimension of the 3D
@@ -454,8 +482,7 @@ class StackView(qt.QMainWindow):
:type stack: 3D numpy.ndarray, or 3D h5py.Dataset, or list/tuple of 2D
numpy arrays, or None.
:param int perspective: Dimension for the frame index: 0, 1 or 2.
- By default, the dimension for the image index is the first
- dimension of the 3D stack (``perspective=0``).
+ Use ``None`` to keep the current perspective (default).
:param bool reset: Whether to reset zoom or not.
:param calibrations: Sequence of 3 calibration objects for each axis.
These objects can be a subclass of :class:`AbstractCalibration`,
@@ -488,8 +515,10 @@ class StackView(qt.QMainWindow):
self._stack = stack
self.__createTransposedView()
- if perspective != self._perspective:
- self.__setPerspective(perspective)
+ perspective_changed = False
+ if perspective not in [None, self._perspective]:
+ perspective_changed = True
+ self.setPerspective(perspective)
# This call to setColormap redefines the meaning of autoscale
# for 3D volume: take global min/max rather than frame min/max
@@ -505,8 +534,8 @@ class StackView(qt.QMainWindow):
replace=True,
resetzoom=False)
self._plot.setActiveImage(self.__imageLegend)
- self._plot.setGraphTitle("Image z=%g" % self._getImageZ(0))
self.__updatePlotLabels()
+ self._updateTitle()
if reset:
self._plot.resetZoom()
@@ -514,12 +543,7 @@ class StackView(qt.QMainWindow):
# enable and init browser
self._browser.setEnabled(True)
- if perspective != self._perspective:
- self.__planeSelection.setPerspective(perspective)
- # this causes self.__setPerspective to be called, which emits
- # sigStackChanged and sigPlaneSelectionChanged
-
- else:
+ if not perspective_changed: # avoid double signal (see self.setPerspective)
self.sigStackChanged.emit(stack.size)
def getStack(self, copy=True, returnNumpyArray=False):
diff --git a/silx/gui/plot/StatsWidget.py b/silx/gui/plot/StatsWidget.py
index a36dd9f..bb66613 100644
--- a/silx/gui/plot/StatsWidget.py
+++ b/silx/gui/plot/StatsWidget.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -28,7 +28,7 @@ Module containing widgets displaying stats from items of a plot.
__authors__ = ["H. Payno"]
__license__ = "MIT"
-__date__ = "12/06/2018"
+__date__ = "24/07/2018"
import functools
@@ -63,6 +63,8 @@ class StatsWidget(qt.QWidget):
:param plot: the plot containing items on which we want statistics.
"""
+ sigVisibilityChanged = qt.Signal(bool)
+
NUMBER_FORMAT = '{0:.3f}'
class OptionsWidget(qt.QToolBar):
@@ -151,6 +153,14 @@ class StatsWidget(qt.QWidget):
self.setDisplayOnlyActiveItem = self._statsTable.setDisplayOnlyActiveItem
self.setStatsOnVisibleData = self._statsTable.setStatsOnVisibleData
+ def showEvent(self, event):
+ self.sigVisibilityChanged.emit(True)
+ qt.QWidget.showEvent(self, event)
+
+ def hideEvent(self, event):
+ self.sigVisibilityChanged.emit(False)
+ qt.QWidget.hideEvent(self, event)
+
def _optSelectionChanged(self, action=None):
self._statsTable.setDisplayOnlyActiveItem(self._options.isActiveItemMode())
@@ -366,7 +376,7 @@ class StatsTable(TableWidget):
self.setRowCount(0)
# It have to called befor3e accessing to the header items
- self.setHorizontalHeaderLabels(self._columns)
+ self.setHorizontalHeaderLabels(list(self._columns))
if self._statsHandler is not None:
for columnId, name in enumerate(self._columns):
@@ -539,7 +549,7 @@ class StatsTable(TableWidget):
self._statsOnVisibleData = b
self._updateCurrentStats()
- def _activeItemChanged(self, kind):
+ def _activeItemChanged(self, kind, previous, current):
"""Callback used when plotting only the active item"""
assert kind in ('curve', 'image', 'scatter', 'histogram')
self._updateItemObserve()
diff --git a/silx/gui/plot/_BaseMaskToolsWidget.py b/silx/gui/plot/_BaseMaskToolsWidget.py
index da0dbf5..e087354 100644
--- a/silx/gui/plot/_BaseMaskToolsWidget.py
+++ b/silx/gui/plot/_BaseMaskToolsWidget.py
@@ -29,7 +29,7 @@ from __future__ import division
__authors__ = ["T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "29/08/2018"
import os
import weakref
@@ -596,6 +596,10 @@ class BaseMaskToolsWidget(qt.QWidget):
maskGroup.setLayout(layout)
return maskGroup
+ def isMaskInteractionActivated(self):
+ """Returns true if any mask interaction is activated"""
+ return self.drawActionGroup.checkedAction() is not None
+
def _initDrawGroupBox(self):
"""Init drawing tools widgets"""
layout = qt.QVBoxLayout()
diff --git a/silx/gui/plot/_utils/test/testColormap.py b/silx/gui/plot/_utils/test/testColormap.py
deleted file mode 100644
index d77fa65..0000000
--- a/silx/gui/plot/_utils/test/testColormap.py
+++ /dev/null
@@ -1,648 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-
-import logging
-import time
-import unittest
-
-import numpy
-from PyMca5 import spslut
-
-from silx.image.colormap import dataToRGBAColormap
-
-_logger = logging.getLogger(__name__)
-
-# TODOs:
-# what to do with max < min: as SPS LUT or also invert outside boundaries?
-# test usedMin and usedMax
-# benchmark
-
-
-# common ######################################################################
-
-class _TestColormap(unittest.TestCase):
- # Array data types to test
- FLOATING_DTYPES = numpy.float16, numpy.float32, numpy.float64
- SIGNED_DTYPES = FLOATING_DTYPES + (numpy.int8, numpy.int16,
- numpy.int32, numpy.int64)
- UNSIGNED_DTYPES = numpy.uint8, numpy.uint16, numpy.uint32, numpy.uint64
- DTYPES = SIGNED_DTYPES + UNSIGNED_DTYPES
-
- # Array sizes to test
- SIZES = 2, 10, 256, 1024 # , 2048, 4096
-
- # Colormaps definitions
- _LUT_RED_256 = numpy.zeros((256, 4), dtype=numpy.uint8)
- _LUT_RED_256[:, 0] = numpy.arange(256, dtype=numpy.uint8)
- _LUT_RED_256[:, 3] = 255
-
- _LUT_RGB_3 = numpy.array(((255, 0, 0, 255),
- (0, 255, 0, 255),
- (0, 0, 255, 255)), dtype=numpy.uint8)
-
- _LUT_RGB_768 = numpy.zeros((768, 4), dtype=numpy.uint8)
- _LUT_RGB_768[0:256, 0] = numpy.arange(256, dtype=numpy.uint8)
- _LUT_RGB_768[256:512, 1] = numpy.arange(256, dtype=numpy.uint8)
- _LUT_RGB_768[512:768, 1] = numpy.arange(256, dtype=numpy.uint8)
- _LUT_RGB_768[:, 3] = 255
-
- COLORMAPS = {
- 'red 256': _LUT_RED_256,
- 'rgb 3': _LUT_RGB_3,
- 'rgb 768': _LUT_RGB_768,
- }
-
- @staticmethod
- def _log(*args):
- """Logging used by test for debugging."""
- _logger.debug(str(args))
-
- @staticmethod
- def buildControlPixmap(data, colormap, start=None, end=None,
- isLog10=False):
- """Generate a pixmap used to test C pixmap."""
- if isLog10: # Convert to log
- if start is None:
- posValue = data[numpy.nonzero(data > 0)]
- if posValue.size != 0:
- start = numpy.nanmin(posValue)
- else:
- start = 0.
-
- if end is None:
- end = numpy.nanmax(data)
-
- start = 0. if start <= 0. else numpy.log10(start,
- dtype=numpy.float64)
- end = 0. if end <= 0. else numpy.log10(end,
- dtype=numpy.float64)
-
- data = numpy.log10(data, dtype=numpy.float64)
- else:
- if start is None:
- start = numpy.nanmin(data)
- if end is None:
- end = numpy.nanmax(data)
-
- start, end = float(start), float(end)
- min_, max_ = min(start, end), max(start, end)
-
- if start == end:
- indices = numpy.asarray((len(colormap) - 1) * (data >= max_),
- dtype=numpy.int)
- else:
- clipData = numpy.clip(data, min_, max_) # Clip first avoid overflow
- scale = len(colormap) / (end - start)
- normData = scale * (numpy.asarray(clipData, numpy.float64) - start)
-
- # Clip again to makes sure <= len(colormap) - 1
- indices = numpy.asarray(numpy.clip(normData,
- 0, len(colormap) - 1),
- dtype=numpy.uint32)
-
- pixmap = numpy.take(colormap, indices, axis=0)
- pixmap.shape = data.shape + (4,)
- return numpy.ascontiguousarray(pixmap)
-
- @staticmethod
- def buildSPSLUTRedPixmap(data, start=None, end=None, isLog10=False):
- """Generate a pixmap with SPS LUT.
- Only supports red colormap with 256 colors.
- """
- colormap = spslut.RED
- mapping = spslut.LOG if isLog10 else spslut.LINEAR
-
- if start is None and end is None:
- autoScale = 1
- start, end = 0, 1
- else:
- autoScale = 0
- if start is None:
- start = data.min()
- if end is None:
- end = data.max()
-
- pixmap, size, minMax = spslut.transform(data,
- (1, 0),
- (mapping, 3.0),
- 'RGBX',
- colormap,
- autoScale,
- (start, end),
- (0, 255),
- 1)
- pixmap.shape = data.shape[0], data.shape[1], 4
-
- return pixmap
-
- def _testColormap(self, data, colormap, start, end, control=None,
- isLog10=False, nanColor=None):
- """Test pixmap built with C code against SPS LUT if possible,
- else against Python control code."""
- startTime = time.time()
- pixmap = dataToRGBAColormap(data,
- colormap,
- start,
- end,
- isLog10,
- nanColor)
- duration = time.time() - startTime
-
- # Compare with result
- controlType = 'array'
- if control is None:
- startTime = time.time()
-
- # Compare with SPS LUT if possible
- if (colormap.shape == self.COLORMAPS['red 256'].shape and
- numpy.all(numpy.equal(colormap, self.COLORMAPS['red 256'])) and
- data.size % 2 == 0 and
- data.dtype in (numpy.float32, numpy.float64)):
- # Only works with red colormap and even size
- # as it needs 2D data
- if len(data.shape) == 1:
- data.shape = data.size // 2, -1
- pixmap.shape = data.shape + (4,)
- control = self.buildSPSLUTRedPixmap(data, start, end, isLog10)
- controlType = 'SPS LUT'
-
- # Compare with python test implementation
- else:
- control = self.buildControlPixmap(data, colormap, start, end,
- isLog10)
- controlType = 'Python control code'
-
- controlDuration = time.time() - startTime
- if duration >= controlDuration:
- self._log('duration', duration, 'control', controlDuration)
- # Allows duration to be 20% over SPS LUT duration
- # self.assertTrue(duration < 1.2 * controlDuration)
-
- difference = numpy.fabs(numpy.asarray(pixmap, dtype=numpy.float64) -
- numpy.asarray(control, dtype=numpy.float64))
- if numpy.any(difference != 0.0):
- self._log('control', controlType)
- self._log('data', data)
- self._log('pixmap', pixmap)
- self._log('control', control)
- self._log('errors', numpy.ravel(difference))
- self._log('errors', difference[difference != 0])
- self._log('in pixmap', pixmap[difference != 0])
- self._log('in control', control[difference != 0])
- self._log('Max error', difference.max())
-
- # Allows a difference of 1 per channel
- self.assertTrue(numpy.all(difference <= 1.0))
-
- return duration
-
-
-# TestColormap ################################################################
-
-class TestColormap(_TestColormap):
- """Test common limit case for colormap in C with both linear and log mode.
-
- Test with different: data types, sizes, colormaps (with different sizes),
- mapping range.
- """
-
- def testNoData(self):
- """Test pixmap generation with empty data."""
- self._log("TestColormap.testNoData")
- cmapName = 'red 256'
- colormap = self.COLORMAPS[cmapName]
-
- for dtype in self.DTYPES:
- for isLog10 in (False, True):
- data = numpy.array((), dtype=dtype)
- result = numpy.array((), dtype=numpy.uint8)
- result.shape = 0, 4
- duration = self._testColormap(data, colormap,
- None, None, result, isLog10)
- self._log('No data', 'red 256', dtype, len(data), (None, None),
- 'isLog10:', isLog10, duration)
-
- def testNaN(self):
- """Test pixmap generation with NaN values and no NaN color."""
- self._log("TestColormap.testNaN")
- cmapName = 'red 256'
- colormap = self.COLORMAPS[cmapName]
-
- for dtype in self.FLOATING_DTYPES:
- for isLog10 in (False, True):
- # All NaNs
- data = numpy.array((float('nan'),) * 4, dtype=dtype)
- result = numpy.array(((0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, colormap,
- None, None, result, isLog10)
- self._log('All NaNs', 'red 256', dtype, len(data),
- (None, None), 'isLog10:', isLog10, duration)
-
- # Some NaNs
- data = numpy.array((1., float('nan'), 0., float('nan')),
- dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, colormap,
- None, None, result, isLog10)
- self._log('Some NaNs', 'red 256', dtype, len(data),
- (None, None), 'isLog10:', isLog10, duration)
-
- def testNaNWithColor(self):
- """Test pixmap generation with NaN values with a NaN color."""
- self._log("TestColormap.testNaNWithColor")
- cmapName = 'red 256'
- colormap = self.COLORMAPS[cmapName]
-
- for dtype in self.FLOATING_DTYPES:
- for isLog10 in (False, True):
- # All NaNs
- data = numpy.array((float('nan'),) * 4, dtype=dtype)
- result = numpy.array(((128, 128, 128, 255),
- (128, 128, 128, 255),
- (128, 128, 128, 255),
- (128, 128, 128, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, colormap,
- None, None, result, isLog10,
- nanColor=(128, 128, 128, 255))
- self._log('All NaNs', 'red 256', dtype, len(data),
- (None, None), 'isLog10:', isLog10, duration)
-
- # Some NaNs
- data = numpy.array((1., float('nan'), 0., float('nan')),
- dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (128, 128, 128, 255),
- (0, 0, 0, 255),
- (128, 128, 128, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, colormap,
- None, None, result, isLog10,
- nanColor=(128, 128, 128, 255))
- self._log('Some NaNs', 'red 256', dtype, len(data),
- (None, None), 'isLog10:', isLog10, duration)
-
-
-# TestLinearColormap ##########################################################
-
-class TestLinearColormap(_TestColormap):
- """Test fill pixmap with colormap in C with linear mode.
-
- Test with different: data types, sizes, colormaps (with different sizes),
- mapping range.
- """
-
- # Colormap ranges to map
- RANGES = (None, None), (1, 10)
-
- def test1DData(self):
- """Test pixmap generation for 1D data of different size and types."""
- self._log("TestLinearColormap.test1DData")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(size, dtype=dtype)
- duration = self._testColormap(data, colormap,
- start, end)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1]
- duration = self._testColormap(data, colormap,
- start, end)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- def test2DData(self):
- """Test pixmap generation for 2D data of different size and types."""
- self._log("TestLinearColormap.test2DData")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(size * size, dtype=dtype)
- data = numpy.nan_to_num(data)
- data.shape = size, size
- duration = self._testColormap(data, colormap,
- start, end)
-
- self._log('2D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1, ::-1]
- duration = self._testColormap(data, colormap,
- start, end)
-
- self._log('2D', cmapName, dtype, size, (start, end),
- duration)
-
- def testInf(self):
- """Test pixmap generation with Inf values."""
- self._log("TestLinearColormap.testInf")
-
- for dtype in self.FLOATING_DTYPES:
- # All positive Inf
- data = numpy.array((float('inf'),) * 4, dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result)
- self._log('All +Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # All negative Inf
- data = numpy.array((float('-inf'),) * 4, dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result)
- self._log('All -Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # All +/-Inf
- data = numpy.array((float('inf'), float('-inf'),
- float('-inf'), float('inf')), dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (255, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result)
- self._log('All +/-Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # Some +/-Inf
- data = numpy.array((float('inf'), 0., float('-inf'), -10.),
- dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None,
- result) # Seg Fault with SPS
- self._log('Some +/-Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- @unittest.skip("Not for reproductible tests")
- def test1DDataRandom(self):
- """Test pixmap generation for 1D data of different size and types."""
- self._log("TestLinearColormap.test1DDataRandom")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- try:
- dtypeMax = numpy.iinfo(dtype).max
- except ValueError:
- dtypeMax = numpy.finfo(dtype).max
- data = numpy.asarray(numpy.random.rand(size) * dtypeMax,
- dtype=dtype)
- duration = self._testColormap(data, colormap,
- start, end)
-
- self._log('1D Random', cmapName, dtype, size,
- (start, end), duration)
-
-
-# TestLog10Colormap ###########################################################
-
-class TestLog10Colormap(_TestColormap):
- """Test fill pixmap with colormap in C with log mode.
-
- Test with different: data types, sizes, colormaps (with different sizes),
- mapping range.
- """
- # Colormap ranges to map
- RANGES = (None, None), (1, 10) # , (10, 1)
-
- def test1DDataAllPositive(self):
- """Test pixmap generation for all positive 1D data."""
- self._log("TestLog10Colormap.test1DDataAllPositive")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(size, dtype=dtype) + 1
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1]
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- def test2DDataAllPositive(self):
- """Test pixmap generation for all positive 2D data."""
- self._log("TestLog10Colormap.test2DDataAllPositive")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(size * size, dtype=dtype) + 1
- data = numpy.nan_to_num(data)
- data.shape = size, size
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('2D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1, ::-1]
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('2D', cmapName, dtype, size, (start, end),
- duration)
-
- def testAllNegative(self):
- """Test pixmap generation for all negative 1D data."""
- self._log("TestLog10Colormap.testAllNegative")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.SIGNED_DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(-size, 0, dtype=dtype)
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1]
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- def testCrossingZero(self):
- """Test pixmap generation for 1D data with negative and zero."""
- self._log("TestLog10Colormap.testCrossingZero")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.SIGNED_DTYPES:
- for start, end in self.RANGES:
- # Increasing values
- data = numpy.arange(-size/2, size/2 + 1, dtype=dtype)
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- # Reverse order
- data = data[::-1]
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D', cmapName, dtype, size, (start, end),
- duration)
-
- @unittest.skip("Not for reproductible tests")
- def test1DDataRandom(self):
- """Test pixmap generation for 1D data of different size and types."""
- self._log("TestLog10Colormap.test1DDataRandom")
- for cmapName, colormap in self.COLORMAPS.items():
- for size in self.SIZES:
- for dtype in self.DTYPES:
- for start, end in self.RANGES:
- try:
- dtypeMax = numpy.iinfo(dtype).max
- dtypeMin = numpy.iinfo(dtype).min
- except ValueError:
- dtypeMax = numpy.finfo(dtype).max
- dtypeMin = numpy.finfo(dtype).min
- if dtypeMin < 0:
- data = numpy.asarray(-dtypeMax/2. +
- numpy.random.rand(size) * dtypeMax,
- dtype=dtype)
- else:
- data = numpy.asarray(numpy.random.rand(size) * dtypeMax,
- dtype=dtype)
-
- duration = self._testColormap(data, colormap,
- start, end,
- isLog10=True)
-
- self._log('1D Random', cmapName, dtype, size,
- (start, end), duration)
-
- def testInf(self):
- """Test pixmap generation with Inf values."""
- self._log("TestLog10Colormap.testInf")
-
- for dtype in self.FLOATING_DTYPES:
- # All positive Inf
- data = numpy.array((float('inf'),) * 4, dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255),
- (255, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result, isLog10=True)
- self._log('All +Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # All negative Inf
- data = numpy.array((float('-inf'),) * 4, dtype=dtype)
- result = numpy.array(((0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result, isLog10=True)
- self._log('All -Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # All +/-Inf
- data = numpy.array((float('inf'), float('-inf'),
- float('-inf'), float('inf')), dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (255, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result, isLog10=True)
- self._log('All +/-Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
- # Some +/-Inf
- data = numpy.array((float('inf'), 0., float('-inf'), -10.),
- dtype=dtype)
- result = numpy.array(((255, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255),
- (0, 0, 0, 255)), dtype=numpy.uint8)
- duration = self._testColormap(data, self.COLORMAPS['red 256'],
- None, None, result, isLog10=True)
- self._log('Some +/-Inf', 'red 256', dtype, len(data), (None, None),
- duration)
-
-
-def suite():
- testSuite = unittest.TestSuite()
- for testClass in (TestColormap, TestLinearColormap): # , TestLog10Colormap):
- testSuite.addTest(
- unittest.defaultTestLoader.loadTestsFromTestCase(testClass))
- return testSuite
-
-
-if __name__ == '__main__':
- unittest.main(defaultTest='suite')
diff --git a/silx/gui/plot/actions/PlotToolAction.py b/silx/gui/plot/actions/PlotToolAction.py
new file mode 100644
index 0000000..77e8be2
--- /dev/null
+++ b/silx/gui/plot/actions/PlotToolAction.py
@@ -0,0 +1,150 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2004-2017 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""
+The class :class:`.PlotToolAction` help the creation of a qt.QAction associating
+a tool window with a :class:`.PlotWidget`.
+"""
+
+from __future__ import division
+
+
+__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel"]
+__license__ = "MIT"
+__date__ = "10/10/2018"
+
+
+import weakref
+
+from .PlotAction import PlotAction
+from silx.gui import qt
+
+
+class PlotToolAction(PlotAction):
+ """Base class for QAction that maintain a tool window operating on a
+ PlotWidget."""
+
+ def __init__(self, plot, icon, text, tooltip=None,
+ triggered=None, checkable=False, parent=None):
+ PlotAction.__init__(self,
+ plot=plot,
+ icon=icon,
+ text=text,
+ tooltip=tooltip,
+ triggered=self._triggered,
+ parent=parent,
+ checkable=True)
+ self._previousGeometry = None
+ self._toolWindow = None
+
+ def _triggered(self, checked):
+ """Update the plot of the histogram visibility status
+
+ :param bool checked: status of the action button
+ """
+ self._setToolWindowVisible(checked)
+
+ def _setToolWindowVisible(self, visible):
+ """Set the tool window visible or hidden."""
+ tool = self._getToolWindow()
+ if tool.isVisible() == visible:
+ # Nothing to do
+ return
+
+ if visible:
+ self._connectPlot(tool)
+ tool.show()
+ if self._previousGeometry is not None:
+ # Restore the geometry
+ tool.setGeometry(self._previousGeometry)
+ else:
+ self._disconnectPlot(tool)
+ # Save the geometry
+ self._previousGeometry = tool.geometry()
+ tool.hide()
+
+ def _connectPlot(self, window):
+ """Called if the tool is visible and have to be updated according to
+ event of the plot.
+
+ :param qt.QWidget window: The tool window
+ """
+ pass
+
+ def _disconnectPlot(self, window):
+ """Called if the tool is not visible and dont have anymore to be updated
+ according to event of the plot.
+
+ :param qt.QWidget window: The tool window
+ """
+ pass
+
+ def _isWindowInUse(self):
+ """Returns true if the tool window is currently in use."""
+ if not self.isChecked():
+ return False
+ return self._toolWindow is not None
+
+ def _ownerVisibilityChanged(self, isVisible):
+ """Called when the visibility of the parent of the tool window changes
+
+ :param bool isVisible: True if the parent became visible
+ """
+ if self._isWindowInUse():
+ self._setToolWindowVisible(isVisible)
+
+ def eventFilter(self, qobject, event):
+ """Observe when the close event is emitted then
+ simply uncheck the action button
+
+ :param qobject: the object observe
+ :param event: the event received by qobject
+ """
+ if event.type() == qt.QEvent.Close:
+ if self._toolWindow is not None:
+ window = self._toolWindow()
+ self._previousGeometry = window.geometry()
+ window.hide()
+ self.setChecked(False)
+
+ return PlotAction.eventFilter(self, qobject, event)
+
+ def _getToolWindow(self):
+ """Returns the window containg tohe tool.
+
+ It uses lazy loading to create this tool..
+ """
+ if self._toolWindow is None:
+ window = self._createToolWindow()
+ if self._previousGeometry is not None:
+ window.setGeometry(self._previousGeometry)
+ window.installEventFilter(self)
+ plot = self.plot
+ plot.sigVisibilityChanged.connect(self._ownerVisibilityChanged)
+ self._toolWindow = weakref.ref(window)
+ return self._toolWindow()
+
+ def _createToolWindow(self):
+ """Create the tool window managing the plot."""
+ raise NotImplementedError()
diff --git a/silx/gui/plot/actions/control.py b/silx/gui/plot/actions/control.py
index 6e08f21..10df130 100644
--- a/silx/gui/plot/actions/control.py
+++ b/silx/gui/plot/actions/control.py
@@ -601,3 +601,4 @@ class ShowAxisAction(PlotAction):
def _actionTriggered(self, checked=False):
self.plot.setAxesDisplayed(checked)
+
diff --git a/silx/gui/plot/actions/fit.py b/silx/gui/plot/actions/fit.py
index 5ca649c..cb70733 100644
--- a/silx/gui/plot/actions/fit.py
+++ b/silx/gui/plot/actions/fit.py
@@ -36,9 +36,9 @@ from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "03/01/2018"
+__date__ = "10/10/2018"
-from . import PlotAction
+from .PlotToolAction import PlotToolAction
import logging
from silx.gui import qt
from silx.gui.plot.ItemsSelectionDialog import ItemsSelectionDialog
@@ -86,7 +86,7 @@ def _getUniqueHistogram(plt):
return histograms[0]
-class FitAction(PlotAction):
+class FitAction(PlotToolAction):
"""QAction to open a :class:`FitWidget` and set its data to the
active curve if any, or to the first curve.
@@ -97,21 +97,38 @@ class FitAction(PlotAction):
super(FitAction, self).__init__(
plot, icon='math-fit', text='Fit curve',
tooltip='Open a fit dialog',
- triggered=self._getFitWindow,
- checkable=False, parent=parent)
- self.fit_window = None
-
- def _getFitWindow(self):
- self.xlabel = self.plot.getXAxis().getLabel()
- self.ylabel = self.plot.getYAxis().getLabel()
- self.xmin, self.xmax = self.plot.getXAxis().getLimits()
+ parent=parent)
+ self.fit_widget = None
+
+ def _createToolWindow(self):
+ window = qt.QMainWindow(parent=self.plot)
+ # import done here rather than at module level to avoid circular import
+ # FitWidget -> BackgroundWidget -> PlotWindow -> actions -> fit -> FitWidget
+ from ...fit.FitWidget import FitWidget
+ fit_widget = FitWidget(parent=window)
+ window.setCentralWidget(fit_widget)
+ fit_widget.guibuttons.DismissButton.clicked.connect(window.close)
+ fit_widget.sigFitWidgetSignal.connect(self.handle_signal)
+ self.fit_widget = fit_widget
+ return window
+
+ def _connectPlot(self, window):
+ # Wait for the next iteration, else the plot is not yet initialized
+ # No curve available
+ qt.QTimer.singleShot(10, lambda: self._initFit(window))
+
+ def _initFit(self, window):
+ plot = self.plot
+ self.xlabel = plot.getXAxis().getLabel()
+ self.ylabel = plot.getYAxis().getLabel()
+ self.xmin, self.xmax = plot.getXAxis().getLimits()
histo = _getUniqueHistogram(self.plot)
curve = _getUniqueCurve(self.plot)
if histo is None and curve is None:
# ambiguous case, we need to ask which plot item to fit
- isd = ItemsSelectionDialog(parent=self.plot, plot=self.plot)
+ isd = ItemsSelectionDialog(parent=plot, plot=self.plot)
isd.setWindowTitle("Select item to be fitted")
isd.setItemsSelectionMode(qt.QTableWidget.SingleSelection)
isd.setAvailableKinds(["curve", "histogram"])
@@ -141,29 +158,9 @@ class FitAction(PlotAction):
self.x = item.getXData(copy=False)
self.y = item.getYData(copy=False)
- # open a window with a FitWidget
- if self.fit_window is None:
- self.fit_window = qt.QMainWindow()
- # import done here rather than at module level to avoid circular import
- # FitWidget -> BackgroundWidget -> PlotWindow -> actions -> fit -> FitWidget
- from ...fit.FitWidget import FitWidget
- self.fit_widget = FitWidget(parent=self.fit_window)
- self.fit_window.setCentralWidget(
- self.fit_widget)
- self.fit_widget.guibuttons.DismissButton.clicked.connect(
- self.fit_window.close)
- self.fit_widget.sigFitWidgetSignal.connect(
- self.handle_signal)
- self.fit_window.show()
- else:
- if self.fit_window.isHidden():
- self.fit_window.show()
- self.fit_widget.show()
- self.fit_window.raise_()
-
self.fit_widget.setData(self.x, self.y,
xmin=self.xmin, xmax=self.xmax)
- self.fit_window.setWindowTitle(
+ window.setWindowTitle(
"Fitting " + self.legend +
" on x range %f-%f" % (self.xmin, self.xmax))
diff --git a/silx/gui/plot/actions/histogram.py b/silx/gui/plot/actions/histogram.py
index d6e3269..9181f53 100644
--- a/silx/gui/plot/actions/histogram.py
+++ b/silx/gui/plot/actions/histogram.py
@@ -34,10 +34,10 @@ The following QAction are available:
from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel"]
-__date__ = "30/04/2018"
+__date__ = "10/10/2018"
__license__ = "MIT"
-from . import PlotAction
+from .PlotToolAction import PlotToolAction
from silx.math.histogram import Histogramnd
from silx.math.combo import min_max
import numpy
@@ -47,7 +47,7 @@ from silx.gui import qt
_logger = logging.getLogger(__name__)
-class PixelIntensitiesHistoAction(PlotAction):
+class PixelIntensitiesHistoAction(PlotToolAction):
"""QAction to plot the pixels intensities diagram
:param plot: :class:`.PlotWidget` instance on which to operate
@@ -55,43 +55,33 @@ class PixelIntensitiesHistoAction(PlotAction):
"""
def __init__(self, plot, parent=None):
- PlotAction.__init__(self,
- plot,
- icon='pixel-intensities',
- text='pixels intensity',
- tooltip='Compute image intensity distribution',
- triggered=self._triggered,
- parent=parent,
- checkable=True)
- self._plotHistogram = None
+ PlotToolAction.__init__(self,
+ plot,
+ icon='pixel-intensities',
+ text='pixels intensity',
+ tooltip='Compute image intensity distribution',
+ parent=parent)
self._connectedToActiveImage = False
self._histo = None
- def _triggered(self, checked):
- """Update the plot of the histogram visibility status
-
- :param bool checked: status of the action button
- """
- if checked:
- if not self._connectedToActiveImage:
- self.plot.sigActiveImageChanged.connect(
- self._activeImageChanged)
- self._connectedToActiveImage = True
- self.computeIntensityDistribution()
-
- self.getHistogramPlotWidget().show()
-
- else:
- if self._connectedToActiveImage:
- self.plot.sigActiveImageChanged.disconnect(
- self._activeImageChanged)
- self._connectedToActiveImage = False
+ def _connectPlot(self, window):
+ if not self._connectedToActiveImage:
+ self.plot.sigActiveImageChanged.connect(
+ self._activeImageChanged)
+ self._connectedToActiveImage = True
+ self.computeIntensityDistribution()
+ PlotToolAction._connectPlot(self, window)
- self.getHistogramPlotWidget().hide()
+ def _disconnectPlot(self, window):
+ if self._connectedToActiveImage:
+ self.plot.sigActiveImageChanged.disconnect(
+ self._activeImageChanged)
+ self._connectedToActiveImage = False
+ PlotToolAction._disconnectPlot(self, window)
def _activeImageChanged(self, previous, legend):
"""Handle active image change: toggle enabled toolbar, update curve"""
- if self.isChecked():
+ if self._isWindowInUse():
self.computeIntensityDistribution()
def computeIntensityDistribution(self):
@@ -132,35 +122,21 @@ class PixelIntensitiesHistoAction(PlotAction):
color='#66aad7')
plot.resetZoom()
- def eventFilter(self, qobject, event):
- """Observe when the close event is emitted then
- simply uncheck the action button
-
- :param qobject: the object observe
- :param event: the event received by qobject
- """
- if event.type() == qt.QEvent.Close:
- if self._plotHistogram is not None:
- self._plotHistogram.hide()
- self.setChecked(False)
-
- return PlotAction.eventFilter(self, qobject, event)
-
def getHistogramPlotWidget(self):
"""Create the plot histogram if needed, otherwise create it
:return: the PlotWidget showing the histogram of the pixel intensities
"""
+ return self._getToolWindow()
+
+ def _createToolWindow(self):
from silx.gui.plot.PlotWindow import Plot1D
- if self._plotHistogram is None:
- self._plotHistogram = Plot1D(parent=self.plot)
- self._plotHistogram.setWindowFlags(qt.Qt.Window)
- self._plotHistogram.setWindowTitle('Image Intensity Histogram')
- self._plotHistogram.installEventFilter(self)
- self._plotHistogram.getXAxis().setLabel("Value")
- self._plotHistogram.getYAxis().setLabel("Count")
-
- return self._plotHistogram
+ window = Plot1D(parent=self.plot)
+ window.setWindowFlags(qt.Qt.Window)
+ window.setWindowTitle('Image Intensity Histogram')
+ window.getXAxis().setLabel("Value")
+ window.getYAxis().setLabel("Count")
+ return window
def getHistogram(self):
"""Return the last computed histogram
diff --git a/silx/gui/plot/actions/io.py b/silx/gui/plot/actions/io.py
index ac06942..97de527 100644
--- a/silx/gui/plot/actions/io.py
+++ b/silx/gui/plot/actions/io.py
@@ -37,10 +37,10 @@ from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "02/02/2018"
+__date__ = "12/07/2018"
from . import PlotAction
-from silx.io.utils import save1D, savespec
+from silx.io.utils import save1D, savespec, NEXUS_HDF5_EXT
from silx.io.nxdata import save_NXdata
import logging
import sys
@@ -53,7 +53,7 @@ from silx.gui import qt, printer
from silx.gui.dialog.GroupDialog import GroupDialog
from silx.third_party.EdfFile import EdfFile
from silx.third_party.TiffIO import TiffIO
-from ...utils._image import convertArrayToQImage
+from ...utils.image import convertArrayToQImage
if sys.version_info[0] == 3:
from io import BytesIO
else:
@@ -62,9 +62,7 @@ else:
_logger = logging.getLogger(__name__)
-
-_NEXUS_HDF5_EXT = [".h5", ".nx5", ".nxs", ".hdf", ".hdf5", ".cxi"]
-_NEXUS_HDF5_EXT_STR = ' '.join(['*' + ext for ext in _NEXUS_HDF5_EXT])
+_NEXUS_HDF5_EXT_STR = ' '.join(['*' + ext for ext in NEXUS_HDF5_EXT])
def selectOutputGroup(h5filename):
@@ -546,7 +544,7 @@ class SaveAction(PlotAction):
if (self.plot.getActiveCurve() is not None or
len(self.plot.getAllCurves()) == 1):
filters.update(self._filters['curve'].items())
- if len(self.plot.getAllCurves()) > 1:
+ if len(self.plot.getAllCurves()) >= 1:
filters.update(self._filters['curves'].items())
# Add scatter filters if there is a scatter
diff --git a/silx/gui/plot/actions/medfilt.py b/silx/gui/plot/actions/medfilt.py
index 4284a8b..276f970 100644
--- a/silx/gui/plot/actions/medfilt.py
+++ b/silx/gui/plot/actions/medfilt.py
@@ -39,9 +39,9 @@ from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "03/01/2018"
+__date__ = "10/10/2018"
-from . import PlotAction
+from .PlotToolAction import PlotToolAction
from silx.gui.widgets.MedianFilterDialog import MedianFilterDialog
from silx.math.medianfilter import medfilt2d
import logging
@@ -49,7 +49,7 @@ import logging
_logger = logging.getLogger(__name__)
-class MedianFilterAction(PlotAction):
+class MedianFilterAction(PlotToolAction):
"""QAction to plot the pixels intensities diagram
:param plot: :class:`.PlotWidget` instance on which to operate
@@ -57,27 +57,29 @@ class MedianFilterAction(PlotAction):
"""
def __init__(self, plot, parent=None):
- PlotAction.__init__(self,
- plot,
- icon='median-filter',
- text='median filter',
- tooltip='Apply a median filter on the image',
- triggered=self._triggered,
- parent=parent)
+ PlotToolAction.__init__(self,
+ plot,
+ icon='median-filter',
+ text='median filter',
+ tooltip='Apply a median filter on the image',
+ parent=parent)
self._originalImage = None
self._legend = None
self._filteredImage = None
- self._popup = MedianFilterDialog(parent=plot)
- self._popup.sigFilterOptChanged.connect(self._updateFilter)
+
+ def _createToolWindow(self):
+ popup = MedianFilterDialog(parent=self.plot)
+ popup.sigFilterOptChanged.connect(self._updateFilter)
+ return popup
+
+ def _connectPlot(self, window):
+ PlotToolAction._connectPlot(self, window)
self.plot.sigActiveImageChanged.connect(self._updateActiveImage)
self._updateActiveImage()
- def _triggered(self, checked):
- """Update the plot of the histogram visibility status
-
- :param bool checked: status of the action button
- """
- self._popup.show()
+ def _disconnectPlot(self, window):
+ PlotToolAction._disconnectPlot(self, window)
+ self.plot.sigActiveImageChanged.disconnect(self._updateActiveImage)
def _updateActiveImage(self):
"""Set _activeImageLegend and _originalImage from the active image"""
diff --git a/silx/gui/plot/backends/BackendBase.py b/silx/gui/plot/backends/BackendBase.py
index 8352ea0..7fb8be0 100644
--- a/silx/gui/plot/backends/BackendBase.py
+++ b/silx/gui/plot/backends/BackendBase.py
@@ -163,9 +163,8 @@ class BackendBase(object):
:param int z: Layer on which to draw the image
:param bool selectable: indicate if the image can be selected
:param bool draggable: indicate if the image can be moved
- :param colormap: :class:`.Colormap` describing the colormap to use.
- Ignored if data is RGB(A).
- :type colormap: :class:`.Colormap`
+ :param ~silx.gui.colors.Colormap colormap: Colormap object to use.
+ Ignored if data is RGB(A).
:param float alpha: Opacity of the image, as a float in range [0, 1].
:returns: The handle used by the backend to univocally access the image
"""
@@ -189,7 +188,7 @@ class BackendBase(object):
def addMarker(self, x, y, legend, text, color,
selectable, draggable,
- symbol, constraint):
+ symbol, linestyle, linewidth, constraint):
"""Add a point, vertical line or horizontal line marker to the plot.
:param float x: Horizontal position of the marker in graph coordinates.
@@ -212,7 +211,17 @@ class BackendBase(object):
- 'x' x-cross
- 'd' diamond
- 's' square
+ :param str linestyle: Style of the line.
+ Only relevant for line markers where X or Y is None.
+ Value in:
+ - ' ' no line
+ - '-' solid line
+ - '--' dashed line
+ - '-.' dash-dot line
+ - ':' dotted line
+ :param float linewidth: Width of the line.
+ Only relevant for line markers where X or Y is None.
:param constraint: A function filtering marker displacement by
dragging operations or None for no filter.
This function is called each time a marker is
diff --git a/silx/gui/plot/backends/BackendMatplotlib.py b/silx/gui/plot/backends/BackendMatplotlib.py
index 49c4540..3b1d6dd 100644
--- a/silx/gui/plot/backends/BackendMatplotlib.py
+++ b/silx/gui/plot/backends/BackendMatplotlib.py
@@ -28,7 +28,7 @@ from __future__ import division
__authors__ = ["V.A. Sole", "T. Vincent, H. Payno"]
__license__ = "MIT"
-__date__ = "18/10/2017"
+__date__ = "01/08/2018"
import logging
@@ -56,8 +56,7 @@ from matplotlib.collections import PathCollection, LineCollection
from matplotlib.ticker import Formatter, ScalarFormatter, Locator
-
-from ..matplotlib.ModestImage import ModestImage
+from ....third_party.modest_image import ModestImage
from . import BackendBase
from .._utils import FLOAT32_MINPOS
from .._utils.dtime_ticklayout import calcTicks, bestFormatString, timestamp
@@ -520,7 +519,7 @@ class BackendMatplotlib(BackendBase.BackendBase):
def addMarker(self, x, y, legend, text, color,
selectable, draggable,
- symbol, constraint):
+ symbol, linestyle, linewidth, constraint):
legend = "__MARKER__" + legend
textArtist = None
@@ -548,7 +547,11 @@ class BackendMatplotlib(BackendBase.BackendBase):
verticalalignment=valign)
elif x is not None:
- line = self.ax.axvline(x, label=legend, color=color)
+ line = self.ax.axvline(x,
+ label=legend,
+ color=color,
+ linewidth=linewidth,
+ linestyle=linestyle)
if text is not None:
# Y position will be updated in updateMarkerText call
textArtist = self.ax.text(x, 1., " " + text,
@@ -557,7 +560,11 @@ class BackendMatplotlib(BackendBase.BackendBase):
verticalalignment='top')
elif y is not None:
- line = self.ax.axhline(y, label=legend, color=color)
+ line = self.ax.axhline(y,
+ label=legend,
+ color=color,
+ linewidth=linewidth,
+ linestyle=linestyle)
if text is not None:
# X position will be updated in updateMarkerText call
@@ -1117,7 +1124,6 @@ class BackendMatplotlibQt(FigureCanvasQTAgg, BackendMatplotlib):
# cursor
_QT_CURSORS = {
- None: qt.Qt.ArrowCursor,
BackendBase.CURSOR_DEFAULT: qt.Qt.ArrowCursor,
BackendBase.CURSOR_POINTING: qt.Qt.PointingHandCursor,
BackendBase.CURSOR_SIZE_HOR: qt.Qt.SizeHorCursor,
@@ -1126,6 +1132,8 @@ class BackendMatplotlibQt(FigureCanvasQTAgg, BackendMatplotlib):
}
def setGraphCursorShape(self, cursor):
- cursor = self._QT_CURSORS[cursor]
-
- FigureCanvasQTAgg.setCursor(self, qt.QCursor(cursor))
+ if cursor is None:
+ FigureCanvasQTAgg.unsetCursor(self)
+ else:
+ cursor = self._QT_CURSORS[cursor]
+ FigureCanvasQTAgg.setCursor(self, qt.QCursor(cursor))
diff --git a/silx/gui/plot/backends/BackendOpenGL.py b/silx/gui/plot/backends/BackendOpenGL.py
index 0001bb9..9e2cb73 100644
--- a/silx/gui/plot/backends/BackendOpenGL.py
+++ b/silx/gui/plot/backends/BackendOpenGL.py
@@ -28,7 +28,7 @@ from __future__ import division
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "01/08/2018"
from collections import OrderedDict, namedtuple
from ctypes import c_void_p
@@ -1161,11 +1161,15 @@ class BackendOpenGL(BackendBase.BackendBase, glu.OpenGLWidget):
def addMarker(self, x, y, legend, text, color,
selectable, draggable,
- symbol, constraint):
+ symbol, linestyle, linewidth, constraint):
if symbol is None:
symbol = '+'
+ if linestyle != '-' or linewidth != 1:
+ _logger.warning(
+ 'OpenGL backend does not support marker line style and width.')
+
behaviors = set()
if selectable:
behaviors.add('selectable')
@@ -1223,7 +1227,6 @@ class BackendOpenGL(BackendBase.BackendBase, glu.OpenGLWidget):
# Interaction methods
_QT_CURSORS = {
- None: qt.Qt.ArrowCursor,
BackendBase.CURSOR_DEFAULT: qt.Qt.ArrowCursor,
BackendBase.CURSOR_POINTING: qt.Qt.PointingHandCursor,
BackendBase.CURSOR_SIZE_HOR: qt.Qt.SizeHorCursor,
@@ -1232,9 +1235,11 @@ class BackendOpenGL(BackendBase.BackendBase, glu.OpenGLWidget):
}
def setGraphCursorShape(self, cursor):
- cursor = self._QT_CURSORS[cursor]
-
- super(BackendOpenGL, self).setCursor(qt.QCursor(cursor))
+ if cursor is None:
+ super(BackendOpenGL, self).unsetCursor()
+ else:
+ cursor = self._QT_CURSORS[cursor]
+ super(BackendOpenGL, self).setCursor(qt.QCursor(cursor))
def setGraphCursor(self, flag, color, linewidth, linestyle):
if linestyle is not '-':
diff --git a/silx/gui/plot/backends/glutils/GLText.py b/silx/gui/plot/backends/glutils/GLText.py
index 1540e26..3d262bc 100644
--- a/silx/gui/plot/backends/glutils/GLText.py
+++ b/silx/gui/plot/backends/glutils/GLText.py
@@ -32,6 +32,7 @@ __license__ = "MIT"
__date__ = "03/04/2017"
+from collections import OrderedDict
import numpy
from ...._glutils import font, gl, getGLContext, Program, Texture
@@ -41,6 +42,45 @@ from .GLSupport import mat4Translate
# TODO: Font should be configurable by the main program: using mpl.rcParams?
+class _Cache(object):
+ """LRU (Least Recent Used) cache.
+
+ :param int maxsize: Maximum number of (key, value) pairs in the cache
+ :param callable callback:
+ Called when a (key, value) pair is removed from the cache.
+ It must take 2 arguments: key and value.
+ """
+
+ def __init__(self, maxsize=128, callback=None):
+ self._maxsize = int(maxsize)
+ self._callback = callback
+ self._cache = OrderedDict()
+
+ def __contains__(self, item):
+ return item in self._cache
+
+ def __getitem__(self, key):
+ if key in self._cache:
+ # Remove/add key from ordered dict to store last access info
+ value = self._cache.pop(key)
+ self._cache[key] = value
+ return value
+ else:
+ raise KeyError
+
+ def __setitem__(self, key, value):
+ """Add a key, value pair to the cache.
+
+ :param key: The key to set
+ :param value: The corresponding value
+ """
+ if key not in self._cache and len(self._cache) >= self._maxsize:
+ removedKey, removedValue = self._cache.popitem(last=False)
+ if self._callback is not None:
+ self._callback(removedKey, removedValue)
+ self._cache[key] = value
+
+
# Text2D ######################################################################
LEFT, CENTER, RIGHT = 'left', 'center', 'right'
@@ -87,11 +127,11 @@ class Text2D(object):
_SHADERS['fragment'],
attrib0='position')
- _textures = {}
+ # Discard texture objects when removed from the cache
+ _textures = _Cache(callback=lambda key, value: value[0].discard())
"""Cache already created textures"""
- # TODO limit cache size and discard least recent used
- _sizes = {}
+ _sizes = _Cache()
"""Cache already computed sizes"""
def __init__(self, text, x=0, y=0,
diff --git a/silx/gui/plot/items/core.py b/silx/gui/plot/items/core.py
index 4ed0914..e000751 100644
--- a/silx/gui/plot/items/core.py
+++ b/silx/gui/plot/items/core.py
@@ -98,7 +98,10 @@ class ItemChangedType(enum.Enum):
"""Item's highlight state changed flag."""
HIGHLIGHTED_COLOR = 'highlightedColorChanged'
- """Item's highlighted color changed flag."""
+ """Deprecated, use HIGHLIGHTED_STYLE instead."""
+
+ HIGHLIGHTED_STYLE = 'highlightedStyleChanged'
+ """Item's highlighted style changed flag."""
SCALE = 'scaleChanged'
"""Item's scale changed flag."""
@@ -548,12 +551,26 @@ class LineMixIn(ItemMixInBase):
_DEFAULT_LINESTYLE = '-'
"""Default line style"""
+ _SUPPORTED_LINESTYLE = '', ' ', '-', '--', '-.', ':', None
+ """Supported line styles"""
+
def __init__(self):
self._linewidth = self._DEFAULT_LINEWIDTH
self._linestyle = self._DEFAULT_LINESTYLE
+ @classmethod
+ def getSupportedLineStyles(cls):
+ """Returns list of supported line styles.
+
+ :rtype: List[str,None]
+ """
+ return cls._SUPPORTED_LINESTYLE
+
def getLineWidth(self):
- """Return the curve line width in pixels (int)"""
+ """Return the curve line width in pixels
+
+ :rtype: float
+ """
return self._linewidth
def setLineWidth(self, width):
@@ -591,7 +608,7 @@ class LineMixIn(ItemMixInBase):
:param str style: Line style
"""
style = str(style)
- assert style in ('', ' ', '-', '--', '-.', ':', None)
+ assert style in self.getSupportedLineStyles()
if style is None:
style = self._DEFAULT_LINESTYLE
if style != self._linestyle:
diff --git a/silx/gui/plot/items/curve.py b/silx/gui/plot/items/curve.py
index 50ad86d..80d9dea 100644
--- a/silx/gui/plot/items/curve.py
+++ b/silx/gui/plot/items/curve.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,14 +33,123 @@ __date__ = "24/04/2018"
import logging
import numpy
+from silx.third_party import six
+from ....utils.deprecation import deprecated
from ... import colors
from .core import (Points, LabelsMixIn, ColorMixIn, YAxisMixIn,
- FillMixIn, LineMixIn, ItemChangedType)
+ FillMixIn, LineMixIn, SymbolMixIn, ItemChangedType)
_logger = logging.getLogger(__name__)
+class CurveStyle(object):
+ """Object storing the style of a curve.
+
+ Set a value to None to use the default
+
+ :param color: Color
+ :param Union[str,None] linestyle: Style of the line
+ :param Union[float,None] linewidth: Width of the line
+ :param Union[str,None] symbol: Symbol for markers
+ :param Union[float,None] symbolsize: Size of the markers
+ """
+
+ def __init__(self, color=None, linestyle=None, linewidth=None,
+ symbol=None, symbolsize=None):
+ if color is None:
+ self._color = None
+ else:
+ if isinstance(color, six.string_types):
+ color = colors.rgba(color)
+ else: # array-like expected
+ color = numpy.array(color, copy=False)
+ if color.ndim == 1: # Array is 1D, this is a single color
+ color = colors.rgba(color)
+ self._color = color
+
+ if linestyle is not None:
+ assert linestyle in LineMixIn.getSupportedLineStyles()
+ self._linestyle = linestyle
+
+ self._linewidth = None if linewidth is None else float(linewidth)
+
+ if symbol is not None:
+ assert symbol in SymbolMixIn.getSupportedSymbols()
+ self._symbol = symbol
+
+ self._symbolsize = None if symbolsize is None else float(symbolsize)
+
+ def getColor(self, copy=True):
+ """Returns the color or None if not set.
+
+ :param bool copy: True to get a copy (default),
+ False to get internal representation (do not modify!)
+
+ :rtype: Union[List[float],None]
+ """
+ if isinstance(self._color, numpy.ndarray):
+ return numpy.array(self._color, copy=copy)
+ else:
+ return self._color
+
+ def getLineStyle(self):
+ """Return the type of the line or None if not set.
+
+ Type of line::
+
+ - ' ' no line
+ - '-' solid line
+ - '--' dashed line
+ - '-.' dash-dot line
+ - ':' dotted line
+
+ :rtype: Union[str,None]
+ """
+ return self._linestyle
+
+ def getLineWidth(self):
+ """Return the curve line width in pixels or None if not set.
+
+ :rtype: Union[float,None]
+ """
+ return self._linewidth
+
+ def getSymbol(self):
+ """Return the point marker type.
+
+ Marker type::
+
+ - 'o' circle
+ - '.' point
+ - ',' pixel
+ - '+' cross
+ - 'x' x-cross
+ - 'd' diamond
+ - 's' square
+
+ :rtype: Union[str,None]
+ """
+ return self._symbol
+
+ def getSymbolSize(self):
+ """Return the point marker size in points.
+
+ :rtype: Union[float,None]
+ """
+ return self._symbolsize
+
+ def __eq__(self, other):
+ if isinstance(other, CurveStyle):
+ return (numpy.array_equal(self.getColor(), other.getColor()) and
+ self.getLineStyle() == other.getLineStyle() and
+ self.getLineWidth() == other.getLineWidth() and
+ self.getSymbol() == other.getSymbol() and
+ self.getSymbolSize() == other.getSymbolSize())
+ else:
+ return False
+
+
class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
"""Description of a curve"""
@@ -56,8 +165,8 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
_DEFAULT_LINESTYLE = '-'
"""Default line style of the curve"""
- _DEFAULT_HIGHLIGHT_COLOR = (0, 0, 0, 255)
- """Default highlight color of the item"""
+ _DEFAULT_HIGHLIGHT_STYLE = CurveStyle(color='black')
+ """Default highlight style of the item"""
def __init__(self):
Points.__init__(self)
@@ -67,9 +176,18 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
LabelsMixIn.__init__(self)
LineMixIn.__init__(self)
- self._highlightColor = self._DEFAULT_HIGHLIGHT_COLOR
+ self._highlightStyle = self._DEFAULT_HIGHLIGHT_STYLE
self._highlighted = False
+ self.sigItemChanged.connect(self.__itemChanged)
+
+ def __itemChanged(self, event):
+ if event == ItemChangedType.YAXIS:
+ # TODO hackish data range implementation
+ plot = self.getPlot()
+ if plot is not None:
+ plot._invalidateDataRange()
+
def _addBackendRenderer(self, backend):
"""Update backend renderer"""
# Filter-out values <= 0
@@ -79,11 +197,13 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
if len(xFiltered) == 0 or not numpy.any(numpy.isfinite(xFiltered)):
return None # No data to display, do not add renderer to backend
+ style = self.getCurrentStyle()
+
return backend.addCurve(xFiltered, yFiltered, self.getLegend(),
- color=self.getCurrentColor(),
- symbol=self.getSymbol(),
- linestyle=self.getLineStyle(),
- linewidth=self.getLineWidth(),
+ color=style.getColor(),
+ symbol=style.getSymbol(),
+ linestyle=style.getLineStyle(),
+ linewidth=style.getLineWidth(),
yaxis=self.getYAxis(),
xerror=xerror,
yerror=yerror,
@@ -91,7 +211,7 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
selectable=self.isSelectable(),
fill=self.isFill(),
alpha=self.getAlpha(),
- symbolsize=self.getSymbolSize())
+ symbolsize=style.getSymbolSize())
def __getitem__(self, item):
"""Compatibility with PyMca and silx <= 0.4.0"""
@@ -158,13 +278,39 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
# TODO inefficient: better to use backend's setCurveColor
self._updated(ItemChangedType.HIGHLIGHTED)
+ def getHighlightedStyle(self):
+ """Returns the highlighted style in use
+
+ :rtype: CurveStyle
+ """
+ return self._highlightStyle
+
+ def setHighlightedStyle(self, style):
+ """Set the style to use for highlighting
+
+ :param CurveStyle style: New style to use
+ """
+ previous = self.getHighlightedStyle()
+ if style != previous:
+ assert isinstance(style, CurveStyle)
+ self._highlightStyle = style
+ self._updated(ItemChangedType.HIGHLIGHTED_STYLE)
+
+ # Backward compatibility event
+ if previous.getColor() != style.getColor():
+ self._updated(ItemChangedType.HIGHLIGHTED_COLOR)
+
+ @deprecated(replacement='Curve.getHighlightedStyle().getColor()',
+ since_version='0.9.0')
def getHighlightedColor(self):
"""Returns the RGBA highlight color of the item
- :rtype: 4-tuple of int in [0, 255]
+ :rtype: 4-tuple of float in [0, 1]
"""
- return self._highlightColor
+ return self.getHighlightedStyle().getColor()
+ @deprecated(replacement='Curve.setHighlightedStyle()',
+ since_version='0.9.0')
def setHighlightedColor(self, color):
"""Set the color to use when highlighted
@@ -172,20 +318,45 @@ class Curve(Points, ColorMixIn, YAxisMixIn, FillMixIn, LabelsMixIn, LineMixIn):
:type color: str ("#RRGGBB") or (npoints, 4) unsigned byte array or
one of the predefined color names defined in colors.py
"""
- color = colors.rgba(color)
- if color != self._highlightColor:
- self._highlightColor = color
- self._updated(ItemChangedType.HIGHLIGHTED_COLOR)
+ self.setHighlightedStyle(CurveStyle(color))
+
+ def getCurrentStyle(self):
+ """Returns the current curve style.
+
+ Curve style depends on curve highlighting
+
+ :rtype: CurveStyle
+ """
+ if self.isHighlighted():
+ style = self.getHighlightedStyle()
+ color = style.getColor()
+ linestyle = style.getLineStyle()
+ linewidth = style.getLineWidth()
+ symbol = style.getSymbol()
+ symbolsize = style.getSymbolSize()
+
+ return CurveStyle(
+ color=self.getColor() if color is None else color,
+ linestyle=self.getLineStyle() if linestyle is None else linestyle,
+ linewidth=self.getLineWidth() if linewidth is None else linewidth,
+ symbol=self.getSymbol() if symbol is None else symbol,
+ symbolsize=self.getSymbolSize() if symbolsize is None else symbolsize)
+ else:
+ return CurveStyle(color=self.getColor(),
+ linestyle=self.getLineStyle(),
+ linewidth=self.getLineWidth(),
+ symbol=self.getSymbol(),
+ symbolsize=self.getSymbolSize())
+
+ @deprecated(replacement='Curve.getCurrentStyle()',
+ since_version='0.9.0')
def getCurrentColor(self):
"""Returns the current color of the curve.
This color is either the color of the curve or the highlighted color,
depending on the highlight state.
- :rtype: 4-tuple of int in [0, 255]
+ :rtype: 4-tuple of float in [0, 1]
"""
- if self.isHighlighted():
- return self.getHighlightedColor()
- else:
- return self.getColor()
+ return self.getCurrentStyle().getColor()
diff --git a/silx/gui/plot/items/histogram.py b/silx/gui/plot/items/histogram.py
index 3545345..389e8a6 100644
--- a/silx/gui/plot/items/histogram.py
+++ b/silx/gui/plot/items/histogram.py
@@ -27,7 +27,7 @@
__authors__ = ["H. Payno", "T. Vincent"]
__license__ = "MIT"
-__date__ = "27/06/2017"
+__date__ = "28/08/2018"
import logging
@@ -290,6 +290,11 @@ class Histogram(Item, AlphaMixIn, ColorMixIn, FillMixIn,
self._edges = edges
self._alignement = align
+ if self.isVisible():
+ plot = self.getPlot()
+ if plot is not None:
+ plot._invalidateDataRange()
+
self._updated(ItemChangedType.DATA)
def getAlignment(self):
diff --git a/silx/gui/plot/items/marker.py b/silx/gui/plot/items/marker.py
index 8f79033..09767a5 100644
--- a/silx/gui/plot/items/marker.py
+++ b/silx/gui/plot/items/marker.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -32,7 +32,7 @@ __date__ = "06/03/2017"
import logging
-from .core import (Item, DraggableMixIn, ColorMixIn, SymbolMixIn,
+from .core import (Item, DraggableMixIn, ColorMixIn, LineMixIn, SymbolMixIn,
ItemChangedType)
@@ -55,11 +55,9 @@ class _BaseMarker(Item, DraggableMixIn, ColorMixIn):
self._y = None
self._constraint = self._defaultConstraint
- def _addBackendRenderer(self, backend):
- """Update backend renderer"""
- # TODO not very nice way to do it, but simple
- symbol = self.getSymbol() if isinstance(self, Marker) else None
-
+ def _addRendererCall(self, backend,
+ symbol=None, linestyle='-', linewidth=1):
+ """Perform the update of the backend renderer"""
return backend.addMarker(
x=self.getXPosition(),
y=self.getYPosition(),
@@ -69,8 +67,14 @@ class _BaseMarker(Item, DraggableMixIn, ColorMixIn):
selectable=self.isSelectable(),
draggable=self.isDraggable(),
symbol=symbol,
+ linestyle=linestyle,
+ linewidth=linewidth,
constraint=self.getConstraint())
+ def _addBackendRenderer(self, backend):
+ """Update backend renderer"""
+ raise NotImplementedError()
+
def isOverlay(self):
"""Return true if marker is drawn as an overlay.
@@ -175,6 +179,9 @@ class Marker(_BaseMarker, SymbolMixIn):
self._x = 0.
self._y = 0.
+ def _addBackendRenderer(self, backend):
+ return self._addRendererCall(backend, symbol=self.getSymbol())
+
def _setConstraint(self, constraint):
"""Set the constraint function of the marker drag.
@@ -197,11 +204,24 @@ class Marker(_BaseMarker, SymbolMixIn):
return x, self.getYPosition()
-class XMarker(_BaseMarker):
- """Description of a marker"""
+class _LineMarker(_BaseMarker, LineMixIn):
+ """Base class for line markers"""
def __init__(self):
_BaseMarker.__init__(self)
+ LineMixIn.__init__(self)
+
+ def _addBackendRenderer(self, backend):
+ return self._addRendererCall(backend,
+ linestyle=self.getLineStyle(),
+ linewidth=self.getLineWidth())
+
+
+class XMarker(_LineMarker):
+ """Description of a marker"""
+
+ def __init__(self):
+ _LineMarker.__init__(self)
self._x = 0.
def setPosition(self, x, y):
@@ -219,11 +239,11 @@ class XMarker(_BaseMarker):
self._updated(ItemChangedType.POSITION)
-class YMarker(_BaseMarker):
+class YMarker(_LineMarker):
"""Description of a marker"""
def __init__(self):
- _BaseMarker.__init__(self)
+ _LineMarker.__init__(self)
self._y = 0.
def setPosition(self, x, y):
diff --git a/silx/gui/plot/items/scatter.py b/silx/gui/plot/items/scatter.py
index 72b8496..acc74b4 100644
--- a/silx/gui/plot/items/scatter.py
+++ b/silx/gui/plot/items/scatter.py
@@ -53,7 +53,8 @@ class Scatter(Points, ColormapMixIn):
Points.__init__(self)
ColormapMixIn.__init__(self)
self._value = ()
-
+ self.__alpha = None
+
def _addBackendRenderer(self, backend):
"""Update backend renderer"""
# Filter-out values <= 0
@@ -66,6 +67,9 @@ class Scatter(Points, ColormapMixIn):
cmap = self.getColormap()
rgbacolors = cmap.applyToData(self._value)
+ if self.__alpha is not None:
+ rgbacolors[:, -1] = (rgbacolors[:, -1] * self.__alpha).astype(numpy.uint8)
+
return backend.addCurve(xFiltered, yFiltered, self.getLegend(),
color=rgbacolors,
symbol=self.getSymbol(),
@@ -112,6 +116,15 @@ class Scatter(Points, ColormapMixIn):
"""
return numpy.array(self._value, copy=copy)
+ def getAlphaData(self, copy=True):
+ """Returns the alpha (transparency) assigned to the scatter data points.
+
+ :param copy: True (Default) to get a copy,
+ False to use internal representation (do not modify!)
+ :rtype: numpy.ndarray
+ """
+ return numpy.array(self.__alpha, copy=copy)
+
def getData(self, copy=True, displayed=False):
"""Returns the x, y coordinates and the value of the data points
@@ -137,7 +150,7 @@ class Scatter(Points, ColormapMixIn):
self.getYErrorData(copy))
# reimplemented from Points to handle `value`
- def setData(self, x, y, value, xerror=None, yerror=None, copy=True):
+ def setData(self, x, y, value, xerror=None, yerror=None, alpha=None, copy=True):
"""Set the data of the scatter.
:param numpy.ndarray x: The data corresponding to the x coordinates.
@@ -152,6 +165,8 @@ class Scatter(Points, ColormapMixIn):
row 1 for negative errors.
:param yerror: Values with the uncertainties on the y values
:type yerror: A float, or a numpy.ndarray of float32. See xerror.
+ :param alpha: Values with the transparency (between 0 and 1)
+ :type alpha: A float, or a numpy.ndarray of float32
:param bool copy: True make a copy of the data (default),
False to use provided arrays.
"""
@@ -161,6 +176,17 @@ class Scatter(Points, ColormapMixIn):
self._value = value
+ if alpha is not None:
+ # Make sure alpha is an array of float in [0, 1]
+ alpha = numpy.array(alpha, copy=copy)
+ assert alpha.ndim == 1
+ assert len(x) == len(alpha)
+ if alpha.dtype.kind != 'f':
+ alpha = alpha.astype(numpy.float32)
+ if numpy.any(numpy.logical_or(alpha < 0., alpha > 1.)):
+ alpha = numpy.clip(alpha, 0., 1.)
+ self.__alpha = alpha
+
# set x, y, xerror, yerror
# call self._updated + plot._invalidateDataRange()
diff --git a/silx/gui/plot/matplotlib/ModestImage.py b/silx/gui/plot/matplotlib/ModestImage.py
deleted file mode 100644
index e4a72d5..0000000
--- a/silx/gui/plot/matplotlib/ModestImage.py
+++ /dev/null
@@ -1,174 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2004-2017 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ############################################################################*/
-"""Matplotlib computationally modest image class."""
-
-__authors__ = ["V.A. Sole", "T. Vincent"]
-__license__ = "MIT"
-__date__ = "03/05/2017"
-
-
-import numpy
-
-from matplotlib import cbook
-from matplotlib.image import AxesImage
-
-
-class ModestImage(AxesImage):
- """Computationally modest image class.
-
-Customization of https://github.com/ChrisBeaumont/ModestImage to allow
-extent support.
-
-ModestImage is an extension of the Matplotlib AxesImage class
-better suited for the interactive display of larger images. Before
-drawing, ModestImage resamples the data array based on the screen
-resolution and view window. This has very little affect on the
-appearance of the image, but can substantially cut down on
-computation since calculations of unresolved or clipped pixels
-are skipped.
-
-The interface of ModestImage is the same as AxesImage. However, it
-does not currently support setting the 'extent' property. There
-may also be weird coordinate warping operations for images that
-I'm not aware of. Don't expect those to work either.
-"""
- def __init__(self, *args, **kwargs):
- self._full_res = None
- self._sx, self._sy = None, None
- self._bounds = (None, None, None, None)
- self._origExtent = None
- super(ModestImage, self).__init__(*args, **kwargs)
- if 'extent' in kwargs and kwargs['extent'] is not None:
- self.set_extent(kwargs['extent'])
-
- def set_extent(self, extent):
- super(ModestImage, self).set_extent(extent)
- if self._origExtent is None:
- self._origExtent = self.get_extent()
-
- def get_image_extent(self):
- """Returns the extent of the whole image.
-
- get_extent returns the extent of the drawn area and not of the full
- image.
-
- :return: Bounds of the image (x0, x1, y0, y1).
- :rtype: Tuple of 4 floats.
- """
- if self._origExtent is not None:
- return self._origExtent
- else:
- return self.get_extent()
-
- def set_data(self, A):
- """
- Set the image array
-
- ACCEPTS: numpy/PIL Image A
- """
-
- self._full_res = A
- self._A = A
-
- if (self._A.dtype != numpy.uint8 and
- not numpy.can_cast(self._A.dtype, numpy.float)):
- raise TypeError("Image data can not convert to float")
-
- if (self._A.ndim not in (2, 3) or
- (self._A.ndim == 3 and self._A.shape[-1] not in (3, 4))):
- raise TypeError("Invalid dimensions for image data")
-
- self._imcache = None
- self._rgbacache = None
- self._oldxslice = None
- self._oldyslice = None
- self._sx, self._sy = None, None
-
- def get_array(self):
- """Override to return the full-resolution array"""
- return self._full_res
-
- def _scale_to_res(self):
- """ Change self._A and _extent to render an image whose
-resolution is matched to the eventual rendering."""
- # extent has to be set BEFORE set_data
- if self._origExtent is None:
- if self.origin == "upper":
- self._origExtent = (0, self._full_res.shape[1],
- self._full_res.shape[0], 0)
- else:
- self._origExtent = (0, self._full_res.shape[1],
- 0, self._full_res.shape[0])
-
- if self.origin == "upper":
- origXMin, origXMax, origYMax, origYMin = self._origExtent[0:4]
- else:
- origXMin, origXMax, origYMin, origYMax = self._origExtent[0:4]
- ax = self.axes
- ext = ax.transAxes.transform([1, 1]) - ax.transAxes.transform([0, 0])
- xlim, ylim = ax.get_xlim(), ax.get_ylim()
- xlim = max(xlim[0], origXMin), min(xlim[1], origXMax)
- if ylim[0] > ylim[1]:
- ylim = max(ylim[1], origYMin), min(ylim[0], origYMax)
- else:
- ylim = max(ylim[0], origYMin), min(ylim[1], origYMax)
- # print("THOSE LIMITS ARE TO BE COMPARED WITH THE EXTENT")
- # print("IN ORDER TO KNOW WHAT IT IS LIMITING THE DISPLAY")
- # print("IF THE AXES OR THE EXTENT")
- dx, dy = xlim[1] - xlim[0], ylim[1] - ylim[0]
-
- y0 = max(0, ylim[0] - 5)
- y1 = min(self._full_res.shape[0], ylim[1] + 5)
- x0 = max(0, xlim[0] - 5)
- x1 = min(self._full_res.shape[1], xlim[1] + 5)
- y0, y1, x0, x1 = [int(a) for a in [y0, y1, x0, x1]]
-
- sy = int(max(1, min((y1 - y0) / 5., numpy.ceil(dy / ext[1]))))
- sx = int(max(1, min((x1 - x0) / 5., numpy.ceil(dx / ext[0]))))
-
- # have we already calculated what we need?
- if (self._sx is not None) and (self._sy is not None):
- if (sx >= self._sx and sy >= self._sy and
- x0 >= self._bounds[0] and x1 <= self._bounds[1] and
- y0 >= self._bounds[2] and y1 <= self._bounds[3]):
- return
-
- self._A = self._full_res[y0:y1:sy, x0:x1:sx]
- self._A = cbook.safe_masked_invalid(self._A)
- x1 = x0 + self._A.shape[1] * sx
- y1 = y0 + self._A.shape[0] * sy
-
- if self.origin == "upper":
- self.set_extent([x0, x1, y1, y0])
- else:
- self.set_extent([x0, x1, y0, y1])
- self._sx = sx
- self._sy = sy
- self._bounds = (x0, x1, y0, y1)
- self.changed()
-
- def draw(self, renderer, *args, **kwargs):
- self._scale_to_res()
- super(ModestImage, self).draw(renderer, *args, **kwargs)
diff --git a/silx/gui/plot/test/__init__.py b/silx/gui/plot/test/__init__.py
index 1428bad..89c10c6 100644
--- a/silx/gui/plot/test/__init__.py
+++ b/silx/gui/plot/test/__init__.py
@@ -24,7 +24,7 @@
# ###########################################################################*/
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "23/07/2018"
import unittest
@@ -52,6 +52,7 @@ from . import testImageView
from . import testSaveAction
from . import testScatterView
from . import testPixelIntensityHistoAction
+from . import testCompareImages
def suite():
@@ -83,6 +84,7 @@ def suite():
testImageView.suite(),
testSaveAction.suite(),
testScatterView.suite(),
- testPixelIntensityHistoAction.suite()
+ testPixelIntensityHistoAction.suite(),
+ testCompareImages.suite()
])
return test_suite
diff --git a/silx/gui/plot/test/testAlphaSlider.py b/silx/gui/plot/test/testAlphaSlider.py
index 304a562..63de441 100644
--- a/silx/gui/plot/test/testAlphaSlider.py
+++ b/silx/gui/plot/test/testAlphaSlider.py
@@ -33,7 +33,7 @@ import numpy
import unittest
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import PlotWidget
from silx.gui.plot import AlphaSlider
diff --git a/silx/gui/plot/test/testColorBar.py b/silx/gui/plot/test/testColorBar.py
index 0d1c952..9a02e04 100644
--- a/silx/gui/plot/test/testColorBar.py
+++ b/silx/gui/plot/test/testColorBar.py
@@ -29,7 +29,7 @@ __license__ = "MIT"
__date__ = "24/04/2018"
import unittest
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot.ColorBar import _ColorScale
from silx.gui.plot.ColorBar import ColorBarWidget
from silx.gui.colors import Colormap
diff --git a/silx/gui/plot/test/testCompareImages.py b/silx/gui/plot/test/testCompareImages.py
new file mode 100644
index 0000000..ed6942a
--- /dev/null
+++ b/silx/gui/plot/test/testCompareImages.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""Tests for CompareImages widget"""
+
+__authors__ = ["H. Payno"]
+__license__ = "MIT"
+__date__ = "23/07/2018"
+
+import unittest
+import numpy
+import weakref
+
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui.plot.CompareImages import CompareImages
+
+
+class TestCompareImages(TestCaseQt):
+ """Test that CompareImages widget is working in some cases"""
+
+ def setUp(self):
+ super(TestCompareImages, self).setUp()
+ self.widget = CompareImages()
+
+ def tearDown(self):
+ ref = weakref.ref(self.widget)
+ self.widget = None
+ self.qWaitForDestroy(ref)
+ super(TestCompareImages, self).tearDown()
+
+ def testIntensityImage(self):
+ image1 = numpy.random.rand(10, 10)
+ image2 = numpy.random.rand(10, 10)
+ self.widget.setData(image1, image2)
+
+ def testRgbImage(self):
+ image1 = numpy.random.randint(0, 255, size=(10, 10, 3))
+ image2 = numpy.random.randint(0, 255, size=(10, 10, 3))
+ self.widget.setData(image1, image2)
+
+ def testRgbaImage(self):
+ image1 = numpy.random.randint(0, 255, size=(10, 10, 4))
+ image2 = numpy.random.randint(0, 255, size=(10, 10, 4))
+ self.widget.setData(image1, image2)
+
+ def testVizualisations(self):
+ image1 = numpy.random.rand(10, 10)
+ image2 = numpy.random.rand(10, 10)
+ self.widget.setData(image1, image2)
+ for mode in CompareImages.VisualizationMode:
+ self.widget.setVisualizationMode(mode)
+
+ def testAlignemnt(self):
+ image1 = numpy.random.rand(10, 10)
+ image2 = numpy.random.rand(5, 5)
+ self.widget.setData(image1, image2)
+ for mode in CompareImages.AlignmentMode:
+ self.widget.setAlignmentMode(mode)
+
+ def testGetPixel(self):
+ image1 = numpy.random.rand(11, 11)
+ image2 = numpy.random.rand(5, 5)
+ image1[5, 5] = 111.111
+ image2[2, 2] = 222.222
+ self.widget.setData(image1, image2)
+ expectedValue = {}
+ expectedValue[CompareImages.AlignmentMode.CENTER] = 222.222
+ expectedValue[CompareImages.AlignmentMode.STRETCH] = 222.222
+ expectedValue[CompareImages.AlignmentMode.ORIGIN] = None
+ for mode in expectedValue.keys():
+ self.widget.setAlignmentMode(mode)
+ data = self.widget.getRawPixelData(11 / 2.0, 11 / 2.0)
+ data1, data2 = data
+ self.assertEqual(data1, 111.111)
+ self.assertEqual(data2, expectedValue[mode])
+
+ def testImageEmpty(self):
+ self.widget.setData(image1=None, image2=None)
+ self.assertTrue(self.widget.getRawPixelData(11 / 2.0, 11 / 2.0) == (None, None))
+
+ def testSetImageSeparately(self):
+ self.widget.setImage1(numpy.random.rand(10, 10))
+ self.widget.setImage2(numpy.random.rand(10, 10))
+ for mode in CompareImages.VisualizationMode:
+ self.widget.setVisualizationMode(mode)
+
+
+def suite():
+ test_suite = unittest.TestSuite()
+ loadTests = unittest.defaultTestLoader.loadTestsFromTestCase
+ test_suite.addTest(loadTests(TestCompareImages))
+ return test_suite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/plot/test/testCurvesROIWidget.py b/silx/gui/plot/test/testCurvesROIWidget.py
index 7a2e3d1..0704779 100644
--- a/silx/gui/plot/test/testCurvesROIWidget.py
+++ b/silx/gui/plot/test/testCurvesROIWidget.py
@@ -36,7 +36,7 @@ from collections import OrderedDict
import numpy
from silx.gui import qt
from silx.test.utils import temp_dir
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import PlotWindow, CurvesROIWidget
diff --git a/silx/gui/plot/test/testImageView.py b/silx/gui/plot/test/testImageView.py
index 5059a0b..3c8d84c 100644
--- a/silx/gui/plot/test/testImageView.py
+++ b/silx/gui/plot/test/testImageView.py
@@ -33,7 +33,7 @@ import unittest
import numpy
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import ImageView
from silx.gui.colors import Colormap
diff --git a/silx/gui/plot/test/testItem.py b/silx/gui/plot/test/testItem.py
index 1ba09c6..993cce7 100644
--- a/silx/gui/plot/test/testItem.py
+++ b/silx/gui/plot/test/testItem.py
@@ -33,7 +33,7 @@ import unittest
import numpy
-from silx.gui.test.utils import SignalListener
+from silx.gui.utils.testutils import SignalListener
from silx.gui.plot.items import ItemChangedType
from .utils import PlotWidgetTestCase
diff --git a/silx/gui/plot/test/testLegendSelector.py b/silx/gui/plot/test/testLegendSelector.py
index 9d4ada7..de5ffde 100644
--- a/silx/gui/plot/test/testLegendSelector.py
+++ b/silx/gui/plot/test/testLegendSelector.py
@@ -33,7 +33,7 @@ import logging
import unittest
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import LegendSelector
diff --git a/silx/gui/plot/test/testMaskToolsWidget.py b/silx/gui/plot/test/testMaskToolsWidget.py
index 40c1db3..6912ea3 100644
--- a/silx/gui/plot/test/testMaskToolsWidget.py
+++ b/silx/gui/plot/test/testMaskToolsWidget.py
@@ -38,7 +38,7 @@ import numpy
from silx.gui import qt
from silx.test.utils import temp_dir
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import getQToolButtonFromAction
+from silx.gui.utils.testutils import getQToolButtonFromAction
from silx.gui.plot import PlotWindow, MaskToolsWidget
from .utils import PlotWidgetTestCase
@@ -87,10 +87,10 @@ class TestMaskToolsWidget(PlotWidgetTestCase, ParametricTestCase):
self.mouseMove(plot, pos=(0, 0))
self.mouseMove(plot, pos=pos0)
- self.mousePress(plot, qt.Qt.LeftButton, pos=pos0)
+ self.mouseClick(plot, qt.Qt.LeftButton, pos=pos0)
self.mouseMove(plot, pos=(0, 0))
self.mouseMove(plot, pos=pos1)
- self.mouseRelease(plot, qt.Qt.LeftButton, pos=pos1)
+ self.mouseClick(plot, qt.Qt.LeftButton, pos=pos1)
def _drawPolygon(self):
"""Draw a star polygon in the plot"""
@@ -108,7 +108,9 @@ class TestMaskToolsWidget(PlotWidgetTestCase, ParametricTestCase):
self.mouseMove(plot, pos=(0, 0))
for pos in star:
self.mouseMove(plot, pos=pos)
+ self.qapp.processEvents()
self.mouseClick(plot, qt.Qt.LeftButton, pos=pos)
+ self.qapp.processEvents()
def _drawPencil(self):
"""Draw a star polygon in the plot"""
diff --git a/silx/gui/plot/test/testPixelIntensityHistoAction.py b/silx/gui/plot/test/testPixelIntensityHistoAction.py
index 987e5b2..20d1ea2 100644
--- a/silx/gui/plot/test/testPixelIntensityHistoAction.py
+++ b/silx/gui/plot/test/testPixelIntensityHistoAction.py
@@ -33,7 +33,7 @@ import numpy
import unittest
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import TestCaseQt, getQToolButtonFromAction
+from silx.gui.utils.testutils import TestCaseQt, getQToolButtonFromAction
from silx.gui import qt
from silx.gui.plot import Plot2D
diff --git a/silx/gui/plot/test/testPlotWidget.py b/silx/gui/plot/test/testPlotWidget.py
index dac6580..857b9bc 100644
--- a/silx/gui/plot/test/testPlotWidget.py
+++ b/silx/gui/plot/test/testPlotWidget.py
@@ -26,7 +26,7 @@
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "21/09/2018"
import unittest
@@ -34,8 +34,8 @@ import logging
import numpy
from silx.utils.testutils import ParametricTestCase, parameterize
-from silx.gui.test.utils import SignalListener
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import SignalListener
+from silx.gui.utils.testutils import TestCaseQt
from silx.utils import testutils
from silx.utils import deprecation
@@ -43,6 +43,7 @@ from silx.test.utils import test_options
from silx.gui import qt
from silx.gui.plot import PlotWidget
+from silx.gui.plot.items.curve import CurveStyle
from silx.gui.colors import Colormap
from .utils import PlotWidgetTestCase
@@ -118,6 +119,7 @@ class TestPlotWidget(PlotWidgetTestCase, ParametricTestCase):
"""Test resizing the widget and receiving limitsChanged events"""
self.plot.resize(200, 200)
self.qapp.processEvents()
+ self.qWait(100)
xlim = self.plot.getXAxis().getLimits()
ylim = self.plot.getYAxis().getLimits()
@@ -129,18 +131,58 @@ class TestPlotWidget(PlotWidgetTestCase, ParametricTestCase):
# Resize without aspect ratio
self.plot.resize(200, 300)
self.qapp.processEvents()
+ self.qWait(100)
self._checkLimits(expectedXLim=xlim, expectedYLim=ylim)
self.assertEqual(listener.callCount(), 0)
# Resize with aspect ratio
self.plot.setKeepDataAspectRatio(True)
self.qapp.processEvents()
+ self.qWait(1000)
listener.clear() # Clean-up received signal
self.plot.resize(200, 200)
self.qapp.processEvents()
+ self.qWait(100)
self.assertNotEqual(listener.callCount(), 0)
+ def testAddRemoveItemSignals(self):
+ """Test sigItemAdded and sigItemAboutToBeRemoved"""
+ listener = SignalListener()
+ self.plot.sigItemAdded.connect(listener.partial('add'))
+ self.plot.sigItemAboutToBeRemoved.connect(listener.partial('remove'))
+
+ self.plot.addCurve((1, 2, 3), (3, 2, 1), legend='curve')
+ self.assertEqual(listener.callCount(), 1)
+
+ curve = self.plot.getCurve('curve')
+ self.plot.remove('curve')
+ self.assertEqual(listener.callCount(), 2)
+ self.assertEqual(listener.arguments(callIndex=0), ('add', curve))
+ self.assertEqual(listener.arguments(callIndex=1), ('remove', curve))
+
+ def testGetItems(self):
+ """Test getItems method"""
+ curve_x = 1, 2
+ self.plot.addCurve(curve_x, (3, 4))
+ image = (0, 1), (2, 3)
+ self.plot.addImage(image)
+ scatter_x = 10, 11
+ self.plot.addScatter(scatter_x, (12, 13), (0, 1))
+ marker_pos = 5, 5
+ self.plot.addMarker(*marker_pos)
+ marker_x = 6
+ self.plot.addXMarker(marker_x)
+ self.plot.addItem((0, 5), (2, 10), shape='rectangle')
+
+ items = self.plot.getItems()
+ self.assertEqual(len(items), 6)
+ self.assertTrue(numpy.all(numpy.equal(items[0].getXData(), curve_x)))
+ self.assertTrue(numpy.all(numpy.equal(items[1].getData(), image)))
+ self.assertTrue(numpy.all(numpy.equal(items[2].getXData(), scatter_x)))
+ self.assertTrue(numpy.all(numpy.equal(items[3].getPosition(), marker_pos)))
+ self.assertTrue(numpy.all(numpy.equal(items[4].getPosition()[0], marker_x)))
+ self.assertEqual(items[5].getType(), 'rectangle')
class TestPlotImage(PlotWidgetTestCase, ParametricTestCase):
"""Basic tests for addImage"""
@@ -270,10 +312,10 @@ class TestPlotImage(PlotWidgetTestCase, ParametricTestCase):
self.plot.setKeepDataAspectRatio(True)
xmin, xmax = self.plot.getXAxis().getLimits()
ymin, ymax = self.plot.getYAxis().getLimits()
- self.assertTrue(xmin <= min(xbounds))
- self.assertTrue(xmax >= max(xbounds))
- self.assertTrue(ymin <= min(ybounds))
- self.assertTrue(ymax >= max(ybounds))
+ self.assertTrue(round(xmin, 7) <= min(xbounds))
+ self.assertTrue(round(xmax, 7) >= max(xbounds))
+ self.assertTrue(round(ymin, 7) <= min(ybounds))
+ self.assertTrue(round(ymax, 7) >= max(ybounds))
self.plot.setKeepDataAspectRatio(False) # Reset aspect ratio
self.plot.clear()
@@ -390,8 +432,7 @@ class TestPlotCurve(PlotWidgetTestCase):
self.plot.addCurve(self.xData, self.yData,
legend="curve 2",
replace=False, resetzoom=False,
- color=color, symbol='o')
-
+ color=color, symbol='o')
class TestPlotMarker(PlotWidgetTestCase):
"""Basic tests for add*Marker"""
@@ -562,7 +603,15 @@ class TestPlotItem(PlotWidgetTestCase):
class TestPlotActiveCurveImage(PlotWidgetTestCase):
- """Basic tests for active image handling"""
+ """Basic tests for active curve and image handling"""
+ xData = numpy.arange(1000)
+ yData = -500 + 100 * numpy.sin(xData)
+ xData2 = xData + 1000
+ yData2 = xData - 1000 + 200 * numpy.random.random(1000)
+
+ def tearDown(self):
+ self.plot.setActiveCurveHandling(False)
+ super(TestPlotActiveCurveImage, self).tearDown()
def testActiveCurveAndLabels(self):
# Active curve handling off, no label change
@@ -589,6 +638,7 @@ class TestPlotActiveCurveImage(PlotWidgetTestCase):
# labels changed as active curve
self.plot.addCurve((1, 2), (1, 2), legend='1',
xlabel='x1', ylabel='y1')
+ self.plot.setActiveCurve('1')
self.assertEqual(self.plot.getXAxis().getLabel(), 'x1')
self.assertEqual(self.plot.getYAxis().getLabel(), 'y1')
@@ -610,6 +660,110 @@ class TestPlotActiveCurveImage(PlotWidgetTestCase):
self.assertEqual(self.plot.getXAxis().getLabel(), 'XLabel')
self.assertEqual(self.plot.getYAxis().getLabel(), 'YLabel')
+ def testPlotActiveCurveSelectionMode(self):
+ self.plot.clear()
+ self.plot.setActiveCurveHandling(True)
+ legend = "curve 1"
+ self.plot.addCurve(self.xData, self.yData,
+ legend=legend,
+ color="green")
+
+ # active curve should be None
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), None)
+
+ # active curve should be None when None is set as active curve
+ self.plot.setActiveCurve(legend)
+ current = self.plot.getActiveCurve(just_legend=True)
+ self.assertEqual(current, legend)
+ self.plot.setActiveCurve(None)
+ current = self.plot.getActiveCurve(just_legend=True)
+ self.assertEqual(current, None)
+
+ # testing it automatically toggles if there is only one
+ self.plot.setActiveCurveSelectionMode("legacy")
+ current = self.plot.getActiveCurve(just_legend=True)
+ self.assertEqual(current, legend)
+
+ # active curve should not change when None set as active curve
+ self.assertEqual(self.plot.getActiveCurveSelectionMode(), "legacy")
+ self.plot.setActiveCurve(None)
+ current = self.plot.getActiveCurve(just_legend=True)
+ self.assertEqual(current, legend)
+
+ # situation where no curve is active
+ self.plot.clear()
+ self.plot.setActiveCurveHandling(True)
+ self.assertEqual(self.plot.getActiveCurveSelectionMode(), "atmostone")
+ self.plot.addCurve(self.xData, self.yData,
+ legend=legend,
+ color="green")
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), None)
+ self.plot.addCurve(self.xData2, self.yData2,
+ legend="curve 2",
+ color="red")
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), None)
+ self.plot.setActiveCurveSelectionMode("legacy")
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), None)
+
+ # the first curve added should be active
+ self.plot.clear()
+ self.plot.addCurve(self.xData, self.yData,
+ legend=legend,
+ color="green")
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), legend)
+ self.plot.addCurve(self.xData2, self.yData2,
+ legend="curve 2",
+ color="red")
+ self.assertEqual(self.plot.getActiveCurve(just_legend=True), legend)
+
+ def testActiveCurveStyle(self):
+ """Test change of active curve style"""
+ self.plot.setActiveCurveHandling(True)
+ self.plot.setActiveCurveStyle(color='black')
+ style = self.plot.getActiveCurveStyle()
+ self.assertEqual(style.getColor(), (0., 0., 0., 1.))
+ self.assertIsNone(style.getLineStyle())
+ self.assertIsNone(style.getLineWidth())
+ self.assertIsNone(style.getSymbol())
+ self.assertIsNone(style.getSymbolSize())
+
+ self.plot.addCurve(x=self.xData, y=self.yData, legend="curve1")
+ curve = self.plot.getCurve("curve1")
+ curve.setColor('blue')
+ curve.setLineStyle('-')
+ curve.setLineWidth(1)
+ curve.setSymbol('o')
+ curve.setSymbolSize(5)
+
+ # Check default current style
+ defaultStyle = curve.getCurrentStyle()
+ self.assertEqual(defaultStyle, CurveStyle(color='blue',
+ linestyle='-',
+ linewidth=1,
+ symbol='o',
+ symbolsize=5))
+
+ # Activate curve with highlight color=black
+ self.plot.setActiveCurve("curve1")
+ style = curve.getCurrentStyle()
+ self.assertEqual(style.getColor(), (0., 0., 0., 1.))
+ self.assertEqual(style.getLineStyle(), '-')
+ self.assertEqual(style.getLineWidth(), 1)
+ self.assertEqual(style.getSymbol(), 'o')
+ self.assertEqual(style.getSymbolSize(), 5)
+
+ # Change highlight to linewidth=2
+ self.plot.setActiveCurveStyle(linewidth=2)
+ style = curve.getCurrentStyle()
+ self.assertEqual(style.getColor(), (0., 0., 1., 1.))
+ self.assertEqual(style.getLineStyle(), '-')
+ self.assertEqual(style.getLineWidth(), 2)
+ self.assertEqual(style.getSymbol(), 'o')
+ self.assertEqual(style.getSymbolSize(), 5)
+
+ self.plot.setActiveCurve(None)
+ self.assertEqual(curve.getCurrentStyle(), defaultStyle)
+
def testActiveImageAndLabels(self):
# Active image handling always on, no API for toggling it
self.plot.getXAxis().setLabel('XLabel')
@@ -881,7 +1035,7 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
self.plot.getYAxis(axis="right").sigLimitsChanged.connect(listener.partial(axis="y2"))
self.plot.setLimits(0, 1, 0, 1, 0, 1)
# at least one event per axis
- self.assertEquals(len(set(listener.karguments(argumentName="axis"))), 3)
+ self.assertEqual(len(set(listener.karguments(argumentName="axis"))), 3)
def testLimitsChanged_resetZoom(self):
self.plot.addCurve(self.xData, self.yData,
@@ -894,7 +1048,7 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
self.plot.getYAxis(axis="right").sigLimitsChanged.connect(listener.partial(axis="y2"))
self.plot.resetZoom()
# at least one event per axis
- self.assertEquals(len(set(listener.karguments(argumentName="axis"))), 3)
+ self.assertEqual(len(set(listener.karguments(argumentName="axis"))), 3)
def testLimitsChanged_setXLimit(self):
self.plot.addCurve(self.xData, self.yData,
@@ -906,8 +1060,8 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
axis.sigLimitsChanged.connect(listener)
axis.setLimits(20, 30)
# at least one event per axis
- self.assertEquals(listener.arguments(callIndex=-1), (20.0, 30.0))
- self.assertEquals(axis.getLimits(), (20.0, 30.0))
+ self.assertEqual(listener.arguments(callIndex=-1), (20.0, 30.0))
+ self.assertEqual(axis.getLimits(), (20.0, 30.0))
def testLimitsChanged_setYLimit(self):
self.plot.addCurve(self.xData, self.yData,
@@ -919,8 +1073,8 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
axis.sigLimitsChanged.connect(listener)
axis.setLimits(20, 30)
# at least one event per axis
- self.assertEquals(listener.arguments(callIndex=-1), (20.0, 30.0))
- self.assertEquals(axis.getLimits(), (20.0, 30.0))
+ self.assertEqual(listener.arguments(callIndex=-1), (20.0, 30.0))
+ self.assertEqual(axis.getLimits(), (20.0, 30.0))
def testLimitsChanged_setYRightLimit(self):
self.plot.addCurve(self.xData, self.yData,
@@ -932,8 +1086,8 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
axis.sigLimitsChanged.connect(listener)
axis.setLimits(20, 30)
# at least one event per axis
- self.assertEquals(listener.arguments(callIndex=-1), (20.0, 30.0))
- self.assertEquals(axis.getLimits(), (20.0, 30.0))
+ self.assertEqual(listener.arguments(callIndex=-1), (20.0, 30.0))
+ self.assertEqual(axis.getLimits(), (20.0, 30.0))
def testScaleProxy(self):
listener = SignalListener()
@@ -943,9 +1097,9 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
yright.sigScaleChanged.connect(listener.partial("right"))
yright.setScale(yright.LOGARITHMIC)
- self.assertEquals(y.getScale(), y.LOGARITHMIC)
+ self.assertEqual(y.getScale(), y.LOGARITHMIC)
events = listener.arguments()
- self.assertEquals(len(events), 2)
+ self.assertEqual(len(events), 2)
self.assertIn(("left", y.LOGARITHMIC), events)
self.assertIn(("right", y.LOGARITHMIC), events)
@@ -957,9 +1111,9 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
yright.sigAutoScaleChanged.connect(listener.partial("right"))
yright.setAutoScale(False)
- self.assertEquals(y.isAutoScale(), False)
+ self.assertEqual(y.isAutoScale(), False)
events = listener.arguments()
- self.assertEquals(len(events), 2)
+ self.assertEqual(len(events), 2)
self.assertIn(("left", False), events)
self.assertIn(("right", False), events)
@@ -971,9 +1125,9 @@ class TestPlotAxes(TestCaseQt, ParametricTestCase):
yright.sigInvertedChanged.connect(listener.partial("right"))
yright.setInverted(True)
- self.assertEquals(y.isInverted(), True)
+ self.assertEqual(y.isInverted(), True)
events = listener.arguments()
- self.assertEquals(len(events), 2)
+ self.assertEqual(len(events), 2)
self.assertIn(("left", True), events)
self.assertIn(("right", True), events)
@@ -1363,6 +1517,7 @@ class TestPlotItemLog(PlotWidgetTestCase):
def suite():
testClasses = (TestPlotWidget, TestPlotImage, TestPlotCurve,
TestPlotMarker, TestPlotItem, TestPlotAxes,
+ TestPlotActiveCurveImage,
TestPlotEmptyLog, TestPlotCurveLog, TestPlotImageLog,
TestPlotMarkerLog, TestPlotItemLog)
diff --git a/silx/gui/plot/test/testPlotWindow.py b/silx/gui/plot/test/testPlotWindow.py
index 24d840b..6d3eb8f 100644
--- a/silx/gui/plot/test/testPlotWindow.py
+++ b/silx/gui/plot/test/testPlotWindow.py
@@ -32,7 +32,7 @@ __date__ = "27/06/2017"
import doctest
import unittest
-from silx.gui.test.utils import TestCaseQt, getQToolButtonFromAction
+from silx.gui.utils.testutils import TestCaseQt, getQToolButtonFromAction
from silx.gui import qt
from silx.gui.plot import PlotWindow
diff --git a/silx/gui/plot/test/testProfile.py b/silx/gui/plot/test/testProfile.py
index 28d9669..847f404 100644
--- a/silx/gui/plot/test/testProfile.py
+++ b/silx/gui/plot/test/testProfile.py
@@ -32,7 +32,7 @@ import numpy
import unittest
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import (
+from silx.gui.utils.testutils import (
TestCaseQt, getQToolButtonFromAction)
from silx.gui import qt
from silx.gui.plot import PlotWindow, Plot1D, Plot2D, Profile
@@ -75,58 +75,168 @@ class TestProfileToolBar(TestCaseQt, ParametricTestCase):
"""Test horizontal and vertical profile, without and with image"""
# Use Plot backend widget to submit mouse events
widget = self.plot.getWidgetHandle()
+ for method in ('sum', 'mean'):
+ with self.subTest(method=method):
+ # 2 positions to use for mouse events
+ pos1 = widget.width() * 0.4, widget.height() * 0.4
+ pos2 = widget.width() * 0.6, widget.height() * 0.6
+
+ for action in (self.toolBar.hLineAction, self.toolBar.vLineAction):
+ with self.subTest(mode=action.text()):
+ # Trigger tool button for mode
+ toolButton = getQToolButtonFromAction(action)
+ self.assertIsNot(toolButton, None)
+ self.mouseMove(toolButton)
+ self.mouseClick(toolButton, qt.Qt.LeftButton)
+
+ # Without image
+ self.mouseMove(widget, pos=pos1)
+ self.mouseClick(widget, qt.Qt.LeftButton, pos=pos1)
+
+ # with image
+ self.plot.addImage(
+ numpy.arange(100 * 100).reshape(100, -1))
+ self.mousePress(widget, qt.Qt.LeftButton, pos=pos1)
+ self.mouseMove(widget, pos=pos2)
+ self.mouseRelease(widget, qt.Qt.LeftButton, pos=pos2)
+
+ self.mouseMove(widget)
+ self.mouseClick(widget, qt.Qt.LeftButton)
- # 2 positions to use for mouse events
- pos1 = widget.width() * 0.4, widget.height() * 0.4
- pos2 = widget.width() * 0.6, widget.height() * 0.6
+ def testDiagonalProfile(self):
+ """Test diagonal profile, without and with image"""
+ # Use Plot backend widget to submit mouse events
+ widget = self.plot.getWidgetHandle()
- for action in (self.toolBar.hLineAction, self.toolBar.vLineAction):
- with self.subTest(mode=action.text()):
- # Trigger tool button for mode
- toolButton = getQToolButtonFromAction(action)
- self.assertIsNot(toolButton, None)
- self.mouseMove(toolButton)
- self.mouseClick(toolButton, qt.Qt.LeftButton)
+ for method in ('sum', 'mean'):
+ with self.subTest(method=method):
+ self.toolBar.setProfileMethod(method)
+
+ # 2 positions to use for mouse events
+ pos1 = widget.width() * 0.4, widget.height() * 0.4
+ pos2 = widget.width() * 0.6, widget.height() * 0.6
+
+ for image in (False, True):
+ with self.subTest(image=image):
+ if image:
+ self.plot.addImage(
+ numpy.arange(100 * 100).reshape(100, -1))
+
+ # Trigger tool button for diagonal profile mode
+ toolButton = getQToolButtonFromAction(
+ self.toolBar.lineAction)
+ self.assertIsNot(toolButton, None)
+ self.mouseMove(toolButton)
+ self.mouseClick(toolButton, qt.Qt.LeftButton)
+ self.toolBar.lineWidthSpinBox.setValue(3)
+
+ # draw profile line
+ self.mouseMove(widget, pos=pos1)
+ self.mousePress(widget, qt.Qt.LeftButton, pos=pos1)
+ self.mouseMove(widget, pos=pos2)
+ self.mouseRelease(widget, qt.Qt.LeftButton, pos=pos2)
+
+ if image is True:
+ profileCurve = self.toolBar.getProfilePlot().getAllCurves()[0]
+ if method == 'sum':
+ self.assertTrue(profileCurve.getData()[1].max() > 10000)
+ elif method == 'mean':
+ self.assertTrue(profileCurve.getData()[1].max() < 10000)
+ self.plot.clear()
+
+
+class TestProfile3DToolBar(TestCaseQt):
+ """Tests for Profile3DToolBar widget.
+ """
+ def setUp(self):
+ super(TestProfile3DToolBar, self).setUp()
+ self.plot = StackView()
+ self.plot.show()
+ self.qWaitForWindowExposed(self.plot)
- # Without image
- self.mouseMove(widget, pos=pos1)
- self.mouseClick(widget, qt.Qt.LeftButton, pos=pos1)
+ self.plot.setStack(numpy.array([
+ [[0, 1, 2], [3, 4, 5]],
+ [[6, 7, 8], [9, 10, 11]],
+ [[12, 13, 14], [15, 16, 17]]
+ ]))
- # with image
- self.plot.addImage(numpy.arange(100 * 100).reshape(100, -1))
- self.mousePress(widget, qt.Qt.LeftButton, pos=pos1)
- self.mouseMove(widget, pos=pos2)
- self.mouseRelease(widget, qt.Qt.LeftButton, pos=pos2)
+ def tearDown(self):
+ self.plot.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.plot.close()
+ self.plot = None
- self.mouseMove(widget)
- self.mouseClick(widget, qt.Qt.LeftButton)
+ super(TestProfile3DToolBar, self).tearDown()
- def testDiagonalProfile(self):
- """Test diagonal profile, without and with image"""
- # Use Plot backend widget to submit mouse events
- widget = self.plot.getWidgetHandle()
+ def testMethodProfile1DAnd2D(self):
+ """Test that the profile can have a different method if we want to
+ compute then in 1D or in 2D"""
- # 2 positions to use for mouse events
- pos1 = widget.width() * 0.4, widget.height() * 0.4
- pos2 = widget.width() * 0.6, widget.height() * 0.6
+ _3DProfileToolbar = self.plot.getProfileToolbar()
+ _2DProfilePlot = _3DProfileToolbar.getProfilePlot()
+ self.plot.getProfileToolbar().setProfileMethod('mean')
+ self.plot.getProfileToolbar().lineWidthSpinBox.setValue(3)
+ self.assertTrue(_3DProfileToolbar.getProfileMethod() == 'mean')
- # Trigger tool button for diagonal profile mode
- toolButton = getQToolButtonFromAction(self.toolBar.lineAction)
+ # check 2D 'mean' profile
+ _3DProfileToolbar.profile3dAction.computeProfileIn2D()
+ toolButton = getQToolButtonFromAction(_3DProfileToolbar.vLineAction)
self.assertIsNot(toolButton, None)
self.mouseMove(toolButton)
self.mouseClick(toolButton, qt.Qt.LeftButton)
+ plot2D = self.plot.getPlot().getWidgetHandle()
+ pos1 = plot2D.width() * 0.5, plot2D.height() * 0.5
+ self.mouseClick(plot2D, qt.Qt.LeftButton, pos=pos1)
+ self.assertTrue(numpy.array_equal(
+ _2DProfilePlot.getActiveImage().getData(),
+ numpy.array([[1, 4], [7, 10], [13, 16]])
+ ))
+
+ # check 1D 'sum' profile
+ _2DProfileToolbar = _2DProfilePlot.getProfileToolbar()
+ _2DProfileToolbar.setProfileMethod('sum')
+ self.assertTrue(_2DProfileToolbar.getProfileMethod() == 'sum')
+ _1DProfilePlot = _2DProfileToolbar.getProfilePlot()
+
+ _2DProfileToolbar.lineWidthSpinBox.setValue(3)
+ toolButton = getQToolButtonFromAction(_2DProfileToolbar.vLineAction)
+ self.assertIsNot(toolButton, None)
+ self.mouseMove(toolButton)
+ self.mouseClick(toolButton, qt.Qt.LeftButton)
+ plot1D = _2DProfilePlot.getWidgetHandle()
+ pos1 = plot1D.width() * 0.5, plot1D.height() * 0.5
+ self.mouseClick(plot1D, qt.Qt.LeftButton, pos=pos1)
+ self.assertTrue(numpy.array_equal(
+ _1DProfilePlot.getAllCurves()[0].getData()[1],
+ numpy.array([5, 17, 29])
+ ))
+
+ def testMethodSumLine(self):
+ """Simple interaction test to make sure the sum is correctly computed
+ """
+ _3DProfileToolbar = self.plot.getProfileToolbar()
+ _2DProfilePlot = _3DProfileToolbar.getProfilePlot()
+ self.plot.getProfileToolbar().setProfileMethod('sum')
+ self.plot.getProfileToolbar().lineWidthSpinBox.setValue(3)
+ self.assertTrue(_3DProfileToolbar.getProfileMethod() == 'sum')
+
+ # check 2D 'mean' profile
+ _3DProfileToolbar.profile3dAction.computeProfileIn2D()
+ toolButton = getQToolButtonFromAction(_3DProfileToolbar.lineAction)
+ self.assertIsNot(toolButton, None)
+ self.mouseMove(toolButton)
+ self.mouseClick(toolButton, qt.Qt.LeftButton)
+ plot2D = self.plot.getPlot().getWidgetHandle()
+ pos1 = plot2D.width() * 0.5, plot2D.height() * 0.2
+ pos2 = plot2D.width() * 0.5, plot2D.height() * 0.8
- for image in (False, True):
- with self.subTest(image=image):
- if image:
- self.plot.addImage(numpy.arange(100 * 100).reshape(100, -1))
-
- self.mouseMove(widget, pos=pos1)
- self.mousePress(widget, qt.Qt.LeftButton, pos=pos1)
- self.mouseMove(widget, pos=pos2)
- self.mouseRelease(widget, qt.Qt.LeftButton, pos=pos2)
-
- self.plot.clear()
+ self.mouseMove(plot2D, pos=pos1)
+ self.mousePress(plot2D, qt.Qt.LeftButton, pos=pos1)
+ self.mouseMove(plot2D, pos=pos2)
+ self.mouseRelease(plot2D, qt.Qt.LeftButton, pos=pos2)
+ self.assertTrue(numpy.array_equal(
+ _2DProfilePlot.getActiveImage().getData(),
+ numpy.array([[3, 12], [21, 30], [39, 48]])
+ ))
class TestGetProfilePlot(TestCaseQt):
@@ -157,8 +267,6 @@ class TestGetProfilePlot(TestCaseQt):
self.assertIsInstance(plot.getProfileToolbar().getProfileMainWindow(),
qt.QMainWindow)
- # plot.getProfileToolbar().profile3dAction.computeProfileIn2D() # default
-
self.assertIsInstance(plot.getProfileToolbar().getProfilePlot(),
Plot2D)
plot.getProfileToolbar().profile3dAction.computeProfileIn1D()
@@ -172,8 +280,8 @@ class TestGetProfilePlot(TestCaseQt):
def suite():
test_suite = unittest.TestSuite()
- # test_suite.addTest(positionInfoTestSuite)
- for testClass in (TestProfileToolBar, TestGetProfilePlot):
+ for testClass in (TestProfileToolBar, TestGetProfilePlot,
+ TestProfile3DToolBar):
test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(
testClass))
return test_suite
diff --git a/silx/gui/plot/test/testScatterMaskToolsWidget.py b/silx/gui/plot/test/testScatterMaskToolsWidget.py
index 0342c8f..a446911 100644
--- a/silx/gui/plot/test/testScatterMaskToolsWidget.py
+++ b/silx/gui/plot/test/testScatterMaskToolsWidget.py
@@ -38,7 +38,7 @@ import numpy
from silx.gui import qt
from silx.test.utils import temp_dir
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import getQToolButtonFromAction
+from silx.gui.utils.testutils import getQToolButtonFromAction
from silx.gui.plot import PlotWindow, ScatterMaskToolsWidget
from .utils import PlotWidgetTestCase
@@ -89,10 +89,10 @@ class TestScatterMaskToolsWidget(PlotWidgetTestCase, ParametricTestCase):
self.mouseMove(plot, pos=(0, 0))
self.mouseMove(plot, pos=pos0)
- self.mousePress(plot, qt.Qt.LeftButton, pos=pos0)
+ self.mouseClick(plot, qt.Qt.LeftButton, pos=pos0)
self.mouseMove(plot, pos=(0, 0))
self.mouseMove(plot, pos=pos1)
- self.mouseRelease(plot, qt.Qt.LeftButton, pos=pos1)
+ self.mouseClick(plot, qt.Qt.LeftButton, pos=pos1)
def _drawPolygon(self):
"""Draw a star polygon in the plot"""
@@ -110,7 +110,9 @@ class TestScatterMaskToolsWidget(PlotWidgetTestCase, ParametricTestCase):
self.mouseMove(plot, pos=[0, 0])
for pos in star:
self.mouseMove(plot, pos=pos)
+ self.qapp.processEvents()
self.mouseClick(plot, qt.Qt.LeftButton, pos=pos)
+ self.qapp.processEvents()
def _drawPencil(self):
"""Draw a star polygon in the plot"""
diff --git a/silx/gui/plot/test/testScatterView.py b/silx/gui/plot/test/testScatterView.py
index 40fdac6..583e3ed 100644
--- a/silx/gui/plot/test/testScatterView.py
+++ b/silx/gui/plot/test/testScatterView.py
@@ -103,6 +103,25 @@ class TestScatterView(PlotWidgetTestCase):
self.assertIsNone(data[3]) # xerror
self.assertIsNone(data[4]) # yerror
+ def testAlpha(self):
+ """Test alpha transparency in setData"""
+ _pts = 100
+ _levels = 100
+ _fwhm = 50
+ x = numpy.random.rand(_pts)*_levels
+ y = numpy.random.rand(_pts)*_levels
+ value = numpy.random.rand(_pts)*_levels
+ x0 = x[int(_pts/2)]
+ y0 = x[int(_pts/2)]
+ #2D Gaussian kernel
+ alpha = numpy.exp(-4*numpy.log(2) * ((x-x0)**2 + (y-y0)**2) / _fwhm**2)
+
+ self.plot.setData(x, y, value, alpha=alpha)
+ self.qapp.processEvents()
+
+ alphaData = self.plot.getScatterItem().getAlphaData()
+ self.assertTrue(numpy.all(numpy.equal(alpha, alphaData)))
+
def suite():
test_suite = unittest.TestSuite()
diff --git a/silx/gui/plot/test/testStackView.py b/silx/gui/plot/test/testStackView.py
index 3dcea36..a5f649c 100644
--- a/silx/gui/plot/test/testStackView.py
+++ b/silx/gui/plot/test/testStackView.py
@@ -32,7 +32,7 @@ __date__ = "20/03/2017"
import unittest
import numpy
-from silx.gui.test.utils import TestCaseQt, SignalListener
+from silx.gui.utils.testutils import TestCaseQt, SignalListener
from silx.gui import qt
from silx.gui.plot import StackView
@@ -123,8 +123,9 @@ class TestStackView(TestCaseQt):
"Plane selection combobox not updating perspective")
self.stackview.setStack(numpy.arange(6).reshape((1, 2, 3)))
- self.assertEqual(self.stackview._perspective, 0,
- "Default perspective not restored in setStack.")
+ self.assertEqual(self.stackview._perspective, 1,
+ "Perspective not preserved when calling setStack "
+ "without specifying the perspective parameter.")
self.stackview.setStack(numpy.arange(24).reshape((2, 3, 4)), perspective=2)
self.assertEqual(self.stackview._perspective, 2,
diff --git a/silx/gui/plot/test/testStats.py b/silx/gui/plot/test/testStats.py
index 123eb89..faedcff 100644
--- a/silx/gui/plot/test/testStats.py
+++ b/silx/gui/plot/test/testStats.py
@@ -33,7 +33,7 @@ from silx.gui import qt
from silx.gui.plot.stats import stats
from silx.gui.plot import StatsWidget
from silx.gui.plot.stats import statshandler
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import Plot1D, Plot2D
import unittest
import logging
@@ -361,6 +361,7 @@ class TestStatsWidgetWithCurves(TestCaseQt):
def setUp(self):
TestCaseQt.setUp(self)
self.plot = Plot1D()
+ self.plot.show()
x = range(20)
y = range(20)
self.plot.addCurve(x, y, legend='curve0')
diff --git a/silx/gui/plot/test/testUtilsAxis.py b/silx/gui/plot/test/testUtilsAxis.py
index 3f19dcd..016fafe 100644
--- a/silx/gui/plot/test/testUtilsAxis.py
+++ b/silx/gui/plot/test/testUtilsAxis.py
@@ -31,7 +31,7 @@ __date__ = "14/02/2018"
import unittest
from silx.gui.plot import PlotWidget
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot.utils.axis import SyncAxes
diff --git a/silx/gui/plot/test/utils.py b/silx/gui/plot/test/utils.py
index efba39c..ed1917a 100644
--- a/silx/gui/plot/test/utils.py
+++ b/silx/gui/plot/test/utils.py
@@ -31,7 +31,7 @@ __date__ = "26/01/2018"
import logging
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
from silx.gui.plot import PlotWidget
diff --git a/silx/gui/plot/tools/CurveLegendsWidget.py b/silx/gui/plot/tools/CurveLegendsWidget.py
new file mode 100644
index 0000000..7b63b29
--- /dev/null
+++ b/silx/gui/plot/tools/CurveLegendsWidget.py
@@ -0,0 +1,247 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides a widget to display :class:`PlotWidget` curve legends.
+"""
+
+from __future__ import division
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "20/07/2018"
+
+
+import logging
+import weakref
+
+
+from ... import qt
+from ...widgets.FlowLayout import FlowLayout as _FlowLayout
+from ..LegendSelector import LegendIcon as _LegendIcon
+from .. import items
+
+
+_logger = logging.getLogger(__name__)
+
+
+class _LegendWidget(qt.QWidget):
+ """Widget displaying curve style and its legend
+
+ :param QWidget parent: See :class:`QWidget`
+ :param ~silx.gui.plot.items.Curve curve: Associated curve
+ """
+
+ def __init__(self, parent, curve):
+ super(_LegendWidget, self).__init__(parent)
+ layout = qt.QHBoxLayout(self)
+ layout.setContentsMargins(10, 0, 10, 0)
+
+ curve.sigItemChanged.connect(self._curveChanged)
+
+ icon = _LegendIcon(curve=curve)
+ layout.addWidget(icon)
+
+ label = qt.QLabel(curve.getLegend())
+ label.setAlignment(qt.Qt.AlignLeft | qt.Qt.AlignVCenter)
+ layout.addWidget(label)
+
+ self._update()
+
+ def getCurve(self):
+ """Returns curve associated to this widget
+
+ :rtype: Union[~silx.gui.plot.items.Curve,None]
+ """
+ icon = self.findChild(_LegendIcon)
+ return icon.getCurve()
+
+ def _update(self):
+ """Update widget according to current curve state.
+ """
+ curve = self.getCurve()
+ if curve is None:
+ _logger.error('Curve no more exists')
+ self.setVisible(False)
+ return
+
+ self.setEnabled(curve.isVisible())
+
+ label = self.findChild(qt.QLabel)
+ if curve.isHighlighted():
+ label.setStyleSheet("border: 1px solid black")
+ else:
+ label.setStyleSheet("")
+
+ def _curveChanged(self, event):
+ """Handle update of curve item
+
+ :param event: Kind of change
+ """
+ if event in (items.ItemChangedType.VISIBLE,
+ items.ItemChangedType.HIGHLIGHTED,
+ items.ItemChangedType.HIGHLIGHTED_STYLE):
+ self._update()
+
+
+class CurveLegendsWidget(qt.QWidget):
+ """Widget displaying curves legends in a plot
+
+ :param QWidget parent: See :class:`QWidget`
+ """
+
+ sigCurveClicked = qt.Signal(object)
+ """Signal emitted when the legend of a curve is clicked
+
+ It provides the corresponding curve.
+ """
+
+ def __init__(self, parent=None):
+ super(CurveLegendsWidget, self).__init__(parent)
+ self._clicked = None
+ self._legends = {}
+ self._plotRef = None
+
+ def layout(self):
+ layout = super(CurveLegendsWidget, self).layout()
+ if layout is None:
+ # Lazy layout initialization to allow overloading
+ layout = _FlowLayout()
+ layout.setHorizontalSpacing(0)
+ self.setLayout(layout)
+ return layout
+
+ def getPlotWidget(self):
+ """Returns the associated :class:`PlotWidget`
+
+ :rtype: Union[~silx.gui.plot.PlotWidget,None]
+ """
+ return None if self._plotRef is None else self._plotRef()
+
+ def setPlotWidget(self, plot):
+ """Set the associated :class:`PlotWidget`
+
+ :param ~silx.gui.plot.PlotWidget plot: Plot widget to attach
+ """
+ previousPlot = self.getPlotWidget()
+ if previousPlot is not None:
+ previousPlot.sigItemAdded.disconnect( self._itemAdded)
+ previousPlot.sigItemAboutToBeRemoved.disconnect(self._itemRemoved)
+ for legend in list(self._legends.keys()):
+ self._removeLegend(legend)
+
+ self._plotRef = None if plot is None else weakref.ref(plot)
+
+ if plot is not None:
+ plot.sigItemAdded.connect(self._itemAdded)
+ plot.sigItemAboutToBeRemoved.connect(self._itemRemoved)
+
+ for legend in plot.getAllCurves(just_legend=True):
+ self._addLegend(legend)
+
+ def curveAt(self, *args):
+ """Returns the curve object represented at the given position
+
+ Either takes a QPoint or x and y as input in widget coordinates.
+
+ :rtype: Union[~silx.gui.plot.items.Curve,None]
+ """
+ if len(args) == 1:
+ point = args[0]
+ elif len(args) == 2:
+ point = qt.QPoint(*args)
+ else:
+ raise ValueError('Unsupported arguments')
+ assert isinstance(point, qt.QPoint)
+
+ widget = self.childAt(point)
+ while widget not in (self, None):
+ if isinstance(widget, _LegendWidget):
+ return widget.getCurve()
+ widget = widget.parent()
+ return None # No widget or not in _LegendWidget
+
+ def _itemAdded(self, item):
+ """Handle item added to the plot content"""
+ if isinstance(item, items.Curve):
+ self._addLegend(item.getLegend())
+
+ def _itemRemoved(self, item):
+ """Handle item removed from the plot content"""
+ if isinstance(item, items.Curve):
+ self._removeLegend(item.getLegend())
+
+ def _addLegend(self, legend):
+ """Add a curve to the legends
+
+ :param str legend: Curve's legend
+ """
+ if legend in self._legends:
+ return # Can happen when changing curve's y axis
+
+ plot = self.getPlotWidget()
+ if plot is None:
+ return None
+
+ curve = plot.getCurve(legend)
+ if curve is None:
+ _logger.error('Curve not found: %s' % legend)
+ return
+
+ widget = _LegendWidget(parent=self, curve=curve)
+ self.layout().addWidget(widget)
+ self._legends[legend] = widget
+
+ def _removeLegend(self, legend):
+ """Remove a curve from the legends if it exists
+
+ :param str legend: The curve's legend
+ """
+ widget = self._legends.pop(legend, None)
+ if widget is None:
+ _logger.warning('Unknown legend: %s' % legend)
+ else:
+ self.layout().removeWidget(widget)
+ widget.setParent(None)
+
+ def mousePressEvent(self, event):
+ if event.button() == qt.Qt.LeftButton:
+ self._clicked = event.pos()
+
+ _CLICK_THRESHOLD = 5
+ """Threshold for clicks"""
+
+ def mouseMoveEvent(self, event):
+ if self._clicked is not None:
+ dx = abs(self._clicked.x() - event.pos().x())
+ dy = abs(self._clicked.y() - event.pos().y())
+ if dx > self._CLICK_THRESHOLD or dy > self._CLICK_THRESHOLD:
+ self._clicked = None # Click is cancelled
+
+ def mouseReleaseEvent(self, event):
+ if event.button() == qt.Qt.LeftButton and self._clicked is not None:
+ curve = self.curveAt(event.pos())
+ if curve is not None:
+ self.sigCurveClicked.emit(curve)
+
+ self._clicked = None
diff --git a/silx/gui/plot/tools/profile/ImageProfileToolBar.py b/silx/gui/plot/tools/profile/ImageProfileToolBar.py
deleted file mode 100644
index 207a2e2..0000000
--- a/silx/gui/plot/tools/profile/ImageProfileToolBar.py
+++ /dev/null
@@ -1,271 +0,0 @@
-# TODO quick & dirty proof of concept
-
-import numpy
-
-from silx.gui.plot.tools.profile.ScatterProfileToolBar import _BaseProfileToolBar
-from .. import items
-from ...colors import cursorColorForColormap
-from ....image.bilinear import BilinearImage
-
-
-def _alignedPartialProfile(data, rowRange, colRange, axis):
- """Mean of a rectangular region (ROI) of a stack of images
- along a given axis.
-
- Returned values and all parameters are in image coordinates.
-
- :param numpy.ndarray data: 3D volume (stack of 2D images)
- The first dimension is the image index.
- :param rowRange: [min, max[ of ROI rows (upper bound excluded).
- :type rowRange: 2-tuple of int (min, max) with min < max
- :param colRange: [min, max[ of ROI columns (upper bound excluded).
- :type colRange: 2-tuple of int (min, max) with min < max
- :param int axis: The axis along which to take the profile of the ROI.
- 0: Sum rows along columns.
- 1: Sum columns along rows.
- :return: Profile image along the ROI as the mean of the intersection
- of the ROI and the image.
- """
- assert axis in (0, 1)
- assert len(data.shape) == 3
- assert rowRange[0] < rowRange[1]
- assert colRange[0] < colRange[1]
-
- nimages, height, width = data.shape
-
- # Range aligned with the integration direction
- profileRange = colRange if axis == 0 else rowRange
-
- profileLength = abs(profileRange[1] - profileRange[0])
-
- # Subset of the image to use as intersection of ROI and image
- rowStart = min(max(0, rowRange[0]), height)
- rowEnd = min(max(0, rowRange[1]), height)
- colStart = min(max(0, colRange[0]), width)
- colEnd = min(max(0, colRange[1]), width)
-
- imgProfile = numpy.mean(data[:, rowStart:rowEnd, colStart:colEnd],
- axis=axis + 1, dtype=numpy.float32)
-
- # Profile including out of bound area
- profile = numpy.zeros((nimages, profileLength), dtype=numpy.float32)
-
- # Place imgProfile in full profile
- offset = - min(0, profileRange[0])
- profile[:, offset:offset + imgProfile.shape[1]] = imgProfile
-
- return profile
-
-
-def createProfile(points, data, origin, scale, lineWidth):
- """Create the profile line for the the given image.
-
- :param points: Coords of profile end points: (x0, y0, x1, y1)
- :param numpy.ndarray data: the 2D image or the 3D stack of images
- on which we compute the profile.
- :param origin: (ox, oy) the offset from origin
- :type origin: 2-tuple of float
- :param scale: (sx, sy) the scale to use
- :type scale: 2-tuple of float
- :param int lineWidth: width of the profile line
- :return: `profile, area`, where:
- - profile is a 2D array of the profiles of the stack of images.
- For a single image, the profile is a curve, so this parameter
- has a shape *(1, len(curve))*
- - area is a tuple of two 1D arrays with 4 values each. They represent
- the effective ROI area corners in plot coords.
-
- :rtype: tuple(ndarray, (ndarray, ndarray), str, str)
- """
- if data is None or points is None or lineWidth is None:
- raise ValueError("createProfile called with invalid arguments")
-
- # force 3D data (stack of images)
- if len(data.shape) == 2:
- data3D = data.reshape((1,) + data.shape)
- elif len(data.shape) == 3:
- data3D = data
-
- roiWidth = max(1, lineWidth)
- x0, y0, x1, y1 = points
-
- # Convert start and end points in image coords as (row, col)
- startPt = ((y0 - origin[1]) / scale[1],
- (x0 - origin[0]) / scale[0])
- endPt = ((y1 - origin[1]) / scale[1],
- (x1 - origin[0]) / scale[0])
-
- if (int(startPt[0]) == int(endPt[0]) or
- int(startPt[1]) == int(endPt[1])):
- # Profile is aligned with one of the axes
-
- # Convert to int
- startPt = int(startPt[0]), int(startPt[1])
- endPt = int(endPt[0]), int(endPt[1])
-
- # Ensure startPt <= endPt
- if startPt[0] > endPt[0] or startPt[1] > endPt[1]:
- startPt, endPt = endPt, startPt
-
- if startPt[0] == endPt[0]: # Row aligned
- rowRange = (int(startPt[0] + 0.5 - 0.5 * roiWidth),
- int(startPt[0] + 0.5 + 0.5 * roiWidth))
- colRange = startPt[1], endPt[1] + 1
- profile = _alignedPartialProfile(data3D,
- rowRange, colRange,
- axis=0)
-
- else: # Column aligned
- rowRange = startPt[0], endPt[0] + 1
- colRange = (int(startPt[1] + 0.5 - 0.5 * roiWidth),
- int(startPt[1] + 0.5 + 0.5 * roiWidth))
- profile = _alignedPartialProfile(data3D,
- rowRange, colRange,
- axis=1)
-
- # Convert ranges to plot coords to draw ROI area
- area = (
- numpy.array(
- (colRange[0], colRange[1], colRange[1], colRange[0]),
- dtype=numpy.float32) * scale[0] + origin[0],
- numpy.array(
- (rowRange[0], rowRange[0], rowRange[1], rowRange[1]),
- dtype=numpy.float32) * scale[1] + origin[1])
-
- else: # General case: use bilinear interpolation
-
- # Ensure startPt <= endPt
- if (startPt[1] > endPt[1] or (
- startPt[1] == endPt[1] and startPt[0] > endPt[0])):
- startPt, endPt = endPt, startPt
-
- profile = []
- for slice_idx in range(data3D.shape[0]):
- bilinear = BilinearImage(data3D[slice_idx, :, :])
-
- profile.append(bilinear.profile_line(
- (startPt[0] - 0.5, startPt[1] - 0.5),
- (endPt[0] - 0.5, endPt[1] - 0.5),
- roiWidth))
- profile = numpy.array(profile)
-
- # Extend ROI with half a pixel on each end, and
- # Convert back to plot coords (x, y)
- length = numpy.sqrt((endPt[0] - startPt[0]) ** 2 +
- (endPt[1] - startPt[1]) ** 2)
- dRow = (endPt[0] - startPt[0]) / length
- dCol = (endPt[1] - startPt[1]) / length
-
- # Extend ROI with half a pixel on each end
- startPt = startPt[0] - 0.5 * dRow, startPt[1] - 0.5 * dCol
- endPt = endPt[0] + 0.5 * dRow, endPt[1] + 0.5 * dCol
-
- # Rotate deltas by 90 degrees to apply line width
- dRow, dCol = dCol, -dRow
-
- area = (
- numpy.array((startPt[1] - 0.5 * roiWidth * dCol,
- startPt[1] + 0.5 * roiWidth * dCol,
- endPt[1] + 0.5 * roiWidth * dCol,
- endPt[1] - 0.5 * roiWidth * dCol),
- dtype=numpy.float32) * scale[0] + origin[0],
- numpy.array((startPt[0] - 0.5 * roiWidth * dRow,
- startPt[0] + 0.5 * roiWidth * dRow,
- endPt[0] + 0.5 * roiWidth * dRow,
- endPt[0] - 0.5 * roiWidth * dRow),
- dtype=numpy.float32) * scale[1] + origin[1])
-
- xProfile = numpy.arange(len(profile[0]), dtype=numpy.float64)
-
- return (xProfile, profile[0]), area
-
-
-class ImageProfileToolBar(_BaseProfileToolBar):
-
- def __init__(self, parent=None, plot=None, title='Image Profile'):
- super(ImageProfileToolBar, self).__init__(parent, plot, title)
- plot.sigActiveImageChanged.connect(self.__activeImageChanged)
-
- roiManager = self._getRoiManager()
- if roiManager is None:
- _logger.error(
- "Error during scatter profile toolbar initialisation")
- else:
- roiManager.sigInteractiveModeStarted.connect(
- self.__interactionStarted)
- roiManager.sigInteractiveModeFinished.connect(
- self.__interactionFinished)
- if roiManager.isStarted():
- self.__interactionStarted(roiManager.getRegionOfInterestKind())
-
- def __interactionStarted(self, kind):
- """Handle start of ROI interaction"""
- plot = self.getPlotWidget()
- if plot is None:
- return
-
- plot.sigActiveImageChanged.connect(self.__activeImageChanged)
-
- image = plot.getActiveImage()
- legend = None if image is None else image.getLegend()
- self.__activeImageChanged(None, legend)
-
- def __interactionFinished(self, rois):
- """Handle end of ROI interaction"""
- plot = self.getPlotWidget()
- if plot is None:
- return
-
- plot.sigActiveImageChanged.disconnect(self.__activeImageChanged)
-
- image = plot.getActiveImage()
- legend = None if image is None else image.getLegend()
- self.__activeImageChanged(legend, None)
-
- def __activeImageChanged(self, previous, legend):
- """Handle active image change: toggle enabled toolbar, update curve"""
- plot = self.getPlotWidget()
- if plot is None:
- return
-
- activeImage = plot.getActiveImage()
- if activeImage is None:
- self.setEnabled(False)
- else:
- # Disable for empty image
- self.setEnabled(activeImage.getData(copy=False).size > 0)
-
- # Update default profile color
- if isinstance(activeImage, items.ColormapMixIn):
- self.setColor(cursorColorForColormap(
- activeImage.getColormap()['name'])) # TODO change thsi
- else:
- self.setColor('black')
-
- self.updateProfile()
-
- def computeProfile(self, x0, y0, x1, y1):
- """Compute corresponding profile
-
- :param float x0: Profile start point X coord
- :param float y0: Profile start point Y coord
- :param float x1: Profile end point X coord
- :param float y1: Profile end point Y coord
- :return: (x, y) profile data or None
- """
- plot = self.getPlotWidget()
- if plot is None:
- return None
-
- image = plot.getActiveImage()
- if image is None:
- return None
-
- profile, area = createProfile(
- points=(x0, y0, x1, y1),
- data=image.getData(copy=False),
- origin=image.getOrigin(),
- scale=image.getScale(),
- lineWidth=1) # TODO
-
- return profile \ No newline at end of file
diff --git a/silx/gui/plot/tools/test/__init__.py b/silx/gui/plot/tools/test/__init__.py
index 79301ab..9cede27 100644
--- a/silx/gui/plot/tools/test/__init__.py
+++ b/silx/gui/plot/tools/test/__init__.py
@@ -32,6 +32,7 @@ import unittest
from . import testROI
from . import testTools
from . import testScatterProfileToolBar
+from . import testCurveLegendsWidget
def suite():
@@ -40,6 +41,7 @@ def suite():
[testROI.suite(),
testTools.suite(),
testScatterProfileToolBar.suite(),
+ testCurveLegendsWidget.suite(),
])
return test_suite
diff --git a/silx/gui/plot/tools/test/testCurveLegendsWidget.py b/silx/gui/plot/tools/test/testCurveLegendsWidget.py
new file mode 100644
index 0000000..4824dd7
--- /dev/null
+++ b/silx/gui/plot/tools/test/testCurveLegendsWidget.py
@@ -0,0 +1,125 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "02/08/2018"
+
+
+import unittest
+
+from silx.gui import qt
+from silx.utils.testutils import ParametricTestCase
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui.plot import PlotWindow
+from silx.gui.plot.tools import CurveLegendsWidget
+
+
+class TestCurveLegendsWidget(TestCaseQt, ParametricTestCase):
+ """Tests for CurveLegendsWidget class"""
+
+ def setUp(self):
+ super(TestCurveLegendsWidget, self).setUp()
+ self.plot = PlotWindow()
+
+ self.legends = CurveLegendsWidget.CurveLegendsWidget()
+ self.legends.setPlotWidget(self.plot)
+
+ dock = qt.QDockWidget()
+ dock.setWindowTitle('Curve Legends')
+ dock.setWidget(self.legends)
+ self.plot.addTabbedDockWidget(dock)
+
+ self.plot.show()
+ self.qWaitForWindowExposed(self.plot)
+
+ def tearDown(self):
+ del self.legends
+ self.qapp.processEvents()
+ self.plot.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.plot.close()
+ del self.plot
+ super(TestCurveLegendsWidget, self).tearDown()
+
+ def _assertNbLegends(self, count):
+ """Check the number of legends in the CurveLegendsWidget"""
+ children = self.legends.findChildren(CurveLegendsWidget._LegendWidget)
+ self.assertEqual(len(children), count)
+
+ def testAddRemoveCurves(self):
+ """Test CurveLegendsWidget while adding/removing curves"""
+ self.plot.addCurve((0, 1), (1, 2), legend='a')
+ self._assertNbLegends(1)
+ self.plot.addCurve((0, 1), (2, 3), legend='b')
+ self._assertNbLegends(2)
+
+ # Detached/attach
+ self.legends.setPlotWidget(None)
+ self._assertNbLegends(0)
+
+ self.legends.setPlotWidget(self.plot)
+ self._assertNbLegends(2)
+
+ self.plot.clear()
+ self._assertNbLegends(0)
+
+ def testUpdateCurves(self):
+ """Test CurveLegendsWidget while updating curves """
+ self.plot.addCurve((0, 1), (1, 2), legend='a')
+ self._assertNbLegends(1)
+ self.plot.addCurve((0, 1), (2, 3), legend='b')
+ self._assertNbLegends(2)
+
+ # Activate curve
+ self.plot.setActiveCurve('a')
+ self.qapp.processEvents()
+ self.plot.setActiveCurve('b')
+ self.qapp.processEvents()
+
+ # Change curve style
+ curve = self.plot.getCurve('a')
+ curve.setLineWidth(2)
+ for linestyle in (':', '', '--', '-'):
+ with self.subTest(linestyle=linestyle):
+ curve.setLineStyle(linestyle)
+ self.qapp.processEvents()
+ self.qWait(1000)
+
+ for symbol in ('o', 'd', '', 's'):
+ with self.subTest(symbol=symbol):
+ curve.setSymbol(symbol)
+ self.qapp.processEvents()
+ self.qWait(1000)
+
+
+def suite():
+ test_suite = unittest.TestSuite()
+ test_suite.addTest(
+ unittest.defaultTestLoader.loadTestsFromTestCase(
+ TestCurveLegendsWidget))
+ return test_suite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/plot/tools/test/testROI.py b/silx/gui/plot/tools/test/testROI.py
index 5032036..8aec1d9 100644
--- a/silx/gui/plot/tools/test/testROI.py
+++ b/silx/gui/plot/tools/test/testROI.py
@@ -32,7 +32,7 @@ import numpy.testing
from silx.gui import qt
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import TestCaseQt, SignalListener
+from silx.gui.utils.testutils import TestCaseQt, SignalListener
from silx.gui.plot import PlotWindow
import silx.gui.plot.items.roi as roi_items
from silx.gui.plot.tools import roi
diff --git a/silx/gui/plot/tools/test/testScatterProfileToolBar.py b/silx/gui/plot/tools/test/testScatterProfileToolBar.py
index 16972f9..b99cac7 100644
--- a/silx/gui/plot/tools/test/testScatterProfileToolBar.py
+++ b/silx/gui/plot/tools/test/testScatterProfileToolBar.py
@@ -32,7 +32,7 @@ import numpy
from silx.gui import qt
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.plot import PlotWindow
from silx.gui.plot.tools import profile
import silx.gui.plot.items.roi as roi_items
diff --git a/silx/gui/plot/tools/test/testTools.py b/silx/gui/plot/tools/test/testTools.py
index 810b933..f4adda0 100644
--- a/silx/gui/plot/tools/test/testTools.py
+++ b/silx/gui/plot/tools/test/testTools.py
@@ -34,7 +34,7 @@ import unittest
import numpy
from silx.utils.testutils import TestLogging
-from silx.gui.test.utils import qWaitForWindowExposedAndActivate
+from silx.gui.utils.testutils import qWaitForWindowExposedAndActivate
from silx.gui import qt
from silx.gui.plot import PlotWindow
from silx.gui.plot import tools
diff --git a/silx/gui/plot/utils/axis.py b/silx/gui/plot/utils/axis.py
index fae50b4..bd19996 100644
--- a/silx/gui/plot/utils/axis.py
+++ b/silx/gui/plot/utils/axis.py
@@ -35,6 +35,13 @@ from contextlib import contextmanager
import weakref
import silx.utils.weakref as silxWeakref
+try:
+ from ...qt.inspect import isValid as _isQObjectValid
+except ImportError: # PySide(1) fallback
+ def _isQObjectValid(obj):
+ return True
+
+
_logger = logging.getLogger(__name__)
@@ -135,7 +142,7 @@ class SyncAxes(object):
raise RuntimeError("Axes not synchronized")
for ref, callbacks in self.__callbacks.items():
axis = ref()
- if axis is not None:
+ if axis is not None and _isQObjectValid(axis):
for sigName, callback in callbacks:
sig = getattr(axis, sigName)
sig.disconnect(callback)
diff --git a/silx/gui/plot3d/ParamTreeView.py b/silx/gui/plot3d/ParamTreeView.py
index a352627..ee0c876 100644
--- a/silx/gui/plot3d/ParamTreeView.py
+++ b/silx/gui/plot3d/ParamTreeView.py
@@ -40,6 +40,7 @@ __license__ = "MIT"
__date__ = "05/12/2017"
+import numbers
import sys
from silx.third_party import six
@@ -362,7 +363,7 @@ class ParameterTreeDelegate(qt.QStyledItemDelegate):
assert isinstance(editor, qt.QWidget)
editor.setParent(parent)
- elif isinstance(data, (int, float)) and editorHint is not None:
+ elif isinstance(data, numbers.Number) and editorHint is not None:
# Use a slider
editor = IntSliderEditor(parent)
range_ = editorHint
@@ -394,7 +395,11 @@ class ParameterTreeDelegate(qt.QStyledItemDelegate):
if hasattr(notifySignal, 'signature'): # Qt4
signature = notifySignal.signature()
else:
- signature = bytes(notifySignal.methodSignature())
+ signature = notifySignal.methodSignature()
+ if qt.BINDING == 'PySide2':
+ signature = signature.data()
+ else:
+ signature = bytes(signature)
if hasattr(signature, 'decode'): # For PySide with python3
signature = signature.decode('ascii')
@@ -472,7 +477,7 @@ class ParamTreeView(qt.QTreeView):
editorHint = index.data(qt.Qt.UserRole)
if (isinstance(data, bool) or
callable(editorHint) or
- (isinstance(data, (float, int)) and editorHint)):
+ (isinstance(data, numbers.Number) and editorHint)):
self.openPersistentEditor(index)
self.__persistentEditors.add(index)
diff --git a/silx/gui/plot3d/Plot3DWidget.py b/silx/gui/plot3d/Plot3DWidget.py
index 53ff895..eed4438 100644
--- a/silx/gui/plot3d/Plot3DWidget.py
+++ b/silx/gui/plot3d/Plot3DWidget.py
@@ -36,7 +36,7 @@ import logging
from silx.gui import qt
from silx.gui.colors import rgba
from . import actions
-from ..utils._image import convertArrayToQImage
+from ..utils.image import convertArrayToQImage
from .. import _glutils as glu
from .scene import interaction, primitives, transform
diff --git a/silx/gui/plot3d/SFViewParamTree.py b/silx/gui/plot3d/SFViewParamTree.py
index bb81465..a2b771c 100644
--- a/silx/gui/plot3d/SFViewParamTree.py
+++ b/silx/gui/plot3d/SFViewParamTree.py
@@ -694,6 +694,10 @@ class IsoSurfaceRootItem(SubjectItem):
Root (i.e : column index 0) Isosurface item.
"""
+ def __init__(self, subject, normalization, *args):
+ self._isoLevelSliderNormalization = normalization
+ super(IsoSurfaceRootItem, self).__init__(subject, *args)
+
def getSignals(self):
subject = self.subject
return [subject.sigColorChanged,
@@ -717,7 +721,8 @@ class IsoSurfaceRootItem(SubjectItem):
self.setCheckState((visible and qt.Qt.Checked) or qt.Qt.Unchecked)
nameItem = qt.QStandardItem('Level')
- sliderItem = IsoSurfaceLevelSlider(self.subject)
+ sliderItem = IsoSurfaceLevelSlider(self.subject,
+ self._isoLevelSliderNormalization)
self.appendRow([nameItem, sliderItem])
nameItem = qt.QStandardItem('Color')
@@ -788,12 +793,22 @@ class IsoSurfaceLevelItem(SubjectItem):
class _IsoLevelSlider(qt.QSlider):
- """QSlider used for iso-surface level"""
+ """QSlider used for iso-surface level with linear scale"""
- def __init__(self, parent, subject):
+ def __init__(self, parent, subject, normalization):
super(_IsoLevelSlider, self).__init__(parent=parent)
self.subject = subject
+ if normalization == 'arcsinh':
+ self.__norm = numpy.arcsinh
+ self.__invNorm = numpy.sinh
+ elif normalization == 'linear':
+ self.__norm = lambda x: x
+ self.__invNorm = lambda x: x
+ else:
+ raise ValueError(
+ "Unsupported normalization %s", normalization)
+
self.sliderReleased.connect(self.__sliderReleased)
self.subject.sigLevelChanged.connect(self.setLevel)
@@ -804,10 +819,13 @@ class _IsoLevelSlider(qt.QSlider):
dataRange = self.subject.parent().getDataRange()
if dataRange is not None:
- width = dataRange[-1] - dataRange[0]
+ min_ = self.__norm(dataRange[0])
+ max_ = self.__norm(dataRange[-1])
+
+ width = max_ - min_
if width > 0:
sliderWidth = self.maximum() - self.minimum()
- sliderPosition = sliderWidth * (level - dataRange[0]) / width
+ sliderPosition = sliderWidth * (self.__norm(level) - min_) / width
self.setValue(sliderPosition)
def __dataChanged(self):
@@ -818,11 +836,12 @@ class _IsoLevelSlider(qt.QSlider):
value = self.value()
dataRange = self.subject.parent().getDataRange()
if dataRange is not None:
- min_, _, max_ = dataRange
+ min_ = self.__norm(dataRange[0])
+ max_ = self.__norm(dataRange[-1])
width = max_ - min_
sliderWidth = self.maximum() - self.minimum()
level = min_ + width * value / sliderWidth
- self.subject.setLevel(level)
+ self.subject.setLevel(self.__invNorm(level))
class IsoSurfaceLevelSlider(IsoSurfaceLevelItem):
@@ -832,8 +851,12 @@ class IsoSurfaceLevelSlider(IsoSurfaceLevelItem):
nTicks = 1000
persistent = True
+ def __init__(self, subject, normalization):
+ self.normalization = normalization
+ super(IsoSurfaceLevelSlider, self).__init__(subject)
+
def getEditor(self, parent, option, index):
- editor = _IsoLevelSlider(parent, self.subject)
+ editor = _IsoLevelSlider(parent, self.subject, self.normalization)
editor.setOrientation(qt.Qt.Horizontal)
editor.setMinimum(0)
editor.setMaximum(self.nTicks)
@@ -1067,6 +1090,11 @@ class IsoSurfaceGroup(SubjectItem):
"""
Root item for the list of isosurface items.
"""
+
+ def __init__(self, subject, normalization, *args):
+ self._isoLevelSliderNormalization = normalization
+ super(IsoSurfaceGroup, self).__init__(subject, *args)
+
def getSignals(self):
subject = self.subject
return [subject.sigIsosurfaceAdded, subject.sigIsosurfaceRemoved]
@@ -1090,7 +1118,9 @@ class IsoSurfaceGroup(SubjectItem):
raise ValueError('Expected an isosurface instance.')
def __addIsosurface(self, isosurface):
- valueItem = IsoSurfaceRootItem(subject=isosurface)
+ valueItem = IsoSurfaceRootItem(
+ subject=isosurface,
+ normalization=self._isoLevelSliderNormalization)
nameItem = IsoSurfaceLevelItem(subject=isosurface)
self.insertRow(max(0, self.rowCount() - 1), [valueItem, nameItem])
@@ -1570,6 +1600,7 @@ class TreeView(qt.QTreeView):
def __init__(self, parent=None):
super(TreeView, self).__init__(parent)
self.__openedIndex = None
+ self._isoLevelSliderNormalization = 'linear'
self.setIconSize(qt.QSize(16, 16))
@@ -1607,7 +1638,10 @@ class TreeView(qt.QTreeView):
item = IsoSurfaceCount(sfView)
item.setEditable(False)
- model.appendRow([IsoSurfaceGroup(sfView, 'Isosurfaces'), item])
+ model.appendRow([IsoSurfaceGroup(sfView,
+ self._isoLevelSliderNormalization,
+ 'Isosurfaces'),
+ item])
item = qt.QStandardItem()
item.setEditable(False)
@@ -1771,3 +1805,13 @@ class TreeView(qt.QTreeView):
def __delegateEvent(self, task):
if task == 'remove_iso':
self.__removeIsosurfaces()
+
+ def setIsoLevelSliderNormalization(self, normalization):
+ """Set the normalization for iso level slider
+
+ This MUST be called *before* :meth:`setSfView` to have an effect.
+
+ :param str normalization: Either 'linear' or 'arcsinh'
+ """
+ assert normalization in ('linear', 'arcsinh')
+ self._isoLevelSliderNormalization = normalization
diff --git a/silx/gui/plot3d/SceneWidget.py b/silx/gui/plot3d/SceneWidget.py
index f005dec..4a824d7 100644
--- a/silx/gui/plot3d/SceneWidget.py
+++ b/silx/gui/plot3d/SceneWidget.py
@@ -39,6 +39,7 @@ from ..colors import rgba
from .Plot3DWidget import Plot3DWidget
from . import items
+from .items.core import RootGroupWithAxesItem
from .scene import interaction
from ._model import SceneModel, visitQAbstractItemModel
from ._model.items import Item3DRow
@@ -363,10 +364,11 @@ class SceneWidget(Plot3DWidget):
self._foregroundColor = 1., 1., 1., 1.
self._highlightColor = 0.7, 0.7, 0., 1.
- self._sceneGroup = items.GroupWithAxesItem(parent=self)
+ self._sceneGroup = RootGroupWithAxesItem(parent=self)
self._sceneGroup.setLabel('Data')
- self.viewport.scene.children.append(self._sceneGroup._getScenePrimitive())
+ self.viewport.scene.children.append(
+ self._sceneGroup._getScenePrimitive())
def model(self):
"""Returns the model corresponding the scene of this widget
@@ -395,6 +397,28 @@ class SceneWidget(Plot3DWidget):
"""
return self._sceneGroup
+ def pickItems(self, x, y, condition=None):
+ """Iterator over picked items in the scene at given position.
+
+ Each picked item yield a
+ :class:`~silx.gui.plot3d.items._pick.PickingResult` object
+ holding the picking information.
+
+ It traverses the scene tree in a left-to-right top-down way.
+
+ :param int x: X widget coordinate
+ :param int y: Y widget coordinate
+ :param callable condition: Optional test called for each item
+ checking whether to process it or not.
+ """
+ if not self.isValid() or not self.isVisible():
+ return # Empty iterator
+
+ devicePixelRatio = self.getDevicePixelRatio()
+ for result in self.getSceneGroup().pickItems(
+ x * devicePixelRatio, y * devicePixelRatio, condition):
+ yield result
+
# Interactive modes
def _handleSelectionChanged(self, current, previous):
diff --git a/silx/gui/plot3d/_model/items.py b/silx/gui/plot3d/_model/items.py
index 02485fe..b09f29a 100644
--- a/silx/gui/plot3d/_model/items.py
+++ b/silx/gui/plot3d/_model/items.py
@@ -41,7 +41,7 @@ import numpy
from silx.third_party import six
-from ...utils._image import convertArrayToQImage
+from ...utils.image import convertArrayToQImage
from ...colors import preferredColormaps
from ... import qt, icons
from .. import items
diff --git a/silx/gui/plot3d/actions/io.py b/silx/gui/plot3d/actions/io.py
index f30abeb..4020d6f 100644
--- a/silx/gui/plot3d/actions/io.py
+++ b/silx/gui/plot3d/actions/io.py
@@ -43,7 +43,7 @@ from silx.gui import qt, printer
from silx.gui.icons import getQIcon
from .Plot3DAction import Plot3DAction
from ..utils import mng
-from ...utils._image import convertQImageToArray
+from ...utils.image import convertQImageToArray
_logger = logging.getLogger(__name__)
diff --git a/silx/gui/plot3d/items/_pick.py b/silx/gui/plot3d/items/_pick.py
new file mode 100644
index 0000000..b35ef0d
--- /dev/null
+++ b/silx/gui/plot3d/items/_pick.py
@@ -0,0 +1,292 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides classes supporting item picking.
+"""
+
+from __future__ import absolute_import
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "24/09/2018"
+
+import logging
+import numpy
+
+from ..scene import Viewport, Base
+
+
+_logger = logging.getLogger(__name__)
+
+
+class PickContext(object):
+ """Store information related to current picking
+
+ :param int x: Widget coordinate
+ :param int y: Widget coordinate
+ :param ~silx.gui.plot3d.scene.Viewport viewport:
+ Viewport where picking occurs
+ :param Union[None,callable] condition:
+ Test whether each item needs to be picked or not.
+ """
+
+ def __init__(self, x, y, viewport, condition):
+ self._widgetPosition = x, y
+ assert isinstance(viewport, Viewport)
+ self._viewport = viewport
+ self._ndcZRange = -1., 1.
+ self._enabled = True
+ self._condition = condition
+
+ def copy(self):
+ """Returns a copy
+
+ :rtype: PickContent
+ """
+ x, y = self.getWidgetPosition()
+ context = PickContext(x, y, self.getViewport(), self._condition)
+ context.setNDCZRange(*self._ndcZRange)
+ context.setEnabled(self.isEnabled())
+ return context
+
+ def isItemPickable(self, item):
+ """Check condition for the given item.
+
+ :param Item3D item:
+ :return: Whether to process the item (True) or to skip it (False)
+ :rtype: bool
+ """
+ return self._condition is None or self._condition(item)
+
+ def getViewport(self):
+ """Returns viewport where picking occurs
+
+ :rtype: ~silx.gui.plot3d.scene.Viewport
+ """
+ return self._viewport
+
+ def getWidgetPosition(self):
+ """Returns (x, y) position in pixel in the widget
+
+ Origin is at the top-left corner of the widget,
+ X from left to right, Y goes downward.
+
+ :rtype: List[int]
+ """
+ return self._widgetPosition
+
+ def setEnabled(self, enabled):
+ """Set whether picking is enabled or not
+
+ :param bool enabled: True to enable picking, False otherwise
+ """
+ self._enabled = bool(enabled)
+
+ def isEnabled(self):
+ """Returns True if picking is currently enabled, False otherwise.
+
+ :rtype: bool
+ """
+ return self._enabled
+
+ def setNDCZRange(self, near=-1., far=1.):
+ """Set near and far Z value in normalized device coordinates
+
+ This allows to clip the ray to a subset of the NDC range
+
+ :param float near: Near segment end point Z coordinate
+ :param float far: Far segment end point Z coordinate
+ """
+ self._ndcZRange = near, far
+
+ def getNDCPosition(self):
+ """Return Normalized device coordinates of picked point.
+
+ :return: (x, y) in NDC coordinates or None if outside viewport.
+ :rtype: Union[None,List[float]]
+ """
+ if not self.isEnabled():
+ return None
+
+ # Convert x, y from window to NDC
+ x, y = self.getWidgetPosition()
+ return self.getViewport().windowToNdc(x, y, checkInside=True)
+
+ def getPickingSegment(self, frame):
+ """Returns picking segment in requested coordinate frame.
+
+ :param Union[str,Base] frame:
+ The frame in which to get the picking segment,
+ either a keyword: 'ndc', 'camera', 'scene' or a scene
+ :class:`~silx.gui.plot3d.scene.Base` object.
+ :return: Near and far points of the segment as (x, y, z, w)
+ or None if picked point is outside viewport
+ :rtype: Union[None,numpy.ndarray]
+ """
+ assert frame in ('ndc', 'camera', 'scene') or isinstance(frame, Base)
+
+ positionNdc = self.getNDCPosition()
+ if positionNdc is None:
+ return None
+
+ near, far = self._ndcZRange
+ rayNdc = numpy.array((positionNdc + (near, 1.),
+ positionNdc + (far, 1.)),
+ dtype=numpy.float64)
+ if frame == 'ndc':
+ return rayNdc
+
+ viewport = self.getViewport()
+
+ rayCamera = viewport.camera.intrinsic.transformPoints(
+ rayNdc,
+ direct=False,
+ perspectiveDivide=True)
+ if frame == 'camera':
+ return rayCamera
+
+ rayScene = viewport.camera.extrinsic.transformPoints(
+ rayCamera, direct=False)
+ if frame == 'scene':
+ return rayScene
+
+ # frame is a scene Base object
+ rayObject = frame.objectToSceneTransform.transformPoints(
+ rayScene, direct=False)
+ return rayObject
+
+
+class PickingResult(object):
+ """Class to access picking information in a 3D scene.
+ """
+
+ def __init__(self, item, positions, indices=None, fetchdata=None):
+ """Init
+
+ :param ~silx.gui.plot3d.items.Item3D item: The picked item
+ :param numpy.ndarray positions:
+ Nx3 array-like of picked positions (x, y, z) in item coordinates.
+ :param numpy.ndarray indices: Array-like of indices of picked data.
+ Either 1D or 2D with dim0: data dimension and dim1: indices.
+ No copy is made.
+ :param callable fetchdata: Optional function with a bool copy argument
+ to provide an alternative function to access item data.
+ Default is to use `item.getData`.
+ """
+ self._item = item
+ self._objectPositions = numpy.array(
+ positions, copy=False, dtype=numpy.float)
+
+ # Store matrices to generate positions on demand
+ primitive = item._getScenePrimitive()
+ self._objectToSceneTransform = primitive.objectToSceneTransform
+ self._objectToNDCTransform = primitive.objectToNDCTransform
+ self._scenePositions = None
+ self._ndcPositions = None
+
+ if indices is None:
+ self._indices = None
+ else:
+ self._indices = numpy.array(indices, copy=False, dtype=numpy.int)
+
+ self._fetchdata = fetchdata
+
+ def getItem(self):
+ """Returns the item this results corresponds to.
+
+ :rtype: ~silx.gui.plot3d.items.Item3D
+ """
+ return self._item
+
+ def getIndices(self, copy=True):
+ """Returns indices of picked data.
+
+ If data is 1D, it returns a numpy.ndarray, otherwise
+ it returns a tuple with as many numpy.ndarray as there are
+ dimensions in the data.
+
+ :param bool copy: True (default) to get a copy,
+ False to return internal arrays
+ :rtype: Union[None,numpy.ndarray,List[numpy.ndarray]]
+ """
+ if self._indices is None:
+ return None
+ indices = numpy.array(self._indices, copy=copy)
+ return indices if indices.ndim == 1 else tuple(indices)
+
+ def getData(self, copy=True):
+ """Returns picked data values
+
+ :param bool copy: True (default) to get a copy,
+ False to return internal arrays
+ :rtype: Union[None,numpy.ndarray]
+ """
+
+ indices = self.getIndices(copy=False)
+ if indices is None or len(indices) == 0:
+ return None
+
+ item = self.getItem()
+ if self._fetchdata is None:
+ if hasattr(item, 'getData'):
+ data = item.getData(copy=False)
+ else:
+ return None
+ else:
+ data = self._fetchdata(copy=False)
+
+ return numpy.array(data[indices], copy=copy)
+
+ def getPositions(self, frame='scene', copy=True):
+ """Returns picking positions in item coordinates.
+
+ :param str frame: The frame in which the positions are returned
+ Either 'scene' for world space,
+ 'ndc' for normalized device coordinates or 'object' for item frame.
+ :param bool copy: True (default) to get a copy,
+ False to return internal arrays
+ :return: Nx3 array of (x, y, z) coordinates
+ :rtype: numpy.ndarray
+ """
+ if frame == 'ndc':
+ if self._ndcPositions is None: # Lazy-loading
+ self._ndcPositions = self._objectToNDCTransform.transformPoints(
+ self._objectPositions, perspectiveDivide=True)
+
+ positions = self._ndcPositions
+
+ elif frame == 'scene':
+ if self._scenePositions is None: # Lazy-loading
+ self._scenePositions = self._objectToSceneTransform.transformPoints(
+ self._objectPositions)
+
+ positions = self._scenePositions
+
+ elif frame == 'object':
+ positions = self._objectPositions
+
+ else:
+ raise ValueError('Unsupported frame argument: %s' % str(frame))
+
+ return numpy.array(positions, copy=copy)
diff --git a/silx/gui/plot3d/items/clipplane.py b/silx/gui/plot3d/items/clipplane.py
index a5ba0e6..3e819d0 100644
--- a/silx/gui/plot3d/items/clipplane.py
+++ b/silx/gui/plot3d/items/clipplane.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -32,8 +32,11 @@ __license__ = "MIT"
__date__ = "15/11/2017"
-from ..scene import primitives
+import numpy
+from ..scene import primitives, utils
+
+from ._pick import PickingResult
from .core import Item3D
from .mixins import PlaneMixIn
@@ -48,3 +51,86 @@ class ClipPlane(Item3D, PlaneMixIn):
plane = primitives.ClipPlane()
Item3D.__init__(self, parent=parent, primitive=plane)
PlaneMixIn.__init__(self, plane=plane)
+
+ def __pickPreProcessing(self, context):
+ """Common processing for :meth:`_pickPostProcess` and :meth:`_pickFull`
+
+ :param PickContext context: Current picking context
+ :return None or (bounds, intersection points, rayObject)
+ """
+ plane = self._getPlane()
+ planeParent = plane.parent
+ if planeParent is None:
+ return None
+
+ rayObject = context.getPickingSegment(frame=plane)
+ if rayObject is None:
+ return None
+
+ bounds = planeParent.bounds(dataBounds=True)
+ rayClip = utils.clipSegmentToBounds(rayObject[:, :3], bounds)
+ if rayClip is None:
+ return None # Ray is outside parent's bounding box
+
+ points = utils.segmentPlaneIntersect(
+ rayObject[0, :3],
+ rayObject[1, :3],
+ planeNorm=self.getNormal(),
+ planePt=self.getPoint())
+
+ # A single intersection inside bounding box
+ picked = (len(points) == 1 and
+ numpy.all(bounds[0] <= points[0]) and
+ numpy.all(points[0] <= bounds[1]))
+
+ return picked, points, rayObject
+
+ def _pick(self, context):
+ # Perform picking before modifying context
+ result = super(ClipPlane, self)._pick(context)
+
+ # Modify context if needed
+ if self.isVisible() and context.isEnabled():
+ info = self.__pickPreProcessing(context)
+ if info is not None:
+ picked, points, rayObject = info
+ plane = self._getPlane()
+
+ if picked: # A single intersection inside bounding box
+ # Clip NDC z range for following brother items
+ ndcIntersect = plane.objectToNDCTransform.transformPoint(
+ points[0], perspectiveDivide=True)
+ ndcNormal = plane.objectToNDCTransform.transformNormal(
+ self.getNormal())
+ if ndcNormal[2] < 0:
+ context.setNDCZRange(-1., ndcIntersect[2])
+ else:
+ context.setNDCZRange(ndcIntersect[2], 1.)
+
+ else:
+ # TODO check this might not be correct
+ rayObject[:, 3] = 1. # Make sure 4h coordinate is one
+ if numpy.sum(rayObject[0] * self.getParameters()) < 0.:
+ # Disable picking for remaining brothers
+ context.setEnabled(False)
+
+ return result
+
+ def _pickFastCheck(self, context):
+ return True
+
+ def _pickFull(self, context):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ info = self.__pickPreProcessing(context)
+ if info is not None:
+ picked, points, _ = info
+
+ if picked:
+ return PickingResult(self, positions=[points[0]])
+
+ return None
diff --git a/silx/gui/plot3d/items/core.py b/silx/gui/plot3d/items/core.py
index e549e59..0aefced 100644
--- a/silx/gui/plot3d/items/core.py
+++ b/silx/gui/plot3d/items/core.py
@@ -41,6 +41,7 @@ from ... import qt
from ...plot.items import ItemChangedType
from .. import scene
from ..scene import axes, primitives, transform
+from ._pick import PickContext
@enum.unique
@@ -219,6 +220,53 @@ class Item3D(qt.QObject):
self._setForegroundColor(
widget.getForegroundColor().getRgbF())
+ # picking
+
+ def _pick(self, context):
+ """Implement picking on this item.
+
+ :param PickContext context: Current picking context
+ :return: Data indices at picked position or None
+ :rtype: Union[None,PickingResult]
+ """
+ if (self.isVisible() and
+ context.isEnabled() and
+ context.isItemPickable(self) and
+ self._pickFastCheck(context)):
+ return self._pickFull(context)
+ return None
+
+ def _pickFastCheck(self, context):
+ """Approximate item pick test (e.g., bounding box-based picking).
+
+ :param PickContext context: Current picking context
+ :return: True if item might be picked
+ :rtype: bool
+ """
+ primitive = self._getScenePrimitive()
+
+ positionNdc = context.getNDCPosition()
+ if positionNdc is None: # No picking outside viewport
+ return False
+
+ bounds = primitive.bounds(transformed=False, dataBounds=False)
+ if bounds is None: # primitive has no bounds
+ return False
+
+ bounds = primitive.objectToNDCTransform.transformBounds(bounds)
+
+ return (bounds[0, 0] <= positionNdc[0] <= bounds[1, 0] and
+ bounds[0, 1] <= positionNdc[1] <= bounds[1, 1])
+
+ def _pickFull(self, context):
+ """Perform precise picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ return None
+
class DataItem3D(Item3D):
"""Base class representing a data item with transform in the scene.
@@ -256,12 +304,14 @@ class DataItem3D(Item3D):
self._rotationCenter = 0., 0., 0.
- self._getScenePrimitive().transforms = [
+ self.__transforms = transform.TransformList([
self._translate,
self._rotateForwardTranslation,
self._rotate,
self._rotateBackwardTranslation,
- self._transformObjectToRotate]
+ self._transformObjectToRotate])
+
+ self._getScenePrimitive().transforms = self.__transforms
def _updated(self, event=None):
"""Handle MixIn class updates.
@@ -274,6 +324,13 @@ class DataItem3D(Item3D):
# Transformations
+ def _getSceneTransforms(self):
+ """Return TransformList corresponding to current transforms
+
+ :rtype: TransformList
+ """
+ return self.__transforms
+
def setScale(self, sx=1., sy=1., sz=1.):
"""Set the scale of the item in the scene.
@@ -452,7 +509,92 @@ class DataItem3D(Item3D):
self._updated(Item3DChangedType.BOUNDING_BOX_VISIBLE)
-class _BaseGroupItem(DataItem3D):
+class BaseNodeItem(DataItem3D):
+ """Base class for data item having children (e.g., group, 3d volume)."""
+
+ def __init__(self, parent=None, group=None):
+ """Base class representing a group of items in the scene.
+
+ :param parent: The View widget this item belongs to.
+ :param Union[GroupBBox, None] group:
+ The scene group to use for rendering
+ """
+ DataItem3D.__init__(self, parent=parent, group=group)
+
+ def getItems(self):
+ """Returns the list of items currently present in the group.
+
+ :rtype: tuple
+ """
+ raise NotImplementedError('getItems must be implemented in subclass')
+
+ def visit(self, included=True):
+ """Generator visiting the group content.
+
+ It traverses the group sub-tree in a top-down left-to-right way.
+
+ :param bool included: True (default) to include self in visit
+ """
+ if included:
+ yield self
+ for child in self.getItems():
+ yield child
+ if hasattr(child, 'visit'):
+ for item in child.visit(included=False):
+ yield item
+
+ def pickItems(self, x, y, condition=None):
+ """Iterator over picked items in the group at given position.
+
+ Each picked item yield a :class:`PickingResult` object
+ holding the picking information.
+
+ It traverses the group sub-tree in a left-to-right top-down way.
+
+ :param int x: X widget device pixel coordinate
+ :param int y: Y widget device pixel coordinate
+ :param callable condition: Optional test called for each item
+ checking whether to process it or not.
+ """
+ viewport = self._getScenePrimitive().viewport
+ if viewport is None:
+ raise RuntimeError(
+ 'Cannot perform picking: Item not attached to a widget')
+
+ context = PickContext(x, y, viewport, condition)
+ for result in self._pickItems(context):
+ yield result
+
+ def _pickItems(self, context):
+ """Implement :meth:`pickItems`
+
+ :param PickContext context: Current picking context
+ """
+ if not self.isVisible() or not context.isEnabled():
+ return # empty iterator
+
+ # Use a copy to discard context changes once this returns
+ context = context.copy()
+
+ if not self._pickFastCheck(context):
+ return # empty iterator
+
+ result = self._pick(context)
+ if result is not None:
+ yield result
+
+ for child in self.getItems():
+ if isinstance(child, BaseNodeItem):
+ for result in child._pickItems(context):
+ yield result # Flatten result
+
+ else:
+ result = child._pick(context)
+ if result is not None:
+ yield result
+
+
+class _BaseGroupItem(BaseNodeItem):
"""Base class for group of items sharing a common transform."""
sigItemAdded = qt.Signal(object)
@@ -474,9 +616,16 @@ class _BaseGroupItem(DataItem3D):
:param Union[GroupBBox, None] group:
The scene group to use for rendering
"""
- DataItem3D.__init__(self, parent=parent, group=group)
+ BaseNodeItem.__init__(self, parent=parent, group=group)
self._items = []
+ def _getGroupPrimitive(self):
+ """Returns the group for which to handle children.
+
+ This allows this group to be different from the primitive.
+ """
+ return self._getScenePrimitive()
+
def addItem(self, item, index=None):
"""Add an item to the group
@@ -493,11 +642,11 @@ class _BaseGroupItem(DataItem3D):
item.setParent(self)
if index is None:
- self._getScenePrimitive().children.append(
+ self._getGroupPrimitive().children.append(
item._getScenePrimitive())
self._items.append(item)
else:
- self._getScenePrimitive().children.insert(
+ self._getGroupPrimitive().children.insert(
index, item._getScenePrimitive())
self._items.insert(index, item)
self.sigItemAdded.emit(item)
@@ -518,7 +667,7 @@ class _BaseGroupItem(DataItem3D):
if item not in self.getItems():
raise ValueError("Item3D not in group: %s" % str(item))
- self._getScenePrimitive().children.remove(item._getScenePrimitive())
+ self._getGroupPrimitive().children.remove(item._getScenePrimitive())
self._items.remove(item)
item.setParent(None)
self.sigItemRemoved.emit(item)
@@ -528,21 +677,6 @@ class _BaseGroupItem(DataItem3D):
for item in self.getItems():
self.removeItem(item)
- def visit(self, included=True):
- """Generator visiting the group content.
-
- It traverses the group sub-tree in a top-down left-to-right way.
-
- :param bool included: True (default) to include self in visit
- """
- if included:
- yield self
- for child in self.getItems():
- yield child
- if hasattr(child, 'visit'):
- for item in child.visit(included=False):
- yield item
-
class GroupItem(_BaseGroupItem):
"""Group of items sharing a common transform."""
@@ -620,3 +754,26 @@ class GroupWithAxesItem(_BaseGroupItem):
return self._Labels((labelledAxes.xlabel,
labelledAxes.ylabel,
labelledAxes.zlabel))
+
+
+class RootGroupWithAxesItem(GroupWithAxesItem):
+ """Special group with axes item for root of the scene.
+
+ Uses 2 groups so that axes take transforms into account.
+ """
+
+ def __init__(self, parent=None):
+ super(RootGroupWithAxesItem, self).__init__(parent)
+ self.__group = scene.Group()
+ self.__group.transforms = self._getSceneTransforms()
+
+ groupWithAxes = self._getScenePrimitive()
+ groupWithAxes.transforms = [] # Do not apply transforms here
+ groupWithAxes.children.append(self.__group)
+
+ def _getGroupPrimitive(self):
+ """Returns the group for which to handle children.
+
+ This allows this group to be different from the primitive.
+ """
+ return self.__group
diff --git a/silx/gui/plot3d/items/image.py b/silx/gui/plot3d/items/image.py
index 9e8bf1e..210f2f3 100644
--- a/silx/gui/plot3d/items/image.py
+++ b/silx/gui/plot3d/items/image.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,22 +33,72 @@ __date__ = "15/11/2017"
import numpy
-from ..scene import primitives
+from ..scene import primitives, utils
from .core import DataItem3D, ItemChangedType
from .mixins import ColormapMixIn, InterpolationMixIn
+from ._pick import PickingResult
-class ImageData(DataItem3D, ColormapMixIn, InterpolationMixIn):
- """Description of a 2D image data.
+class _Image(DataItem3D, InterpolationMixIn):
+ """Base class for images
:param parent: The View widget this item belongs to.
"""
def __init__(self, parent=None):
DataItem3D.__init__(self, parent=parent)
- ColormapMixIn.__init__(self)
InterpolationMixIn.__init__(self)
+ def _setPrimitive(self, primitive):
+ InterpolationMixIn._setPrimitive(self, primitive)
+
+ def getData(self, copy=True):
+ raise NotImplementedError()
+
+ def _pickFull(self, context):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None:
+ return None
+
+ points = utils.segmentPlaneIntersect(
+ rayObject[0, :3],
+ rayObject[1, :3],
+ planeNorm=numpy.array((0., 0., 1.), dtype=numpy.float64),
+ planePt=numpy.array((0., 0., 0.), dtype=numpy.float64))
+
+ if len(points) == 1: # Single intersection
+ if points[0][0] < 0. or points[0][1] < 0.:
+ return None # Outside image
+ row, column = int(points[0][1]), int(points[0][0])
+ data = self.getData(copy=False)
+ height, width = data.shape[:2]
+ if row < height and column < width:
+ return PickingResult(
+ self,
+ positions=[(points[0][0], points[0][1], 0.)],
+ indices=([row], [column]))
+ else:
+ return None # Outside image
+ else: # Either no intersection or segment and image are coplanar
+ return None
+
+
+class ImageData(_Image, ColormapMixIn):
+ """Description of a 2D image data.
+
+ :param parent: The View widget this item belongs to.
+ """
+
+ def __init__(self, parent=None):
+ _Image.__init__(self, parent=parent)
+ ColormapMixIn.__init__(self)
+
self._data = numpy.zeros((0, 0), dtype=numpy.float32)
self._image = primitives.ImageData(self._data)
@@ -56,7 +106,7 @@ class ImageData(DataItem3D, ColormapMixIn, InterpolationMixIn):
# Connect scene primitive to mix-in class
ColormapMixIn._setSceneColormap(self, self._image.colormap)
- InterpolationMixIn._setPrimitive(self, self._image)
+ _Image._setPrimitive(self, self._image)
def setData(self, data, copy=True):
"""Set the image data to display.
@@ -83,14 +133,14 @@ class ImageData(DataItem3D, ColormapMixIn, InterpolationMixIn):
return self._image.getData(copy=copy)
-class ImageRgba(DataItem3D, InterpolationMixIn):
+class ImageRgba(_Image, InterpolationMixIn):
"""Description of a 2D data RGB(A) image.
:param parent: The View widget this item belongs to.
"""
def __init__(self, parent=None):
- DataItem3D.__init__(self, parent=parent)
+ _Image.__init__(self, parent=parent)
InterpolationMixIn.__init__(self)
self._data = numpy.zeros((0, 0, 3), dtype=numpy.float32)
@@ -99,7 +149,7 @@ class ImageRgba(DataItem3D, InterpolationMixIn):
self._getScenePrimitive().children.append(self._image)
# Connect scene primitive to mix-in class
- InterpolationMixIn._setPrimitive(self, self._image)
+ _Image._setPrimitive(self, self._image)
def setData(self, data, copy=True):
"""Set the RGB(A) image data to display.
diff --git a/silx/gui/plot3d/items/mesh.py b/silx/gui/plot3d/items/mesh.py
index 12a3941..21936ea 100644
--- a/silx/gui/plot3d/items/mesh.py
+++ b/silx/gui/plot3d/items/mesh.py
@@ -29,13 +29,19 @@ from __future__ import absolute_import
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "15/11/2017"
+__date__ = "17/07/2018"
+
+import logging
import numpy
-from ..scene import primitives
-from .core import DataItem3D, ItemChangedType
+from ..scene import primitives, utils
from ..scene.transform import Rotate
+from .core import DataItem3D, ItemChangedType
+from ._pick import PickingResult
+
+
+_logger = logging.getLogger(__name__)
class Mesh(DataItem3D):
@@ -56,11 +62,7 @@ class Mesh(DataItem3D):
copy=True):
"""Set mesh geometry data.
- Supported drawing modes are:
-
- - For points: 'points'
- - For lines: 'lines', 'line_strip', 'loop'
- - For triangles: 'triangles', 'triangle_strip', 'fan'
+ Supported drawing modes are: 'triangles', 'triangle_strip', 'fan'
:param numpy.ndarray position:
Position (x, y, z) of each vertex as a (N, 3) array
@@ -73,7 +75,7 @@ class Mesh(DataItem3D):
self._getScenePrimitive().children = [] # Remove any previous mesh
if position is None or len(position) == 0:
- self._mesh = 0
+ self._mesh = None
else:
self._mesh = primitives.Mesh3D(
position, color, normal, mode=mode, copy=copy)
@@ -145,6 +147,72 @@ class Mesh(DataItem3D):
"""
return self._mesh.drawMode
+ def _pickFull(self, context):
+ """Perform precise picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None: # No picking outside viewport
+ return None
+ rayObject = rayObject[:, :3]
+
+ positions = self.getPositionData(copy=False)
+ if positions.size == 0:
+ return None
+
+ mode = self.getDrawMode()
+ if mode == 'triangles':
+ triangles = positions.reshape(-1, 3, 3)
+
+ elif mode == 'triangle_strip':
+ # Expand strip
+ triangles = numpy.empty((len(positions) - 2, 3, 3),
+ dtype=positions.dtype)
+ triangles[:, 0] = positions[:-2]
+ triangles[:, 1] = positions[1:-1]
+ triangles[:, 2] = positions[2:]
+
+ elif mode == 'fan':
+ # Expand fan
+ triangles = numpy.empty((len(positions) - 2, 3, 3),
+ dtype=positions.dtype)
+ triangles[:, 0] = positions[0]
+ triangles[:, 1] = positions[1:-1]
+ triangles[:, 2] = positions[2:]
+
+ else:
+ _logger.warning("Unsupported draw mode: %s" % mode)
+ return None
+
+ trianglesIndices, t, barycentric = utils.segmentTrianglesIntersection(
+ rayObject, triangles)
+
+ if len(trianglesIndices) == 0:
+ return None
+
+ points = t.reshape(-1, 1) * (rayObject[1] - rayObject[0]) + rayObject[0]
+
+ # Get vertex index from triangle index and closest point in triangle
+ closest = numpy.argmax(barycentric, axis=1)
+
+ if mode == 'triangles':
+ indices = trianglesIndices * 3 + closest
+
+ elif mode == 'triangle_strip':
+ indices = trianglesIndices + closest
+
+ elif mode == 'fan':
+ indices = trianglesIndices + closest # For corners 1 and 2
+ indices[closest == 0] = 0 # For first corner (common)
+
+ return PickingResult(self,
+ positions=points,
+ indices=indices,
+ fetchdata=self.getPositionData)
+
class _CylindricalVolume(DataItem3D):
"""Class that represents a volume with a rotational symmetry along z
@@ -155,6 +223,18 @@ class _CylindricalVolume(DataItem3D):
def __init__(self, parent=None):
DataItem3D.__init__(self, parent=parent)
self._mesh = None
+ self._nbFaces = 0
+
+ def getPosition(self, copy=True):
+ """Get primitive positions.
+
+ :param bool copy:
+ True (default) to get a copy,
+ False to get internal representation (do not modify!).
+ :return: Position of the primitives as a (N, 3) array.
+ :rtype: numpy.ndarray
+ """
+ raise NotImplementedError("Must be implemented in subclass")
def _setData(self, position, radius, height, angles, color, flatFaces,
rotation):
@@ -173,30 +253,31 @@ class _CylindricalVolume(DataItem3D):
self._getScenePrimitive().children = [] # Remove any previous mesh
if position is None or len(position) == 0:
- self._mesh = 0
+ self._mesh = None
+ self._nbFaces = 0
else:
+ self._nbFaces = len(angles) - 1
+
volume = numpy.empty(shape=(len(angles) - 1, 12, 3),
dtype=numpy.float32)
normal = numpy.empty(shape=(len(angles) - 1, 12, 3),
dtype=numpy.float32)
for i in range(0, len(angles) - 1):
- """
- c6
- /\
- / \
- / \
- c4|------|c5
- | \ |
- | \ |
- | \ |
- | \ |
- c2|------|c3
- \ /
- \ /
- \/
- c1
- """
+ # c6
+ # /\
+ # / \
+ # / \
+ # c4|------|c5
+ # | \ |
+ # | \ |
+ # | \ |
+ # | \ |
+ # c2|------|c3
+ # \ /
+ # \ /
+ # \/
+ # c1
c1 = numpy.array([0, 0, -height/2])
c1 = rotation.transformPoint(c1)
c2 = numpy.array([radius * numpy.cos(angles[i]),
@@ -266,6 +347,49 @@ class _CylindricalVolume(DataItem3D):
self.sigItemChanged.emit(ItemChangedType.DATA)
+ def _pickFull(self, context):
+ """Perform precise picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ if self._mesh is None or self._nbFaces == 0:
+ return None
+
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None: # No picking outside viewport
+ return None
+ rayObject = rayObject[:, :3]
+
+ positions = self._mesh.getAttribute('position', copy=False)
+ triangles = positions.reshape(-1, 3, 3) # 'triangle' draw mode
+
+ trianglesIndices, t = utils.segmentTrianglesIntersection(
+ rayObject, triangles)[:2]
+
+ if len(trianglesIndices) == 0:
+ return None
+
+ # Get object index from triangle index
+ indices = trianglesIndices // (4 * self._nbFaces)
+
+ # Select closest intersection point for each primitive
+ indices, firstIndices = numpy.unique(indices, return_index=True)
+ t = t[firstIndices]
+
+ # Resort along t as result of numpy.unique is not sorted by t
+ sortedIndices = numpy.argsort(t)
+ t = t[sortedIndices]
+ indices = indices[sortedIndices]
+
+ points = t.reshape(-1, 1) * (rayObject[1] - rayObject[0]) + rayObject[0]
+
+ return PickingResult(self,
+ positions=points,
+ indices=indices,
+ fetchdata=self.getPosition)
+
class Box(_CylindricalVolume):
"""Description of a box.
diff --git a/silx/gui/plot3d/items/scatter.py b/silx/gui/plot3d/items/scatter.py
index 5eea455..a13c3db 100644
--- a/silx/gui/plot3d/items/scatter.py
+++ b/silx/gui/plot3d/items/scatter.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -40,6 +40,7 @@ from ..scene import function, primitives, utils
from .core import DataItem3D, Item3DChangedType, ItemChangedType
from .mixins import ColormapMixIn, SymbolMixIn
+from ._pick import PickingResult
_logger = logging.getLevelName(__name__)
@@ -116,7 +117,7 @@ class Scatter3D(DataItem3D, ColormapMixIn, SymbolMixIn):
:return: X coordinates
:rtype: numpy.ndarray
"""
- return self._scatter.getAttribute('x', copy=copy)
+ return self._scatter.getAttribute('x', copy=copy).reshape(-1)
def getYData(self, copy=True):
"""Returns Y data coordinates.
@@ -126,7 +127,7 @@ class Scatter3D(DataItem3D, ColormapMixIn, SymbolMixIn):
:return: Y coordinates
:rtype: numpy.ndarray
"""
- return self._scatter.getAttribute('y', copy=copy)
+ return self._scatter.getAttribute('y', copy=copy).reshape(-1)
def getZData(self, copy=True):
"""Returns Z data coordinates.
@@ -136,7 +137,7 @@ class Scatter3D(DataItem3D, ColormapMixIn, SymbolMixIn):
:return: Z coordinates
:rtype: numpy.ndarray
"""
- return self._scatter.getAttribute('z', copy=copy)
+ return self._scatter.getAttribute('z', copy=copy).reshape(-1)
def getValues(self, copy=True):
"""Returns data values.
@@ -146,7 +147,64 @@ class Scatter3D(DataItem3D, ColormapMixIn, SymbolMixIn):
:return: data values
:rtype: numpy.ndarray
"""
- return self._scatter.getAttribute('value', copy=copy)
+ return self._scatter.getAttribute('value', copy=copy).reshape(-1)
+
+ def _pickFull(self, context, threshold=0., sort='depth'):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :param float threshold: Picking threshold in pixel.
+ Perform picking in a square of size threshold x threshold.
+ :param str sort: How returned indices are sorted:
+
+ - 'index' (default): sort by the value of the indices
+ - 'depth': Sort by the depth of the points from the current
+ camera point of view.
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ assert sort in ('index', 'depth')
+
+ rayNdc = context.getPickingSegment(frame='ndc')
+ if rayNdc is None: # No picking outside viewport
+ return None
+
+ # Project data to NDC
+ xData = self.getXData(copy=False)
+ if len(xData) == 0: # No data in the scatter
+ return None
+
+ primitive = self._getScenePrimitive()
+
+ dataPoints = numpy.transpose((xData,
+ self.getYData(copy=False),
+ self.getZData(copy=False),
+ numpy.ones_like(xData)))
+
+ pointsNdc = primitive.objectToNDCTransform.transformPoints(
+ dataPoints, perspectiveDivide=True)
+
+ # Perform picking
+ distancesNdc = numpy.abs(pointsNdc[:, :2] - rayNdc[0, :2])
+ # TODO issue with symbol size: using pixel instead of points
+ threshold += self.getSymbolSize()
+ thresholdNdc = 2. * threshold / numpy.array(primitive.viewport.size)
+ picked = numpy.where(numpy.logical_and(
+ numpy.all(distancesNdc < thresholdNdc, axis=1),
+ numpy.logical_and(rayNdc[0, 2] <= pointsNdc[:, 2],
+ pointsNdc[:, 2] <= rayNdc[1, 2])))[0]
+
+ if sort == 'depth':
+ # Sort picked points from front to back
+ picked = picked[numpy.argsort(pointsNdc[picked, 2])]
+
+ if picked.size > 0:
+ return PickingResult(self,
+ positions=dataPoints[picked, :3],
+ indices=picked,
+ fetchdata=self.getValues)
+ else:
+ return None
class Scatter2D(DataItem3D, ColormapMixIn, SymbolMixIn):
@@ -373,6 +431,120 @@ class Scatter2D(DataItem3D, ColormapMixIn, SymbolMixIn):
"""
return numpy.array(self._value, copy=copy)
+ def _pickPoints(self, context, points, threshold=1., sort='depth'):
+ """Perform picking while in 'points' visualization mode
+
+ :param PickContext context: Current picking context
+ :param float threshold: Picking threshold in pixel.
+ Perform picking in a square of size threshold x threshold.
+ :param str sort: How returned indices are sorted:
+
+ - 'index' (default): sort by the value of the indices
+ - 'depth': Sort by the depth of the points from the current
+ camera point of view.
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ assert sort in ('index', 'depth')
+
+ rayNdc = context.getPickingSegment(frame='ndc')
+ if rayNdc is None: # No picking outside viewport
+ return None
+
+ # Project data to NDC
+ primitive = self._getScenePrimitive()
+ pointsNdc = primitive.objectToNDCTransform.transformPoints(
+ points, perspectiveDivide=True)
+
+ # Perform picking
+ distancesNdc = numpy.abs(pointsNdc[:, :2] - rayNdc[0, :2])
+ thresholdNdc = threshold / numpy.array(primitive.viewport.size)
+ picked = numpy.where(numpy.logical_and(
+ numpy.all(distancesNdc < thresholdNdc, axis=1),
+ numpy.logical_and(rayNdc[0, 2] <= pointsNdc[:, 2],
+ pointsNdc[:, 2] <= rayNdc[1, 2])))[0]
+
+ if sort == 'depth':
+ # Sort picked points from front to back
+ picked = picked[numpy.argsort(pointsNdc[picked, 2])]
+
+ if picked.size > 0:
+ return PickingResult(self,
+ positions=points[picked, :3],
+ indices=picked,
+ fetchdata=self.getValues)
+ else:
+ return None
+
+ def _pickSolid(self, context, points):
+ """Perform picking while in 'solid' visualization mode
+
+ :param PickContext context: Current picking context
+ """
+ if self._cachedTrianglesIndices is None:
+ _logger.info("Picking on Scatter2D before rendering")
+ return None
+
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None: # No picking outside viewport
+ return None
+ rayObject = rayObject[:, :3]
+
+ trianglesIndices = self._cachedTrianglesIndices.reshape(-1, 3)
+ triangles = points[trianglesIndices, :3]
+ selectedIndices, t, barycentric = utils.segmentTrianglesIntersection(
+ rayObject, triangles)
+ closest = numpy.argmax(barycentric, axis=1)
+
+ indices = trianglesIndices.reshape(-1, 3)[selectedIndices, closest]
+
+ if len(indices) == 0: # No point is picked
+ return None
+
+ # Compute intersection points and get closest data point
+ positions = t.reshape(-1, 1) * (rayObject[1] - rayObject[0]) + rayObject[0]
+
+ return PickingResult(self,
+ positions=positions,
+ indices=indices,
+ fetchdata=self.getValues)
+
+ def _pickFull(self, context):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ xData = self.getXData(copy=False)
+ if len(xData) == 0: # No data in the scatter
+ return None
+
+ if self.isHeightMap():
+ zData = self.getValues(copy=False)
+ else:
+ zData = numpy.zeros_like(xData)
+
+ points = numpy.transpose((xData,
+ self.getYData(copy=False),
+ zData,
+ numpy.ones_like(xData)))
+
+ mode = self.getVisualization()
+ if mode == 'points':
+ # TODO issue with symbol size: using pixel instead of points
+ # Get "corrected" symbol size
+ _, threshold = self._getSceneSymbol()
+ return self._pickPoints(
+ context, points, threshold=max(3., threshold))
+
+ elif mode == 'lines':
+ # Picking only at point
+ return self._pickPoints(context, points, threshold=5.)
+
+ else: # mode == 'solid'
+ return self._pickSolid(context, points)
+
def _updateScene(self):
self._getScenePrimitive().children = [] # Remove previous primitives
diff --git a/silx/gui/plot3d/items/volume.py b/silx/gui/plot3d/items/volume.py
index a7b5923..ca22f1f 100644
--- a/silx/gui/plot3d/items/volume.py
+++ b/silx/gui/plot3d/items/volume.py
@@ -41,10 +41,11 @@ from silx.math.marchingcubes import MarchingCubes
from ... import qt
from ...colors import rgba
-from ..scene import cutplane, primitives, transform
+from ..scene import cutplane, primitives, transform, utils
-from .core import DataItem3D, Item3D, ItemChangedType, Item3DChangedType
+from .core import BaseNodeItem, Item3D, ItemChangedType, Item3DChangedType
from .mixins import ColormapMixIn, InterpolationMixIn, PlaneMixIn
+from ._pick import PickingResult
_logger = logging.getLogger(__name__)
@@ -77,7 +78,8 @@ class CutPlane(Item3D, ColormapMixIn, InterpolationMixIn, PlaneMixIn):
def _parentChanged(self, event):
"""Handle data change in the parent this plane belongs to"""
if event == ItemChangedType.DATA:
- self._getPlane().setData(self.sender().getData(), copy=False)
+ self._getPlane().setData(self.sender().getData(copy=False),
+ copy=False)
# Store data range info as 3-tuple of values
self._dataRange = self.sender().getDataRange()
@@ -113,6 +115,53 @@ class CutPlane(Item3D, ColormapMixIn, InterpolationMixIn, PlaneMixIn):
"""
return self._dataRange
+ def getData(self, copy=True):
+ """Return 3D dataset.
+
+ :param bool copy:
+ True (default) to get a copy,
+ False to get the internal data (DO NOT modify!)
+ :return: The data set (or None if not set)
+ """
+ parent = self.parent()
+ return None if parent is None else parent.getData(copy=copy)
+
+ def _pickFull(self, context):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None:
+ return None
+
+ points = utils.segmentPlaneIntersect(
+ rayObject[0, :3],
+ rayObject[1, :3],
+ planeNorm=self.getNormal(),
+ planePt=self.getPoint())
+
+ if len(points) == 1: # Single intersection
+ if numpy.any(points[0] < 0.):
+ return None # Outside volume
+ z, y, x = int(points[0][2]), int(points[0][1]), int(points[0][0])
+
+ data = self.getData(copy=False)
+ if data is None:
+ return None # No dataset
+
+ depth, height, width = data.shape
+ if z < depth and y < height and x < width:
+ return PickingResult(self,
+ positions=[points[0]],
+ indices=([z], [y], [x]))
+ else:
+ return None # Outside image
+ else: # Either no intersection or segment and image are coplanar
+ return None
+
class Isosurface(Item3D):
"""Class representing an iso-surface in a :class:`ScalarField3D` item.
@@ -122,24 +171,28 @@ class Isosurface(Item3D):
def __init__(self, parent):
Item3D.__init__(self, parent=parent)
+ assert isinstance(parent, ScalarField3D)
+ parent.sigItemChanged.connect(self._scalarField3DChanged)
self._level = float('nan')
self._autoLevelFunction = None
self._color = rgba('#FFD700FF')
- self._data = None
+ self._updateScenePrimitive()
- # TODO register to ScalarField3D signal instead?
- def _setData(self, data, copy=True):
- """Set the data set from which to build the iso-surface.
+ def _scalarField3DChanged(self, event):
+ """Handle parent's ScalarField3D sigItemChanged"""
+ if event == ItemChangedType.DATA:
+ self._updateScenePrimitive()
- :param numpy.ndarray data: The 3D data set or None
- :param bool copy: True to make a copy, False to use as is if possible
- """
- if data is None:
- self._data = None
- else:
- self._data = numpy.array(data, copy=copy, order='C')
+ def getData(self, copy=True):
+ """Return 3D dataset.
- self._updateScenePrimitive()
+ :param bool copy:
+ True (default) to get a copy,
+ False to get the internal data (DO NOT modify!)
+ :return: The data set (or None if not set)
+ """
+ parent = self.parent()
+ return None if parent is None else parent.getData(copy=copy)
def getLevel(self):
"""Return the level of this iso-surface (float)"""
@@ -203,7 +256,9 @@ class Isosurface(Item3D):
"""Update underlying mesh"""
self._getScenePrimitive().children = []
- if self._data is None:
+ data = self.getData(copy=False)
+
+ if data is None:
if self.isAutoLevel():
self._level = float('nan')
@@ -211,7 +266,7 @@ class Isosurface(Item3D):
if self.isAutoLevel():
st = time.time()
try:
- level = float(self.getAutoLevelFunction()(self._data))
+ level = float(self.getAutoLevelFunction()(data))
except Exception:
module_ = self.getAutoLevelFunction().__module__
@@ -236,7 +291,7 @@ class Isosurface(Item3D):
st = time.time()
vertices, normals, indices = MarchingCubes(
- self._data,
+ data,
isolevel=self._level)
_logger.info('Computed iso-surface in %f s.', time.time() - st)
@@ -250,15 +305,73 @@ class Isosurface(Item3D):
indices=indices)
self._getScenePrimitive().children = [mesh]
+ def _pickFull(self, context):
+ """Perform picking in this item at given widget position.
+
+ :param PickContext context: Current picking context
+ :return: Object holding the results or None
+ :rtype: Union[None,PickingResult]
+ """
+ rayObject = context.getPickingSegment(frame=self._getScenePrimitive())
+ if rayObject is None:
+ return None
+ rayObject = rayObject[:, :3]
+
+ data = self.getData(copy=False)
+ bins = utils.segmentVolumeIntersect(
+ rayObject, numpy.array(data.shape) - 1)
+ if bins is None:
+ return None
-class ScalarField3D(DataItem3D):
+ # gather bin data
+ offsets = [(i, j, k) for i in (0, 1) for j in (0, 1) for k in (0, 1)]
+ indices = bins[:, numpy.newaxis, :] + offsets
+ binsData = data[indices[:, :, 0], indices[:, :, 1], indices[:, :, 2]]
+ # binsData.shape = nbins, 8
+ # TODO up-to this point everything can be done once for all isosurfaces
+
+ # check bin candidates
+ level = self.getLevel()
+ mask = numpy.logical_and(numpy.nanmin(binsData, axis=1) <= level,
+ level <= numpy.nanmax(binsData, axis=1))
+ bins = bins[mask]
+ binsData = binsData[mask]
+
+ if len(bins) == 0:
+ return None # No bin candidate
+
+ # do picking on candidates
+ intersections = []
+ depths = []
+ for currentBin, data in zip(bins, binsData):
+ mc = MarchingCubes(data.reshape(2, 2, 2), isolevel=level)
+ points = mc.get_vertices() + currentBin
+ triangles = points[mc.get_indices()]
+ t = utils.segmentTrianglesIntersection(rayObject, triangles)[1]
+ t = numpy.unique(t) # Duplicates happen on triangle edges
+ if len(t) != 0:
+ # Compute intersection points and get closest data point
+ points = t.reshape(-1, 1) * (rayObject[1] - rayObject[0]) + rayObject[0]
+ # Get closest data points by rounding to int
+ intersections.extend(points)
+ depths.extend(t)
+
+ if len(intersections) == 0:
+ return None # No intersected triangles
+
+ intersections = numpy.array(intersections)[numpy.argsort(depths)]
+ indices = numpy.transpose(numpy.round(intersections).astype(numpy.int))
+ return PickingResult(self, positions=intersections, indices=indices)
+
+
+class ScalarField3D(BaseNodeItem):
"""3D scalar field on a regular grid.
:param parent: The View widget this item belongs to.
"""
def __init__(self, parent=None):
- DataItem3D.__init__(self, parent=parent)
+ BaseNodeItem.__init__(self, parent=parent)
# Gives this item the shape of the data, no matter
# of the isosurface/cut plane size
@@ -327,10 +440,6 @@ class ScalarField3D(DataItem3D):
self._boundedGroup.shape = self._data.shape
- # Update iso-surfaces
- for isosurface in self.getIsosurfaces():
- isosurface._setData(self._data, copy=False)
-
self._updated(ItemChangedType.DATA)
def getData(self, copy=True):
@@ -401,7 +510,6 @@ class ScalarField3D(DataItem3D):
isosurface.setAutoLevelFunction(level)
else:
isosurface.setLevel(level)
- isosurface._setData(self._data, copy=False)
isosurface.sigItemChanged.connect(self._isosurfaceItemChanged)
self._isosurfaces.append(isosurface)
@@ -448,16 +556,11 @@ class ScalarField3D(DataItem3D):
key=lambda isosurface: - isosurface.getLevel())
self._isogroup.children = [iso._getScenePrimitive() for iso in sortedIso]
- def visit(self, included=True):
- """Generator visiting the ScalarField3D content.
+ # BaseNodeItem
- It first access cut planes and then isosurface
+ def getItems(self):
+ """Returns the list of items currently present in the ScalarField3D.
- :param bool included: True (default) to include self in visit
+ :rtype: tuple
"""
- if included:
- yield self
- for cutPlane in self.getCutPlanes():
- yield cutPlane
- for isosurface in self.getIsosurfaces():
- yield isosurface
+ return self.getCutPlanes() + self.getIsosurfaces()
diff --git a/silx/gui/plot3d/scene/event.py b/silx/gui/plot3d/scene/event.py
index 7b85434..98f8f8b 100644
--- a/silx/gui/plot3d/scene/event.py
+++ b/silx/gui/plot3d/scene/event.py
@@ -28,7 +28,7 @@ from __future__ import absolute_import, division, unicode_literals
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "25/07/2016"
+__date__ = "17/07/2018"
import logging
@@ -66,7 +66,7 @@ class Notifier(object):
try:
self._listeners.remove(listener)
except ValueError:
- _logger.warn('Trying to remove a listener that is not registered')
+ _logger.warning('Trying to remove a listener that is not registered')
def notify(self, *args, **kwargs):
"""Notify all registered listeners with the given parameters.
diff --git a/silx/gui/plot3d/scene/function.py b/silx/gui/plot3d/scene/function.py
index ba4c4ca..2921d48 100644
--- a/silx/gui/plot3d/scene/function.py
+++ b/silx/gui/plot3d/scene/function.py
@@ -28,7 +28,7 @@ from __future__ import absolute_import, division, unicode_literals
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "08/11/2016"
+__date__ = "17/07/2018"
import contextlib
@@ -428,7 +428,7 @@ class Colormap(event.Notifier, ProgramFunction):
range_ = float(range_[0]), float(range_[1])
if self.norm == 'log' and (range_[0] <= 0. or range_[1] <= 0.):
- _logger.warn(
+ _logger.warning(
"Log normalization and negative range: updating range.")
minPos = numpy.finfo(numpy.float32).tiny
range_ = max(range_[0], minPos), max(range_[1], minPos)
diff --git a/silx/gui/plot3d/scene/primitives.py b/silx/gui/plot3d/scene/primitives.py
index af00b6d..474581a 100644
--- a/silx/gui/plot3d/scene/primitives.py
+++ b/silx/gui/plot3d/scene/primitives.py
@@ -201,7 +201,7 @@ class Geometry(core.Elem):
array = self._glReadyArray(array, copy=copy)
if name not in self._ATTR_INFO:
- _logger.info('Not checking attribute %s dimensions', name)
+ _logger.debug('Not checking attribute %s dimensions', name)
else:
checks = self._ATTR_INFO[name]
diff --git a/silx/gui/plot3d/scene/transform.py b/silx/gui/plot3d/scene/transform.py
index 4061e81..1b82397 100644
--- a/silx/gui/plot3d/scene/transform.py
+++ b/silx/gui/plot3d/scene/transform.py
@@ -305,6 +305,44 @@ class Transform(event.Notifier):
# Multiplication with vectors
+ def transformPoints(self, points, direct=True, perspectiveDivide=False):
+ """Apply the transform to an array of points.
+
+ :param points: 2D array of N vectors of 3 or 4 coordinates
+ :param bool direct: Whether to apply the direct (True, the default)
+ or inverse (False) transform.
+ :param bool perspectiveDivide: Whether to apply the perspective divide
+ (True) or not (False, the default).
+ :return: The transformed points.
+ :rtype: numpy.ndarray of same shape as points.
+ """
+ if direct:
+ matrix = self.getMatrix(copy=False)
+ else:
+ matrix = self.getInverseMatrix(copy=False)
+
+ points = numpy.array(points, copy=False)
+ assert points.ndim == 2
+
+ points = numpy.transpose(points)
+
+ dimension = points.shape[0]
+ assert dimension in (3, 4)
+
+ if dimension == 3: # Add 4th coordinate
+ points = numpy.append(
+ points,
+ numpy.ones((1, points.shape[1]), dtype=points.dtype),
+ axis=0)
+
+ result = numpy.transpose(numpy.dot(matrix, points))
+
+ if perspectiveDivide:
+ mask = result[:, 3] != 0.
+ result[mask] /= result[mask, 3][:, numpy.newaxis]
+
+ return result[:, :3] if dimension == 3 else result
+
@staticmethod
def _prepareVector(vector, w):
"""Add 4th coordinate (w) to vector if missing."""
@@ -317,8 +355,6 @@ class Transform(event.Notifier):
def transformPoint(self, point, direct=True, perspectiveDivide=False):
"""Apply the transform to a point.
- If len(point) == 3, apply perspective divide if possible.
-
:param point: Array-like vector of 3 or 4 coordinates.
:param bool direct: Whether to apply the direct (True, the default)
or inverse (False) transform.
@@ -373,7 +409,7 @@ class Transform(event.Notifier):
_CUBE_CORNERS = numpy.array(list(itertools.product((0., 1.), repeat=3)),
dtype=numpy.float32)
- """Unit cube corners used by :meth:`transformRectangularBox`"""
+ """Unit cube corners used by :meth:`transformBounds`"""
def transformBounds(self, bounds, direct=True):
"""Apply the transform to an axes-aligned rectangular box.
diff --git a/silx/gui/plot3d/scene/utils.py b/silx/gui/plot3d/scene/utils.py
index 3752289..1224f5e 100644
--- a/silx/gui/plot3d/scene/utils.py
+++ b/silx/gui/plot3d/scene/utils.py
@@ -435,6 +435,186 @@ def boxPlaneIntersect(boxVertices, boxLineIndices, planeNorm, planePt):
return points
+def clipSegmentToBounds(segment, bounds):
+ """Clip segment to volume aligned with axes.
+
+ :param numpy.ndarray segment: (p0, p1)
+ :param numpy.ndarray bounds: (lower corner, upper corner)
+ :return: Either clipped (p0, p1) or None if outside volume
+ :rtype: Union[None,List[numpy.ndarray]]
+ """
+ segment = numpy.array(segment, copy=False)
+ bounds = numpy.array(bounds, copy=False)
+
+ p0, p1 = segment
+ # Get intersection points of ray with volume boundary planes
+ # Line equation: P = offset * delta + p0
+ delta = p1 - p0
+ deltaNotZero = numpy.array(delta, copy=True)
+ deltaNotZero[deltaNotZero == 0] = numpy.nan # Invalidated to avoid division by zero
+ offsets = ((bounds - p0) / deltaNotZero).reshape(-1)
+ points = offsets.reshape(-1, 1) * delta + p0
+
+ # Avoid precision errors by using bounds value
+ points.shape = 2, 3, 3 # Reshape 1 point per bound value
+ for dim in range(3):
+ points[:, dim, dim] = bounds[:, dim]
+ points.shape = -1, 3 # Set back to 2D array
+
+ # Find intersection points that are included in the volume
+ mask = numpy.logical_and(numpy.all(bounds[0] <= points, axis=1),
+ numpy.all(points <= bounds[1], axis=1))
+ intersections = numpy.unique(offsets[mask])
+ if len(intersections) != 2:
+ return None
+
+ intersections.sort()
+ # Do p1 first as p0 is need to compute it
+ if intersections[1] < 1: # clip p1
+ segment[1] = intersections[1] * delta + p0
+ if intersections[0] > 0: # clip p0
+ segment[0] = intersections[0] * delta + p0
+ return segment
+
+
+def segmentVolumeIntersect(segment, nbins):
+ """Get bin indices intersecting with segment
+
+ It should work with N dimensions.
+ Coordinate convention (z, y, x) or (x, y, z) should not matter
+ as long as segment and nbins are consistent.
+
+ :param numpy.ndarray segment:
+ Segment end points as a 2xN array of coordinates
+ :param numpy.ndarray nbins:
+ Shape of the volume with same coordinates order as segment
+ :return: List of bins indices as a 2D array or None if no bins
+ :rtype: Union[None,numpy.ndarray]
+ """
+ segment = numpy.asarray(segment)
+ nbins = numpy.asarray(nbins)
+
+ assert segment.ndim == 2
+ assert segment.shape[0] == 2
+ assert nbins.ndim == 1
+ assert segment.shape[1] == nbins.size
+
+ dim = len(nbins)
+
+ bounds = numpy.array((numpy.zeros_like(nbins), nbins))
+ segment = clipSegmentToBounds(segment, bounds)
+ if segment is None:
+ return None # Segment outside volume
+ p0, p1 = segment
+
+ # Get intersections
+
+ # Get coordinates of bin edges crossing the segment
+ clipped = numpy.ceil(numpy.clip(segment, 0, nbins))
+ start = numpy.min(clipped, axis=0)
+ stop = numpy.max(clipped, axis=0) # stop is NOT included
+ edgesByDim = [numpy.arange(start[i], stop[i]) for i in range(dim)]
+
+ # Line equation: P = t * delta + p0
+ delta = p1 - p0
+
+ # Get bin edge/line intersections as sorted points along the line
+ # Get corresponding line parameters
+ t = []
+ if numpy.all(0 <= p0) and numpy.all(p0 <= nbins):
+ t.append([0.]) # p0 within volume, add it
+ t += [(edgesByDim[i] - p0[i]) / delta[i] for i in range(dim) if delta[i] != 0]
+ if numpy.all(0 <= p1) and numpy.all(p1 <= nbins):
+ t.append([1.]) # p1 within volume, add it
+ t = numpy.concatenate(t)
+ t.sort(kind='mergesort')
+
+ # Remove duplicates
+ unique = numpy.ones((len(t),), dtype=bool)
+ numpy.not_equal(t[1:], t[:-1], out=unique[1:])
+ t = t[unique]
+
+ if len(t) < 2:
+ return None # Not enough intersection points
+
+ # bin edges/line intersection points
+ points = t.reshape(-1, 1) * delta + p0
+ centers = (points[:-1] + points[1:]) / 2.
+ bins = numpy.floor(centers).astype(numpy.int)
+ return bins
+
+
+def segmentTrianglesIntersection(segment, triangles):
+ """Check for segment/triangles intersection.
+
+ This is based on signed tetrahedron volume comparison.
+
+ See A. Kensler, A., Shirley, P.
+ Optimizing Ray-Triangle Intersection via Automated Search.
+ Symposium on Interactive Ray Tracing, vol. 0, p33-38 (2006)
+
+ :param numpy.ndarray segment:
+ Segment end points as a 2x3 array of coordinates
+ :param numpy.ndarray triangles:
+ Nx3x3 array of triangles
+ :return: (triangle indices, segment parameter, barycentric coord)
+ Indices of intersected triangles, "depth" along the segment
+ of the intersection point and barycentric coordinates of intersection
+ point in the triangle.
+ :rtype: List[numpy.ndarray]
+ """
+ # TODO triangles from vertices + indices
+ # TODO early rejection? e.g., check segment bbox vs triangle bbox
+ segment = numpy.asarray(segment)
+ assert segment.ndim == 2
+ assert segment.shape == (2, 3)
+
+ triangles = numpy.asarray(triangles)
+ assert triangles.ndim == 3
+ assert triangles.shape[1] == 3
+
+ # Test line/triangles intersection
+ d = segment[1] - segment[0]
+ t0s0 = segment[0] - triangles[:, 0, :]
+ edge01 = triangles[:, 1, :] - triangles[:, 0, :]
+ edge02 = triangles[:, 2, :] - triangles[:, 0, :]
+
+ dCrossEdge02 = numpy.cross(d, edge02)
+ t0s0CrossEdge01 = numpy.cross(t0s0, edge01)
+ volume = numpy.sum(dCrossEdge02 * edge01, axis=1)
+ del edge01
+ subVolumes = numpy.empty((len(triangles), 3), dtype=triangles.dtype)
+ subVolumes[:, 1] = numpy.sum(dCrossEdge02 * t0s0, axis=1)
+ del dCrossEdge02
+ subVolumes[:, 2] = numpy.sum(t0s0CrossEdge01 * d, axis=1)
+ subVolumes[:, 0] = volume - subVolumes[:, 1] - subVolumes[:, 2]
+ intersect = numpy.logical_or(
+ numpy.all(subVolumes >= 0., axis=1), # All positive
+ numpy.all(subVolumes <= 0., axis=1)) # All negative
+ intersect = numpy.where(intersect)[0] # Indices of intersected triangles
+
+ # Get barycentric coordinates
+ barycentric = subVolumes[intersect] / volume[intersect].reshape(-1, 1)
+ del subVolumes
+
+ # Test segment/triangles intersection
+ volAlpha = numpy.sum(t0s0CrossEdge01[intersect] * edge02[intersect], axis=1)
+ t = volAlpha / volume[intersect] # segment parameter of intersected triangles
+ del t0s0CrossEdge01
+ del edge02
+ del volAlpha
+ del volume
+
+ inSegmentMask = numpy.logical_and(t >= 0., t <= 1.)
+ intersect = intersect[inSegmentMask]
+ t = t[inSegmentMask]
+ barycentric = barycentric[inSegmentMask]
+
+ # Sort intersecting triangles by t
+ indices = numpy.argsort(t)
+ return intersect[indices], t[indices], barycentric[indices]
+
+
# Plane #######################################################################
class Plane(event.Notifier):
diff --git a/silx/gui/plot3d/setup.py b/silx/gui/plot3d/setup.py
index c477919..59c0230 100644
--- a/silx/gui/plot3d/setup.py
+++ b/silx/gui/plot3d/setup.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -36,7 +36,9 @@ def configuration(parent_package='', top_path=None):
config.add_subpackage('actions')
config.add_subpackage('items')
config.add_subpackage('scene')
+ config.add_subpackage('scene.test')
config.add_subpackage('tools')
+ config.add_subpackage('tools.test')
config.add_subpackage('test')
config.add_subpackage('utils')
return config
diff --git a/silx/gui/plot3d/test/__init__.py b/silx/gui/plot3d/test/__init__.py
index bd2f7c3..c58f307 100644
--- a/silx/gui/plot3d/test/__init__.py
+++ b/silx/gui/plot3d/test/__init__.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -30,7 +30,6 @@ __date__ = "09/11/2017"
import logging
-import os
import unittest
from silx.test.utils import test_options
@@ -39,7 +38,7 @@ _logger = logging.getLogger(__name__)
def suite():
- test_suite = unittest.TestSuite()
+ testsuite = unittest.TestSuite()
if not test_options.WITH_GL_TEST:
# Explicitly disabled tests
@@ -50,17 +49,21 @@ def suite():
def runTest(self):
self.skipTest(test_options.WITH_GL_TEST_REASON)
- test_suite.addTest(SkipPlot3DTest())
- return test_suite
+ testsuite.addTest(SkipPlot3DTest())
+ return testsuite
# Import here to avoid loading modules if tests are disabled
- from ..scene import test as test_scene
+ from ..scene.test import suite as sceneTestSuite
+ from ..tools.test import suite as toolsTestSuite
from .testGL import suite as testGLSuite
from .testScalarFieldView import suite as testScalarFieldViewSuite
+ from .testSceneWidgetPicking import suite as testSceneWidgetPickingSuite
- test_suite = unittest.TestSuite()
- test_suite.addTest(testGLSuite())
- test_suite.addTest(test_scene.suite())
- test_suite.addTest(testScalarFieldViewSuite())
- return test_suite
+ testsuite = unittest.TestSuite()
+ testsuite.addTest(testGLSuite())
+ testsuite.addTest(sceneTestSuite())
+ testsuite.addTest(testScalarFieldViewSuite())
+ testsuite.addTest(testSceneWidgetPickingSuite())
+ testsuite.addTest(toolsTestSuite())
+ return testsuite
diff --git a/silx/gui/plot3d/test/testGL.py b/silx/gui/plot3d/test/testGL.py
index 70f197f..ae167ab 100644
--- a/silx/gui/plot3d/test/testGL.py
+++ b/silx/gui/plot3d/test/testGL.py
@@ -32,7 +32,7 @@ import logging
import unittest
from silx.gui._glutils import gl, OpenGLWidget
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
diff --git a/silx/gui/plot3d/test/testScalarFieldView.py b/silx/gui/plot3d/test/testScalarFieldView.py
index 43d401f..d9c743b 100644
--- a/silx/gui/plot3d/test/testScalarFieldView.py
+++ b/silx/gui/plot3d/test/testScalarFieldView.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -34,7 +34,7 @@ import unittest
import numpy
from silx.utils.testutils import ParametricTestCase
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
from silx.gui.plot3d.ScalarFieldView import ScalarFieldView
@@ -52,6 +52,13 @@ class TestScalarFieldView(TestCaseQt, ParametricTestCase):
self.widget = ScalarFieldView()
self.widget.show()
+ paramTreeWidget = TreeView()
+ paramTreeWidget.setSfView(self.widget)
+
+ dock = qt.QDockWidget()
+ dock.setWidget(paramTreeWidget)
+ self.widget.addDockWidget(qt.Qt.BottomDockWidgetArea, dock)
+
# Commented as it slows down the tests
# self.qWaitForWindowExposed(self.widget)
@@ -102,6 +109,24 @@ class TestScalarFieldView(TestCaseQt, ParametricTestCase):
self.widget.setData(data, copy=True)
self.qapp.processEvents()
+ def testIsoSliderNormalization(self):
+ """Test set TreeView with a different isoslider normalization"""
+ data = self._buildData(size=32)
+
+ self.widget.setData(data)
+ self.widget.addIsosurface(0.5, (1., 0., 0., 0.5))
+ self.widget.addIsosurface(0.7, qt.QColor('green'))
+ self.qapp.processEvents()
+
+ # Add a second TreeView
+ paramTreeWidget = TreeView(self.widget)
+ paramTreeWidget.setIsoLevelSliderNormalization('arcsinh')
+ paramTreeWidget.setSfView(self.widget)
+
+ dock = qt.QDockWidget()
+ dock.setWidget(paramTreeWidget)
+ self.widget.addDockWidget(qt.Qt.BottomDockWidgetArea, dock)
+
def suite():
test_suite = unittest.TestSuite()
diff --git a/silx/gui/plot3d/test/testSceneWidgetPicking.py b/silx/gui/plot3d/test/testSceneWidgetPicking.py
new file mode 100644
index 0000000..d0c6467
--- /dev/null
+++ b/silx/gui/plot3d/test/testSceneWidgetPicking.py
@@ -0,0 +1,267 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+# ###########################################################################*/
+"""Test SceneWidget picking feature"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "03/10/2018"
+
+
+import unittest
+
+import numpy
+
+from silx.utils.testutils import ParametricTestCase
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui import qt
+
+from silx.gui.plot3d.SceneWidget import SceneWidget, items
+
+
+class TestSceneWidgetPicking(TestCaseQt, ParametricTestCase):
+ """Tests SceneWidget picking feature"""
+
+ def setUp(self):
+ super(TestSceneWidgetPicking, self).setUp()
+ self.widget = SceneWidget()
+ self.widget.resize(300, 300)
+ self.widget.show()
+ # self.qWaitForWindowExposed(self.widget)
+
+ def tearDown(self):
+ self.qapp.processEvents()
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.widget.close()
+ del self.widget
+ super(TestSceneWidgetPicking, self).tearDown()
+
+ def _widgetCenter(self):
+ """Returns widget center"""
+ size = self.widget.size()
+ return size.width() // 2, size.height() // 2
+
+ def testPickImage(self):
+ """Test picking of ImageData and ImageRgba items"""
+ imageData = items.ImageData()
+ imageData.setData(numpy.arange(100).reshape(10, 10))
+
+ imageRgba = items.ImageRgba()
+ imageRgba.setData(
+ numpy.arange(300, dtype=numpy.uint8).reshape(10, 10, 3))
+
+ for item in (imageData, imageRgba):
+ with self.subTest(item=item.__class__.__name__):
+ # Add item
+ self.widget.clearItems()
+ self.widget.addItem(item)
+ self.widget.resetZoom('front')
+ self.qapp.processEvents()
+
+ # Picking on data (at widget center)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+
+ self.assertEqual(len(picking), 1)
+ self.assertIs(picking[0].getItem(), item)
+ self.assertEqual(picking[0].getPositions('ndc').shape, (1, 3))
+ data = picking[0].getData()
+ self.assertEqual(len(data), 1)
+ self.assertTrue(numpy.array_equal(
+ data,
+ item.getData()[picking[0].getIndices()]))
+
+ # Picking outside data
+ picking = list(self.widget.pickItems(1, 1))
+ self.assertEqual(len(picking), 0)
+
+ def testPickScatter(self):
+ """Test picking of Scatter2D and Scatter3D items"""
+ data = numpy.arange(100)
+
+ scatter2d = items.Scatter2D()
+ scatter2d.setData(x=data, y=data, value=data)
+
+ scatter3d = items.Scatter3D()
+ scatter3d.setData(x=data, y=data, z=data, value=data)
+
+ for item in (scatter2d, scatter3d):
+ with self.subTest(item=item.__class__.__name__):
+ # Add item
+ self.widget.clearItems()
+ self.widget.addItem(item)
+ self.widget.resetZoom('front')
+ self.qapp.processEvents()
+
+ # Picking on data (at widget center)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+
+ self.assertEqual(len(picking), 1)
+ self.assertIs(picking[0].getItem(), item)
+ nbPos = len(picking[0].getPositions('ndc'))
+ data = picking[0].getData()
+ self.assertEqual(nbPos, len(data))
+ self.assertTrue(numpy.array_equal(
+ data,
+ item.getValues()[picking[0].getIndices()]))
+
+ # Picking outside data
+ picking = list(self.widget.pickItems(1, 1))
+ self.assertEqual(len(picking), 0)
+
+ def testPickScalarField3D(self):
+ """Test picking of volume CutPlane and Isosurface items"""
+ volume = self.widget.add3DScalarField(
+ numpy.arange(10**3, dtype=numpy.float32).reshape(10, 10, 10))
+ self.widget.resetZoom('front')
+
+ cutplane = volume.getCutPlanes()[0]
+ cutplane.getColormap().setVRange(0, 100)
+ cutplane.setNormal((0, 0, 1))
+
+ # Picking on data without anything displayed
+ cutplane.setVisible(False)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+ self.assertEqual(len(picking), 0)
+
+ # Picking on data with the cut plane
+ cutplane.setVisible(True)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+
+ self.assertEqual(len(picking), 1)
+ self.assertIs(picking[0].getItem(), cutplane)
+ data = picking[0].getData()
+ self.assertEqual(len(data), 1)
+ self.assertEqual(picking[0].getPositions().shape, (1, 3))
+ self.assertTrue(numpy.array_equal(
+ data,
+ volume.getData(copy=False)[picking[0].getIndices()]))
+
+ # Picking on data with an isosurface
+ isosurface = volume.addIsosurface(level=500, color=(1., 0., 0., .5))
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+ self.assertEqual(len(picking), 2)
+ self.assertIs(picking[0].getItem(), cutplane)
+ self.assertIs(picking[1].getItem(), isosurface)
+ self.assertEqual(picking[1].getPositions().shape, (1, 3))
+ data = picking[1].getData()
+ self.assertEqual(len(data), 1)
+ self.assertTrue(numpy.array_equal(
+ data,
+ volume.getData(copy=False)[picking[1].getIndices()]))
+
+ # Picking outside data
+ picking = list(self.widget.pickItems(1, 1))
+ self.assertEqual(len(picking), 0)
+
+ def testPickMesh(self):
+ """Test picking of Mesh items"""
+
+ triangles = items.Mesh()
+ triangles.setData(
+ position=((0, 0, 0), (1, 0, 0), (1, 1, 0),
+ (0, 0, 0), (1, 1, 0), (0, 1, 0)),
+ color=(1, 0, 0, 1),
+ mode='triangles')
+ triangleStrip = items.Mesh()
+ triangleStrip.setData(
+ position=(((1, 0, 0), (0, 0, 0), (1, 1, 0), (0, 1, 0))),
+ color=(0, 1, 0, 1),
+ mode='triangle_strip')
+ triangleFan = items.Mesh()
+ triangleFan.setData(
+ position=((0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0)),
+ color=(0, 0, 1, 1),
+ mode='fan')
+
+ for item in (triangles, triangleStrip, triangleFan):
+ with self.subTest(mode=item.getDrawMode()):
+ # Add item
+ self.widget.clearItems()
+ self.widget.addItem(item)
+ self.widget.resetZoom('front')
+ self.qapp.processEvents()
+
+ # Picking on data (at widget center)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+
+ self.assertEqual(len(picking), 1)
+ self.assertIs(picking[0].getItem(), item)
+ nbPos = len(picking[0].getPositions())
+ data = picking[0].getData()
+ self.assertEqual(nbPos, len(data))
+ self.assertTrue(numpy.array_equal(
+ data,
+ item.getPositionData()[picking[0].getIndices()]))
+
+ # Picking outside data
+ picking = list(self.widget.pickItems(1, 1))
+ self.assertEqual(len(picking), 0)
+
+ def testPickCylindricalMesh(self):
+ """Test picking of Box, Cylinder and Hexagon items"""
+
+ positions = numpy.array(((0., 0., 0.), (1., 1., 0.), (2., 2., 0.)))
+ box = items.Box()
+ box.setData(position=positions)
+ cylinder = items.Cylinder()
+ cylinder.setData(position=positions)
+ hexagon = items.Hexagon()
+ hexagon.setData(position=positions)
+
+ for item in (box, cylinder, hexagon):
+ with self.subTest(item=item.__class__.__name__):
+ # Add item
+ self.widget.clearItems()
+ self.widget.addItem(item)
+ self.widget.resetZoom('front')
+ self.qapp.processEvents()
+
+ # Picking on data (at widget center)
+ picking = list(self.widget.pickItems(*self._widgetCenter()))
+
+ self.assertEqual(len(picking), 1)
+ self.assertIs(picking[0].getItem(), item)
+ nbPos = len(picking[0].getPositions())
+ data = picking[0].getData()
+ print(item.__class__.__name__, [positions[1]], data)
+ self.assertTrue(numpy.all(numpy.equal(positions[1], data)))
+ self.assertEqual(nbPos, len(data))
+ self.assertTrue(numpy.array_equal(
+ data,
+ item.getPosition()[picking[0].getIndices()]))
+
+ # Picking outside data
+ picking = list(self.widget.pickItems(1, 1))
+ self.assertEqual(len(picking), 0)
+
+
+def suite():
+ testsuite = unittest.TestSuite()
+ testsuite.addTest(
+ unittest.defaultTestLoader.loadTestsFromTestCase(
+ TestSceneWidgetPicking))
+ return testsuite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/plot3d/tools/PositionInfoWidget.py b/silx/gui/plot3d/tools/PositionInfoWidget.py
new file mode 100644
index 0000000..b4d2c05
--- /dev/null
+++ b/silx/gui/plot3d/tools/PositionInfoWidget.py
@@ -0,0 +1,209 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides a widget that displays data values of a SceneWidget.
+"""
+
+from __future__ import absolute_import
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "01/10/2018"
+
+
+import logging
+import weakref
+
+from ... import qt
+from .. import items
+from ..items import volume
+from ..SceneWidget import SceneWidget
+
+
+_logger = logging.getLogger(__name__)
+
+
+class PositionInfoWidget(qt.QWidget):
+ """Widget displaying information about picked position
+
+ :param QWidget parent: See :class:`QWidget`
+ """
+
+ def __init__(self, parent=None):
+ super(PositionInfoWidget, self).__init__(parent)
+ self._sceneWidgetRef = None
+
+ self.setToolTip("Double-click on a data point to show its value")
+ layout = qt.QBoxLayout(qt.QBoxLayout.LeftToRight, self)
+
+ self._xLabel = self._addInfoField('X')
+ self._yLabel = self._addInfoField('Y')
+ self._zLabel = self._addInfoField('Z')
+ self._dataLabel = self._addInfoField('Data')
+ self._itemLabel = self._addInfoField('Item')
+
+ layout.addStretch(1)
+
+ def _addInfoField(self, label):
+ """Add a description: info widget to this widget
+
+ :param str label: Description label
+ :return: The QLabel used to display the info
+ :rtype: QLabel
+ """
+ subLayout = qt.QHBoxLayout()
+ subLayout.setContentsMargins(0, 0, 0, 0)
+
+ subLayout.addWidget(qt.QLabel(label + ':'))
+
+ widget = qt.QLabel('-')
+ widget.setAlignment(qt.Qt.AlignLeft | qt.Qt.AlignVCenter)
+ widget.setTextInteractionFlags(qt.Qt.TextSelectableByMouse)
+ widget.setMinimumWidth(widget.fontMetrics().width('#######'))
+ subLayout.addWidget(widget)
+
+ subLayout.addStretch(1)
+
+ layout = self.layout()
+ layout.addLayout(subLayout)
+ return widget
+
+ def getSceneWidget(self):
+ """Returns the associated :class:`SceneWidget` or None.
+
+ :rtype: Union[None,~silx.gui.plot3d.SceneWidget.SceneWidget]
+ """
+ if self._sceneWidgetRef is None:
+ return None
+ else:
+ return self._sceneWidgetRef()
+
+ def setSceneWidget(self, widget):
+ """Set the associated :class:`SceneWidget`
+
+ :param ~silx.gui.plot3d.SceneWidget.SceneWidget widget:
+ 3D scene for which to display information
+ """
+ if widget is not None and not isinstance(widget, SceneWidget):
+ raise ValueError("widget must be a SceneWidget or None")
+
+ previous = self.getSceneWidget()
+ if previous is not None:
+ previous.removeEventFilter(self)
+
+ if widget is None:
+ self._sceneWidgetRef = None
+ else:
+ widget.installEventFilter(self)
+ self._sceneWidgetRef = weakref.ref(widget)
+
+ def eventFilter(self, watched, event):
+ # Filter events of SceneWidget to react on mouse events.
+ if (event.type() == qt.QEvent.MouseButtonDblClick and
+ event.button() == qt.Qt.LeftButton):
+ self.pick(event.x(), event.y())
+
+ return super(PositionInfoWidget, self).eventFilter(watched, event)
+
+ def clear(self):
+ """Clean-up displayed values"""
+ for widget in (self._xLabel, self._yLabel, self._zLabel,
+ self._dataLabel, self._itemLabel):
+ widget.setText('-')
+
+ _SUPPORTED_ITEMS = (items.Scatter3D,
+ items.Scatter2D,
+ items.ImageData,
+ items.ImageRgba,
+ items.Mesh,
+ items.Box,
+ items.Cylinder,
+ items.Hexagon,
+ volume.CutPlane,
+ volume.Isosurface)
+ """Type of items that are picked"""
+
+ def _isSupportedItem(self, item):
+ """Returns True if item is of supported type
+
+ :param Item3D item: The Item3D to check
+ :rtype: bool
+ """
+ return isinstance(item, self._SUPPORTED_ITEMS)
+
+ def pick(self, x, y):
+ """Pick items in the associated SceneWidget and display result
+
+ Only the closest point is displayed.
+
+ :param int x: X coordinate in pixel in the SceneWidget
+ :param int y: Y coordinate in pixel in the SceneWidget
+ """
+ self.clear()
+
+ sceneWidget = self.getSceneWidget()
+ if sceneWidget is None: # No associated widget
+ _logger.info('Picking without associated SceneWidget')
+ return
+
+ # Find closest (and latest in the tree) supported item
+ closestNdcZ = float('inf')
+ picking = None
+ for result in sceneWidget.pickItems(x, y,
+ condition=self._isSupportedItem):
+ ndcZ = result.getPositions('ndc', copy=False)[0, 2]
+ if ndcZ <= closestNdcZ:
+ closestNdcZ = ndcZ
+ picking = result
+
+ if picking is None:
+ return # No picked item
+
+ item = picking.getItem()
+ self._itemLabel.setText(item.getLabel())
+ positions = picking.getPositions('scene', copy=False)
+ x, y, z = positions[0]
+ self._xLabel.setText("%g" % x)
+ self._yLabel.setText("%g" % y)
+ self._zLabel.setText("%g" % z)
+
+ data = picking.getData(copy=False)
+ if data is not None:
+ data = data[0]
+ if hasattr(data, '__len__'):
+ text = ' '.join(["%.3g"] * len(data)) % tuple(data)
+ else:
+ text = "%g" % data
+ self._dataLabel.setText(text)
+
+ def updateInfo(self):
+ """Update information according to cursor position"""
+ widget = self.getSceneWidget()
+ if widget is None:
+ _logger.info('Update without associated SceneWidget')
+ self.clear()
+ return
+
+ position = widget.mapFromGlobal(qt.QCursor.pos())
+ self.pick(position.x(), position.y())
diff --git a/silx/gui/plot3d/scene/setup.py b/silx/gui/plot3d/tools/test/__init__.py
index ff4c0a6..2dbc0ab 100644
--- a/silx/gui/plot3d/scene/setup.py
+++ b/silx/gui/plot3d/tools/test/__init__.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -22,20 +22,20 @@
# THE SOFTWARE.
#
# ###########################################################################*/
-__authors__ = ["T. Vincent"]
-__license__ = "MIT"
-__date__ = "25/07/2016"
+"""plot3d tools test suite."""
-from numpy.distutils.misc_util import Configuration
+from __future__ import absolute_import
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "03/10/2018"
-def configuration(parent_package='', top_path=None):
- config = Configuration('scene', parent_package, top_path)
- config.add_subpackage('test')
- return config
+import unittest
+from .testPositionInfoWidget import suite as testPositionInfoWidgetSuite
-if __name__ == "__main__":
- from numpy.distutils.core import setup
- setup(configuration=configuration)
+def suite():
+ testsuite = unittest.TestSuite()
+ testsuite.addTest(testPositionInfoWidgetSuite())
+ return testsuite
diff --git a/silx/gui/plot3d/tools/test/testPositionInfoWidget.py b/silx/gui/plot3d/tools/test/testPositionInfoWidget.py
new file mode 100644
index 0000000..4520a2a
--- /dev/null
+++ b/silx/gui/plot3d/tools/test/testPositionInfoWidget.py
@@ -0,0 +1,101 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+# ###########################################################################*/
+"""Test PositionInfoWidget"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "03/10/2018"
+
+
+import unittest
+
+import numpy
+
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui import qt
+
+from silx.gui.plot3d.SceneWidget import SceneWidget
+from silx.gui.plot3d.tools.PositionInfoWidget import PositionInfoWidget
+
+
+class TestPositionInfoWidget(TestCaseQt):
+ """Tests PositionInfoWidget"""
+
+ def setUp(self):
+ super(TestPositionInfoWidget, self).setUp()
+ self.sceneWidget = SceneWidget()
+ self.sceneWidget.resize(300, 300)
+ self.sceneWidget.show()
+
+ self.positionInfoWidget = PositionInfoWidget()
+ self.positionInfoWidget.setSceneWidget(self.sceneWidget)
+ self.positionInfoWidget.show()
+ self.qWaitForWindowExposed(self.positionInfoWidget)
+
+ # self.qWaitForWindowExposed(self.widget)
+
+ def tearDown(self):
+ self.qapp.processEvents()
+
+ self.sceneWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.sceneWidget.close()
+ del self.sceneWidget
+
+ self.positionInfoWidget.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.positionInfoWidget.close()
+ del self.positionInfoWidget
+ super(TestPositionInfoWidget, self).tearDown()
+
+ def test(self):
+ """Test PositionInfoWidget"""
+ self.assertIs(self.positionInfoWidget.getSceneWidget(),
+ self.sceneWidget)
+
+ data = numpy.arange(100)
+ self.sceneWidget.add2DScatter(x=data, y=data, value=data)
+ self.sceneWidget.resetZoom('front')
+
+ # Double click at the center
+ self.mouseDClick(self.sceneWidget, button=qt.Qt.LeftButton)
+
+ # Clear displayed value
+ self.positionInfoWidget.clear()
+
+ # Update info from API
+ self.positionInfoWidget.pick(x=10, y=10)
+
+ # Remove SceneWidget
+ self.positionInfoWidget.setSceneWidget(None)
+
+
+def suite():
+ testsuite = unittest.TestSuite()
+ testsuite.addTest(
+ unittest.defaultTestLoader.loadTestsFromTestCase(
+ TestPositionInfoWidget))
+ return testsuite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/qt/__init__.py b/silx/gui/qt/__init__.py
index f7bc916..b8c6cdd 100644
--- a/silx/gui/qt/__init__.py
+++ b/silx/gui/qt/__init__.py
@@ -25,12 +25,11 @@
"""Common wrapper over Python Qt bindings:
- `PyQt5 <http://pyqt.sourceforge.net/Docs/PyQt5/>`_
+- `PySide2 <https://wiki.qt.io/Qt_for_Python>`_
- `PyQt4 <http://pyqt.sourceforge.net/Docs/PyQt4/>`_
-- `PySide <http://www.pyside.org>`_
-- `PySide2 <https://wiki.qt.io/PySide2>`_
If a Qt binding is already loaded, it will use it, otherwise the different
-Qt bindings are tried in this order: PyQt5, PyQt4, PySide, PySide2.
+Qt bindings are tried in this order: PyQt5, PyQt4, PySide2.
The name of the loaded Qt binding is stored in the BINDING variable.
@@ -48,7 +47,7 @@ Example of using :mod:`silx.gui.qt` module:
For an alternative solution providing a structured namespace,
see `qtpy <https://pypi.python.org/pypi/QtPy/>`_ which
-provides the namespace of PyQt5 over PyQt4 and PySide.
+provides the namespace of PyQt5 over PyQt4, PySide and PySide2.
"""
from ._qt import * # noqa
diff --git a/silx/gui/qt/_pyside_dynamic.py b/silx/gui/qt/_pyside_dynamic.py
index a9246b9..13d1a9d 100644
--- a/silx/gui/qt/_pyside_dynamic.py
+++ b/silx/gui/qt/_pyside_dynamic.py
@@ -39,11 +39,15 @@ from __future__ import (print_function, division, unicode_literals,
absolute_import)
import logging
+import sys
-from PySide.QtCore import QMetaObject
-from PySide.QtUiTools import QUiLoader
-from PySide.QtGui import QMainWindow
-
+if "PySide.QtCore" in sys.modules:
+ from PySide.QtCore import QMetaObject
+ from PySide.QtUiTools import QUiLoader
+else: # PySide2
+ from PySide2.QtCore import QMetaObject, Property, Qt
+ from PySide2.QtWidgets import QFrame
+ from PySide2.QtUiTools import QUiLoader
_logger = logging.getLogger(__name__)
@@ -57,7 +61,7 @@ class UiLoader(QUiLoader):
create a new instance of the top-level widget, but creates the user
interface in an existing instance of the top-level class.
- This mimics the behaviour of :func:`PyQt4.uic.loadUi`.
+ This mimics the behaviour of :func:`PyQt*.uic.loadUi`.
"""
def __init__(self, baseinstance, customWidgets=None):
@@ -113,7 +117,7 @@ class UiLoader(QUiLoader):
if self.baseinstance:
# set an attribute for the new child widget on the base
- # instance, just like PyQt4.uic.loadUi does.
+ # instance, just like PyQt*.uic.loadUi does.
setattr(self.baseinstance, name, widget)
# this outputs the various widget names, e.g.
@@ -123,6 +127,43 @@ class UiLoader(QUiLoader):
return widget
+if "PySide2.QtCore" in sys.modules:
+
+ class _Line(QFrame):
+ """Widget to use as 'Line' Qt designer"""
+ def __init__(self, parent=None):
+ super(_Line, self).__init__(parent)
+ self.setFrameShape(QFrame.HLine)
+ self.setFrameShadow(QFrame.Sunken)
+
+ def getOrientation(self):
+ shape = self.frameShape()
+ if shape == QFrame.HLine:
+ return Qt.Horizontal
+ elif shape == QFrame.VLine:
+ return Qt.Vertical
+ else:
+ raise RuntimeError("Wrong shape: %d", shape)
+
+ def setOrientation(self, orientation):
+ if orientation == Qt.Horizontal:
+ self.setFrameShape(QFrame.HLine)
+ elif orientation == Qt.Vertical:
+ self.setFrameShape(QFrame.VLine)
+ else:
+ raise ValueError("Unsupported orientation %s" % str(orientation))
+
+ orientation = Property("Qt::Orientation", getOrientation, setOrientation)
+
+
+ CUSTOM_WIDGETS = {"Line": _Line}
+ """Default custom widgets for `loadUi`"""
+
+else: # PySide support
+ CUSTOM_WIDGETS = {}
+ """Default custom widgets for `loadUi`"""
+
+
def loadUi(uifile, baseinstance=None, package=None, resource_suffix=None):
"""
Dynamically load a user interface from the given ``uifile``.
@@ -152,7 +193,7 @@ def loadUi(uifile, baseinstance=None, package=None, resource_suffix=None):
_logger.warning(
"loadUi resource_suffix parameter not implemented with PySide")
- loader = UiLoader(baseinstance)
+ loader = UiLoader(baseinstance, customWidgets=CUSTOM_WIDGETS)
widget = loader.load(uifile)
QMetaObject.connectSlotsByName(widget)
return widget
diff --git a/silx/gui/qt/_qt.py b/silx/gui/qt/_qt.py
index 6bf7d93..a4b9007 100644
--- a/silx/gui/qt/_qt.py
+++ b/silx/gui/qt/_qt.py
@@ -22,21 +22,7 @@
# THE SOFTWARE.
#
# ###########################################################################*/
-"""Common wrapper over Python Qt bindings:
-
-- `PyQt5 <http://pyqt.sourceforge.net/Docs/PyQt5/>`_,
-- `PyQt4 <http://pyqt.sourceforge.net/Docs/PyQt4/>`_ or
-- `PySide <http://www.pyside.org>`_.
-
-If a Qt binding is already loaded, it will use it, otherwise the different
-Qt bindings are tried in this order: PySide2, PyQt4, PySide, PyQt5.
-
-The name of the loaded Qt binding is stored in the BINDING variable.
-
-For an alternative solution providing a structured namespace,
-see `qtpy <https://pypi.python.org/pypi/QtPy/>`_ which
-provides the namespace of PyQt5 over PyQt4, PySide and PySide2.
-"""
+"""Load Qt binding"""
__authors__ = ["V.A. Sole"]
__license__ = "MIT"
@@ -47,15 +33,17 @@ import logging
import sys
import traceback
+from ...utils.deprecation import deprecated_warning
+
_logger = logging.getLogger(__name__)
BINDING = None
-"""The name of the Qt binding in use: PyQt5, 'PyQt4, PySide2 or PySide."""
+"""The name of the Qt binding in use: PyQt5, PyQt4 or PySide2."""
QtBinding = None # noqa
-"""The Qt binding module in use: PyQt5, PyQt4, PySide2 or PySide."""
+"""The Qt binding module in use: PyQt5, PyQt4 or PySide2."""
HAS_SVG = False
"""True if Qt provides support for Scalable Vector Graphics (QtSVG)."""
@@ -84,17 +72,17 @@ else: # Then try Qt bindings
import PyQt4 # noqa
except ImportError:
try:
- import PySide # noqa
+ import PySide2 # noqa
except ImportError:
try:
- import PySide2 # noqa
+ import PySide # noqa
except ImportError:
raise ImportError(
'No Qt wrapper found. Install PyQt5, PyQt4 or PySide2.')
else:
- BINDING = 'PySide2'
+ BINDING = 'PySide'
else:
- BINDING = 'PySide'
+ BINDING = 'PySide2'
else:
BINDING = 'PyQt4'
else:
@@ -103,6 +91,9 @@ else: # Then try Qt bindings
if BINDING == 'PyQt4':
_logger.debug('Using PyQt4 bindings')
+ deprecated_warning("Qt Binding", "PyQt4",
+ replacement='PyQt5',
+ since_version='0.9.0')
if sys.version_info < (3, ):
try:
@@ -110,6 +101,11 @@ if BINDING == 'PyQt4':
sip.setapi("QString", 2)
sip.setapi("QVariant", 2)
+ sip.setapi('QDate', 2)
+ sip.setapi('QDateTime', 2)
+ sip.setapi('QTextStream', 2)
+ sip.setapi('QTime', 2)
+ sip.setapi('QUrl', 2)
except:
_logger.warning("Cannot set sip API")
@@ -144,6 +140,9 @@ if BINDING == 'PyQt4':
elif BINDING == 'PySide':
_logger.debug('Using PySide bindings')
+ deprecated_warning("Qt Binding", "PySide",
+ replacement='PySide2',
+ since_version='0.9.0')
import PySide as QtBinding # noqa
@@ -238,7 +237,7 @@ elif BINDING == 'PySide2':
HAS_SVG = True
# Import loadUi wrapper for PySide2
- # TODO from ._pyside_dynamic import loadUi # noqa
+ from ._pyside_dynamic import loadUi # noqa
pyqtSignal = Signal
diff --git a/silx/gui/qt/_utils.py b/silx/gui/qt/_utils.py
index be55465..912f08c 100644
--- a/silx/gui/qt/_utils.py
+++ b/silx/gui/qt/_utils.py
@@ -36,8 +36,11 @@ from . import _qt as qt
def supportedImageFormats():
"""Return a set of string of file format extensions supported by the
Qt runtime."""
- if sys.version_info[0] < 3 or qt.BINDING in ('PySide', 'PySide2'):
+ if sys.version_info[0] < 3 or qt.BINDING == 'PySide':
convert = str
+ elif qt.BINDING == 'PySide2':
+ def convert(data):
+ return str(data.data(), 'ascii')
else:
convert = lambda data: str(data, 'ascii')
formats = qt.QImageReader.supportedImageFormats()
diff --git a/silx/gui/qt/inspect.py b/silx/gui/qt/inspect.py
new file mode 100644
index 0000000..c6c2cbe
--- /dev/null
+++ b/silx/gui/qt/inspect.py
@@ -0,0 +1,82 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides functions to access Qt C++ object state:
+
+- :func:`isValid` to check whether a QObject C++ pointer is valid.
+- :func:`createdByPython` to check if a QObject was created from Python.
+- :func:`ownedByPython` to check if a QObject is currently owned by Python.
+"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "08/10/2018"
+
+
+from . import _qt as qt
+
+
+if qt.BINDING in ('PyQt4', 'PyQt5'):
+ if qt.BINDING == 'PyQt5':
+ try:
+ from PyQt5.sip import isdeleted as _isdeleted # noqa
+ from PyQt5.sip import ispycreated as createdByPython # noqa
+ from PyQt5.sip import ispyowned as ownedByPython # noqa
+ except ImportError:
+ from sip import isdeleted as _isdeleted # noqa
+ from sip import ispycreated as createdByPython # noqa
+ from sip import ispyowned as ownedByPython # noqa
+
+ else: # PyQt4
+ from sip import isdeleted as _isdeleted # noqa
+ from sip import ispycreated as createdByPython # noqa
+ from sip import ispyowned as ownedByPython # noqa
+
+ def isValid(obj):
+ """Returns True if underlying C++ object is valid.
+
+ :param QObject obj:
+ :rtype: bool
+ """
+ return not _isdeleted(obj)
+
+elif qt.BINDING == 'PySide2':
+ from PySide2.shiboken2 import isValid # noqa
+ from PySide2.shiboken2 import createdByPython # noqa
+ from PySide2.shiboken2 import ownedByPython # noqa
+
+elif qt.BINDING == 'PySide':
+ try: # Available through PySide
+ from PySide.shiboken import isValid # noqa
+ from PySide.shiboken import createdByPython # noqa
+ from PySide.shiboken import ownedByPython # noqa
+ except ImportError: # Available through standalone shiboken package
+ from Shiboken.shiboken import isValid # noqa
+ from Shiboken.shiboken import createdByPython # noqa
+ from Shiboken.shiboken import ownedByPython # noqa
+
+else:
+ raise ImportError("Unsupported Qt binding %s" % qt.BINDING)
+
+__all__ = ['isValid', 'createdByPython', 'ownedByPython']
diff --git a/silx/gui/test/test_colors.py b/silx/gui/test/test_colors.py
index d7c205e..e980068 100644
--- a/silx/gui/test/test_colors.py
+++ b/silx/gui/test/test_colors.py
@@ -29,7 +29,7 @@ from __future__ import absolute_import
__authors__ = ["H.Payno"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "05/10/2018"
import unittest
import numpy
@@ -184,6 +184,17 @@ class TestDictAPI(unittest.TestCase):
with self.assertRaises(ValueError):
Colormap._fromDict(clm_dict)
+ def testNumericalColors(self):
+ """Make sure the old API using colors=int was supported"""
+ clm_dict = {
+ 'name': 'temperature',
+ 'vmin': 1.0,
+ 'vmax': 2.0,
+ 'colors': 256,
+ 'autoscale': False
+ }
+ Colormap._fromDict(clm_dict)
+
class TestObjectAPI(ParametricTestCase):
"""Test the new Object API of the colormap"""
@@ -357,6 +368,11 @@ class TestObjectAPI(ParametricTestCase):
with self.assertRaises(NotEditableError):
colormap.restoreState(state)
+ def testBadColorsType(self):
+ """Make sure colors can't be something else than an array"""
+ with self.assertRaises(TypeError):
+ Colormap(name='temperature', colors=256)
+
class TestPreferredColormaps(unittest.TestCase):
"""Test get|setPreferredColormaps functions"""
diff --git a/silx/gui/test/test_console.py b/silx/gui/test/test_console.py
index 7c25372..7db5f12 100644
--- a/silx/gui/test/test_console.py
+++ b/silx/gui/test/test_console.py
@@ -33,7 +33,7 @@ __date__ = "05/12/2016"
import unittest
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
try:
diff --git a/silx/gui/test/test_icons.py b/silx/gui/test/test_icons.py
index d747761..1757f30 100644
--- a/silx/gui/test/test_icons.py
+++ b/silx/gui/test/test_icons.py
@@ -38,7 +38,7 @@ import os
import silx.resources
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import icons
diff --git a/silx/gui/test/test_qt.py b/silx/gui/test/test_qt.py
index 3a89a33..0d10620 100644
--- a/silx/gui/test/test_qt.py
+++ b/silx/gui/test/test_qt.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,9 +33,13 @@ import os.path
import unittest
from silx.test.utils import temp_dir
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
+try:
+ from silx.gui.qt import inspect as qt_inspect
+except ImportError:
+ qt_inspect = None
class TestQtWrapper(unittest.TestCase):
@@ -92,6 +96,32 @@ class TestLoadUi(TestCaseQt):
<string>Button 2</string>
</property>
</widget>
+ <widget class="Line" name="line">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>90</y>
+ <width>118</width>
+ <height>3</height>
+ </rect>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="Line" name="line_2">
+ <property name="geometry">
+ <rect>
+ <x>150</x>
+ <y>20</y>
+ <width>3</width>
+ <height>61</height>
+ </rect>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
@@ -110,6 +140,7 @@ class TestLoadUi(TestCaseQt):
</ui>
"""
+ @unittest.skipIf(qt.BINDING == "PySide", "Not fully working with PySide")
def testLoadUi(self):
"""Create a QMainWindow from an ui file"""
with temp_dir() as tmp:
@@ -132,9 +163,35 @@ class TestLoadUi(TestCaseQt):
testMainWindow.close()
+class TestQtInspect(unittest.TestCase):
+ """Test functions of silx.gui.qt.inspect module"""
+
+ # shiboken module is not always available
+ @unittest.skipIf(qt.BINDING == 'PySide' and qt_inspect is None,
+ reason="shiboken module not available")
+ def test(self):
+ """Test functions of silx.gui.qt.inspect module"""
+ self.assertIsNotNone(qt_inspect)
+
+ parent = qt.QObject()
+
+ self.assertTrue(qt_inspect.isValid(parent))
+ self.assertTrue(qt_inspect.createdByPython(parent))
+ self.assertTrue(qt_inspect.ownedByPython(parent))
+
+ obj = qt.QObject(parent)
+
+ self.assertTrue(qt_inspect.isValid(obj))
+ self.assertTrue(qt_inspect.createdByPython(obj))
+ self.assertFalse(qt_inspect.ownedByPython(obj))
+
+ del parent
+ self.assertFalse(qt_inspect.isValid(obj))
+
+
def suite():
test_suite = unittest.TestSuite()
- for TestCaseCls in (TestQtWrapper, TestLoadUi):
+ for TestCaseCls in (TestQtWrapper, TestLoadUi, TestQtInspect):
test_suite.addTest(
unittest.defaultTestLoader.loadTestsFromTestCase(TestCaseCls))
return test_suite
diff --git a/silx/gui/test/utils.py b/silx/gui/test/utils.py
index 3eee474..db4c0ee 100644
--- a/silx/gui/test/utils.py
+++ b/silx/gui/test/utils.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -22,499 +22,22 @@
# THE SOFTWARE.
#
# ###########################################################################*/
-"""Helper class to write Qt widget unittests."""
+"""Color conversion function, color dictionary and colormap tools."""
-__authors__ = ["T. Vincent"]
-__license__ = "MIT"
-__date__ = "27/02/2018"
-
-
-import gc
-import logging
-import unittest
-import time
-import functools
-import sys
-import os
-
-_logger = logging.getLogger(__name__)
-
-from silx.gui import qt
-
-if qt.BINDING == 'PySide':
- from PySide.QtTest import QTest
-elif qt.BINDING == 'PySide2':
- from PySide2.QtTest import QTest
-elif qt.BINDING == 'PyQt5':
- from PyQt5.QtTest import QTest
-elif qt.BINDING == 'PyQt4':
- from PyQt4.QtTest import QTest
-else:
- raise ImportError('Unsupported Qt bindings')
-
-# Qt4/Qt5 compatibility wrapper
-if qt.BINDING in ('PySide', 'PyQt4'):
- _logger.info("QTest.qWaitForWindowExposed not available," +
- "using QTest.qWaitForWindowShown instead.")
-
- def qWaitForWindowExposed(window, timeout=None):
- """Mimic QTest.qWaitForWindowExposed for Qt4."""
- QTest.qWaitForWindowShown(window)
- return True
-else:
- qWaitForWindowExposed = QTest.qWaitForWindowExposed
-
-
-def qWaitForWindowExposedAndActivate(window, timeout=None):
- """Waits until the window is shown in the screen.
-
- It also activates the window and raises it.
-
- See QTest.qWaitForWindowExposed for details.
- """
- if timeout is None:
- result = qWaitForWindowExposed(window)
- else:
- result = qWaitForWindowExposed(window, timeout)
-
- if result:
- # Makes sure window is active and on top
- window.activateWindow()
- window.raise_()
-
- return result
-
-
-# Placeholder for QApplication
-_qapp = None
-
-
-class TestCaseQt(unittest.TestCase):
- """Base class to write test for Qt stuff.
-
- It creates a QApplication before running the tests.
- WARNING: The QApplication is shared by all tests, which might have side
- effects.
-
- After each test, this class is checking for widgets remaining alive.
- To allow some widgets to remain alive at the end of a test, set the
- allowedLeakingWidgets attribute to the number of widgets that can remain
- alive at the end of the test.
- With PySide, this test is not run for now as it seems PySide
- is leaking widgets internally.
-
- All keyboard and mouse event simulation methods call qWait(20) after
- simulating the event (as QTest does on Mac OSX).
- This was introduced to fix issues with continuous integration tests
- running with Xvfb on Linux.
- """
-
- DEFAULT_TIMEOUT_WAIT = 100
- """Default timeout for qWait"""
-
- TIMEOUT_WAIT = 0
- """Extra timeout in millisecond to add to qSleep, qWait and
- qWaitForWindowExposed.
-
- Intended purpose is for debugging, to add extra time to waits in order to
- allow to view the tested widgets.
- """
-
- @classmethod
- def exceptionHandler(cls, exceptionClass, exception, stack):
- import traceback
- message = (''.join(traceback.format_tb(stack)))
- template = 'Traceback (most recent call last):\n{2}{0}: {1}'
- message = template.format(exceptionClass.__name__, exception, message)
- cls._exceptions.append(message)
-
- @classmethod
- def setUpClass(cls):
- """Makes sure Qt is inited"""
- cls._oldExceptionHook = sys.excepthook
- sys.excepthook = cls.exceptionHandler
-
- global _qapp
- if _qapp is None:
- # Makes sure a QApplication exists and do it once for all
- _qapp = qt.QApplication.instance() or qt.QApplication([])
-
- # Makes sure QDesktopWidget is init
- # Otherwise it happens randomly during the tests
- cls._desktopWidget = _qapp.desktop()
- _qapp.processEvents()
-
- @classmethod
- def tearDownClass(cls):
- sys.excepthook = cls._oldExceptionHook
-
- def setUp(self):
- """Get the list of existing widgets."""
- self.allowedLeakingWidgets = 0
- self.__previousWidgets = self.qapp.allWidgets()
- self.__class__._exceptions = []
-
- def _currentTestSucceeded(self):
- if hasattr(self, '_outcome'):
- # For Python >= 3.4
- result = self.defaultTestResult() # these 2 methods have no side effects
- self._feedErrorsToResult(result, self._outcome.errors)
- else:
- # For Python < 3.4
- result = getattr(self, '_outcomeForDoCleanups', self._resultForDoCleanups)
-
- skipped = self.id() in [case.id() for case, _ in result.skipped]
- error = self.id() in [case.id() for case, _ in result.errors]
- failure = self.id() in [case.id() for case, _ in result.failures]
- return not error and not failure and not skipped
-
- def _checkForUnreleasedWidgets(self):
- """Test fixture checking that no more widgets exists."""
- gc.collect()
-
- widgets = [widget for widget in self.qapp.allWidgets()
- if widget not in self.__previousWidgets]
- del self.__previousWidgets
-
- if qt.BINDING in ('PySide', 'PySide2'):
- return # Do not test for leaking widgets with PySide
-
- allowedLeakingWidgets = self.allowedLeakingWidgets
- self.allowedLeakingWidgets = 0
-
- if widgets and len(widgets) <= allowedLeakingWidgets:
- _logger.info(
- '%s: %d remaining widgets after test' % (self.id(),
- len(widgets)))
-
- if len(widgets) > allowedLeakingWidgets:
- raise RuntimeError(
- "Test ended with widgets alive: %s" % str(widgets))
-
- def tearDown(self):
- if len(self.__class__._exceptions) > 0:
- messages = "\n".join(self.__class__._exceptions)
- raise AssertionError("Exception occured in Qt thread:\n" + messages)
-
- if self._currentTestSucceeded():
- self._checkForUnreleasedWidgets()
-
- @property
- def qapp(self):
- """The QApplication currently running."""
- return qt.QApplication.instance()
-
- # Proxy to QTest
-
- Press = QTest.Press
- """Key press action code"""
-
- Release = QTest.Release
- """Key release action code"""
-
- Click = QTest.Click
- """Key click action code"""
-
- QTest = property(lambda self: QTest,
- doc="""The Qt QTest class from the used Qt binding.""")
-
- def keyClick(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
- """Simulate clicking a key.
-
- See QTest.keyClick for details.
- """
- QTest.keyClick(widget, key, modifier, delay)
- self.qWait(20)
-
- def keyClicks(self, widget, sequence, modifier=qt.Qt.NoModifier, delay=-1):
- """Simulate clicking a sequence of keys.
-
- See QTest.keyClick for details.
- """
- QTest.keyClicks(widget, sequence, modifier, delay)
- self.qWait(20)
-
- def keyEvent(self, action, widget, key,
- modifier=qt.Qt.NoModifier, delay=-1):
- """Sends a Qt key event.
+from __future__ import absolute_import
- See QTest.keyEvent for details.
- """
- QTest.keyEvent(action, widget, key, modifier, delay)
- self.qWait(20)
-
- def keyPress(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
- """Sends a Qt key press event.
-
- See QTest.keyPress for details.
- """
- QTest.keyPress(widget, key, modifier, delay)
- self.qWait(20)
-
- def keyRelease(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
- """Sends a Qt key release event.
-
- See QTest.keyRelease for details.
- """
- QTest.keyRelease(widget, key, modifier, delay)
- self.qWait(20)
-
- def mouseClick(self, widget, button, modifier=None, pos=None, delay=-1):
- """Simulate clicking a mouse button.
-
- See QTest.mouseClick for details.
- """
- if modifier is None:
- modifier = qt.Qt.KeyboardModifiers()
- pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
- QTest.mouseClick(widget, button, modifier, pos, delay)
- self.qWait(20)
-
- def mouseDClick(self, widget, button, modifier=None, pos=None, delay=-1):
- """Simulate double clicking a mouse button.
-
- See QTest.mouseDClick for details.
- """
- if modifier is None:
- modifier = qt.Qt.KeyboardModifiers()
- pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
- QTest.mouseDClick(widget, button, modifier, pos, delay)
- self.qWait(20)
-
- def mouseMove(self, widget, pos=None, delay=-1):
- """Simulate moving the mouse.
-
- See QTest.mouseMove for details.
- """
- pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
- QTest.mouseMove(widget, pos, delay)
- self.qWait(20)
-
- def mousePress(self, widget, button, modifier=None, pos=None, delay=-1):
- """Simulate pressing a mouse button.
-
- See QTest.mousePress for details.
- """
- if modifier is None:
- modifier = qt.Qt.KeyboardModifiers()
- pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
- QTest.mousePress(widget, button, modifier, pos, delay)
- self.qWait(20)
-
- def mouseRelease(self, widget, button, modifier=None, pos=None, delay=-1):
- """Simulate releasing a mouse button.
-
- See QTest.mouseRelease for details.
- """
- if modifier is None:
- modifier = qt.Qt.KeyboardModifiers()
- pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
- QTest.mouseRelease(widget, button, modifier, pos, delay)
- self.qWait(20)
-
- def qSleep(self, ms):
- """Sleep for ms milliseconds, blocking the execution of the test.
-
- See QTest.qSleep for details.
- """
- QTest.qSleep(ms + self.TIMEOUT_WAIT)
-
- @classmethod
- def qWait(cls, ms=None):
- """Waits for ms milliseconds, events will be processed.
-
- See QTest.qWait for details.
- """
- if ms is None:
- ms = cls.DEFAULT_TIMEOUT_WAIT
-
- if qt.BINDING == 'PySide':
- # PySide has no qWait, provide a replacement
- timeout = int(ms)
- endTimeMS = int(time.time() * 1000) + timeout
- while timeout > 0:
- _qapp.processEvents(qt.QEventLoop.AllEvents,
- maxtime=timeout)
- timeout = endTimeMS - int(time.time() * 1000)
- else:
- QTest.qWait(ms + cls.TIMEOUT_WAIT)
-
- def qWaitForWindowExposed(self, window, timeout=None):
- """Waits until the window is shown in the screen.
-
- See QTest.qWaitForWindowExposed for details.
- """
- result = qWaitForWindowExposedAndActivate(window, timeout)
-
- if self.TIMEOUT_WAIT:
- QTest.qWait(self.TIMEOUT_WAIT)
-
- return result
-
- _qobject_destroyed = False
-
- @classmethod
- def _aboutToDestroy(cls):
- cls._qobject_destroyed = True
-
- @classmethod
- def qWaitForDestroy(cls, ref):
- """
- Wait for Qt object destruction.
-
- Use a weakref as parameter to avoid any strong references to the
- object.
-
- It have to be used as following. Removing the reference to the object
- before calling the function looks to be expected, else
- :meth:`deleteLater` will not work.
-
- .. code-block:: python
-
- ref = weakref.ref(self.obj)
- self.obj = None
- self.qWaitForDestroy(ref)
-
- :param weakref ref: A weakref to an object to avoid any reference
- :return: True if the object was destroyed
- :rtype: bool
- """
- cls._qobject_destroyed = False
- if qt.BINDING == 'PyQt4':
- # Without this, QWidget will be still alive on PyQt4
- # (at least on Windows Python 2.7)
- # If it is not skipped on PySide, silx.gui.dialog tests will
- # segfault (at least on Windows Python 2.7)
- import gc
- gc.collect()
- qobject = ref()
- if qobject is None:
- return True
- qobject.destroyed.connect(cls._aboutToDestroy)
- qobject.deleteLater()
- qobject = None
- for _ in range(10):
- if cls._qobject_destroyed:
- break
- cls.qWait(10)
- else:
- _logger.debug("Object was not destroyed")
-
- return ref() is None
-
- def logScreenShot(self, level=logging.ERROR):
- """Take a screenshot and log it into the logging system if the
- logger is enabled for the expected level.
-
- The screenshot is stored in the directory "./build/test-debug", and
- the logging system only log the path to this file.
-
- :param level: Logging level
- """
- if not _logger.isEnabledFor(level):
- return
- basedir = os.path.abspath(os.path.join("build", "test-debug"))
- if not os.path.exists(basedir):
- os.makedirs(basedir)
- filename = "Screenshot_%s.png" % self.id()
- filename = os.path.join(basedir, filename)
-
- if not hasattr(self.qapp, "primaryScreen"):
- # Qt4
- winId = qt.QApplication.desktop().winId()
- pixmap = qt.QPixmap.grabWindow(winId)
- else:
- # Qt5
- screen = self.qapp.primaryScreen()
- pixmap = screen.grabWindow(0)
- pixmap.save(filename)
- _logger.log(level, "Screenshot saved at %s", filename)
-
-
-class SignalListener(object):
- """Util to listen a Qt event and store parameters
- """
-
- def __init__(self):
- self.__calls = []
-
- def __call__(self, *args, **kargs):
- self.__calls.append((args, kargs))
-
- def clear(self):
- """Clear stored data"""
- self.__calls = []
-
- def callCount(self):
- """
- Returns how many times the listener was called.
-
- :rtype: int
- """
- return len(self.__calls)
-
- def arguments(self, callIndex=None, argumentIndex=None):
- """Returns positional arguments optionally filtered by call count id
- or argument index.
-
- :param int callIndex: Index of the called data
- :param int argumentIndex: Index of the positional argument.
- """
- if callIndex is not None:
- result = self.__calls[callIndex][0]
- if argumentIndex is not None:
- result = result[argumentIndex]
- else:
- result = [x[0] for x in self.__calls]
- if argumentIndex is not None:
- result = [x[argumentIndex] for x in result]
- return result
-
- def karguments(self, callIndex=None, argumentName=None):
- """Returns positional arguments optionally filtered by call count id
- or name of the keyword argument.
-
- :param int callIndex: Index of the called data
- :param int argumentName: Name of the keyword argument.
- """
- if callIndex is not None:
- result = self.__calls[callIndex][1]
- if argumentName is not None:
- result = result[argumentName]
- else:
- result = [x[1] for x in self.__calls]
- if argumentName is not None:
- result = [x[argumentName] for x in result]
- return result
-
- def partial(self, *args, **kargs):
- """Returns a new partial object which when called will behave like this
- listener called with the positional arguments args and keyword
- arguments keywords. If more arguments are supplied to the call, they
- are appended to args. If additional keyword arguments are supplied,
- they extend and override keywords.
- """
- return functools.partial(self, *args, **kargs)
-
-
-def getQToolButtonFromAction(action):
- """Return a QToolButton corresponding to a QAction.
+__authors__ = ["V. Valls"]
+__license__ = "MIT"
+__date__ = "05/10/2018"
- :param QAction action: The QAction from which to get QToolButton.
- :return: A QToolButton associated to action or None.
- """
- for widget in action.associatedWidgets():
- if isinstance(widget, qt.QToolButton):
- return widget
- return None
+import silx.utils.deprecation
+silx.utils.deprecation.deprecated_warning("Module",
+ name="silx.gui.test.utils",
+ reason="moved",
+ replacement="silx.gui.utils.testutils",
+ since_version="0.9.0",
+ only_once=True,
+ skip_backtrace_count=1)
-def findChildren(parent, kind, name=None):
- if qt.BINDING == "PySide" and name is not None:
- result = []
- for obj in parent.findChildren(kind):
- if obj.objectName() == name:
- result.append(obj)
- return result
- else:
- return parent.findChildren(kind, name=name)
+from ..utils.testutils import * # noqa
diff --git a/silx/gui/utils/_image.py b/silx/gui/utils/_image.py
deleted file mode 100644
index 260aac3..0000000
--- a/silx/gui/utils/_image.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-"""This module provides convenient functions to use with Qt objects.
-
-It provides:
-- conversion between numpy and QImage:
- :func:`convertArrayToQImage`, :func:`convertQImageToArray`
-"""
-
-from __future__ import division
-
-
-__authors__ = ["T. Vincent"]
-__license__ = "MIT"
-__date__ = "16/01/2017"
-
-
-import sys
-import numpy
-
-from .. import qt
-
-
-def convertArrayToQImage(image):
- """Convert an array-like RGB888 image to a QImage.
-
- The created QImage is using a copy of the array data.
-
- Limitation: Only supports RGB888 format.
-
- :param image: Array-like image data
- :type image: numpy.ndarray of uint8 of dimension HxWx3
- :return: Corresponding Qt image
- :rtype: QImage
- """
- # Possible extension: add a format argument to support more formats
-
- image = numpy.array(image, copy=False, order='C', dtype=numpy.uint8)
-
- height, width, depth = image.shape
- assert depth == 3
-
- qimage = qt.QImage(
- image.data,
- width,
- height,
- image.strides[0], # bytesPerLine
- qt.QImage.Format_RGB888)
-
- return qimage.copy() # Making a copy of the image and its data
-
-
-def convertQImageToArray(image):
- """Convert a RGB888 QImage to a numpy array.
-
- Limitation: Only supports RGB888 format.
- If QImage is not RGB888 it gets converted to this format.
-
- :param QImage: The QImage to convert.
- :return: The image array
- :rtype: numpy.ndarray of uint8 of shape HxWx3
- """
- # Possible extension: avoid conversion to support more formats
-
- if image.format() != qt.QImage.Format_RGB888:
- # Convert to RGB888 if needed
- image = image.convertToFormat(qt.QImage.Format_RGB888)
-
- ptr = image.bits()
- if qt.BINDING not in ('PySide', 'PySide2'):
- ptr.setsize(image.byteCount())
- if qt.BINDING == 'PyQt4' and sys.version_info[0] == 2:
- ptr = ptr.asstring()
- elif sys.version_info[0] == 3: # PySide with Python3
- ptr = ptr.tobytes()
-
- array = numpy.fromstring(ptr, dtype=numpy.uint8)
-
- # Lines are 32 bits aligned: remove padding bytes
- array = array.reshape(image.height(), -1)[:, :image.width() * 3]
- array.shape = image.height(), image.width(), 3
- return array
diff --git a/silx/gui/utils/image.py b/silx/gui/utils/image.py
new file mode 100644
index 0000000..3ac737f
--- /dev/null
+++ b/silx/gui/utils/image.py
@@ -0,0 +1,143 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides conversions between numpy.ndarray and QImage
+
+- :func:`convertArrayToQImage`
+- :func:`convertQImageToArray`
+"""
+
+from __future__ import division
+
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "04/09/2018"
+
+
+import sys
+import numpy
+from numpy.lib.stride_tricks import as_strided as _as_strided
+
+from .. import qt
+
+
+def convertArrayToQImage(array):
+ """Convert an array-like image to a QImage.
+
+ The created QImage is using a copy of the array data.
+
+ Limitation: Only RGB or RGBA images with 8 bits per channel are supported.
+
+ :param array: Array-like image data of shape (height, width, channels)
+ Channels are expected to be either RGB or RGBA.
+ :type array: numpy.ndarray of uint8
+ :return: Corresponding Qt image with RGB888 or ARGB32 format.
+ :rtype: QImage
+ """
+ array = numpy.array(array, copy=False, order='C', dtype=numpy.uint8)
+
+ if array.ndim != 3 or array.shape[2] not in (3, 4):
+ raise ValueError(
+ 'Image must be a 3D array with 3 or 4 channels per pixel')
+
+ if array.shape[2] == 4:
+ format_ = qt.QImage.Format_ARGB32
+ # RGBA -> ARGB + take care of endianness
+ if sys.byteorder == 'little': # RGBA -> BGRA
+ array = array[:, :, (2, 1, 0, 3)]
+ else: # big endian: RGBA -> ARGB
+ array = array[:, :, (3, 0, 1, 2)]
+
+ array = numpy.array(array, order='C') # Make a contiguous array
+
+ else: # array.shape[2] == 3
+ format_ = qt.QImage.Format_RGB888
+
+ height, width, depth = array.shape
+ qimage = qt.QImage(
+ array.data,
+ width,
+ height,
+ array.strides[0], # bytesPerLine
+ format_)
+
+ return qimage.copy() # Making a copy of the image and its data
+
+
+def convertQImageToArray(image):
+ """Convert a QImage to a numpy array.
+
+ If QImage format is not Format_RGB888, Format_RGBA8888 or Format_ARGB32,
+ it is first converted to one of this format depending on
+ the presence of an alpha channel.
+
+ The created numpy array is using a copy of the QImage data.
+
+ :param QImage image: The QImage to convert.
+ :return: The image array of RGB or RGBA channels of shape
+ (height, width, channels (3 or 4))
+ :rtype: numpy.ndarray of uint8
+ """
+ rgba8888 = getattr(qt.QImage, 'Format_RGBA8888', None) # Only in Qt5
+
+ # Convert to supported format if needed
+ if image.format() not in (qt.QImage.Format_ARGB32,
+ qt.QImage.Format_RGB888,
+ rgba8888):
+ if image.hasAlphaChannel():
+ image = image.convertToFormat(
+ rgba8888 if rgba8888 is not None else qt.QImage.Format_ARGB32)
+ else:
+ image = image.convertToFormat(qt.QImage.Format_RGB888)
+
+ format_ = image.format()
+ channels = 3 if format_ == qt.QImage.Format_RGB888 else 4
+
+ ptr = image.bits()
+ if qt.BINDING not in ('PySide', 'PySide2'):
+ ptr.setsize(image.byteCount())
+ if qt.BINDING == 'PyQt4' and sys.version_info[0] == 2:
+ ptr = ptr.asstring()
+ elif sys.version_info[0] == 3: # PySide with Python3
+ ptr = ptr.tobytes()
+
+ # Create an array view on QImage internal data
+ view = _as_strided(
+ numpy.frombuffer(ptr, dtype=numpy.uint8),
+ shape=(image.height(), image.width(), channels),
+ strides=(image.bytesPerLine(), channels, 1))
+
+ if format_ == qt.QImage.Format_ARGB32:
+ # Convert from ARGB to RGBA
+ # Not a byte-ordered format: do care about endianness
+ if sys.byteorder == 'little': # BGRA -> RGBA
+ view = view[:, :, (2, 1, 0, 3)]
+ else: # big endian: ARGB -> RGBA
+ view = view[:, :, (1, 2, 3, 0)]
+
+ # Format_RGB888 and Format_RGBA8888 do not need reshuffling channels:
+ # They are byte-ordered and already in the right order
+
+ return numpy.array(view, copy=True, order='C')
diff --git a/silx/gui/utils/test/test_async.py b/silx/gui/utils/test/test_async.py
index fd32a3f..dabfb3c 100644
--- a/silx/gui/utils/test/test_async.py
+++ b/silx/gui/utils/test/test_async.py
@@ -35,7 +35,7 @@ import unittest
from silx.third_party.concurrent_futures import wait
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.utils import concurrent
diff --git a/silx/gui/utils/test/test_image.py b/silx/gui/utils/test/test_image.py
index 7cba1b0..cda7d95 100644
--- a/silx/gui/utils/test/test_image.py
+++ b/silx/gui/utils/test/test_image.py
@@ -32,35 +32,51 @@ import numpy
import unittest
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
-from silx.gui.utils import _image
+from silx.utils.testutils import ParametricTestCase
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui.utils.image import convertArrayToQImage, convertQImageToArray
-class TestQImageConversion(TestCaseQt):
+class TestQImageConversion(TestCaseQt, ParametricTestCase):
"""Tests conversion of QImage to/from numpy array."""
def testConvertArrayToQImage(self):
"""Test conversion of numpy array to QImage"""
- image = numpy.ones((3, 3, 3), dtype=numpy.uint8)
- qimage = _image.convertArrayToQImage(image)
+ for format_, channels in [('Format_RGB888', 3),
+ ('Format_ARGB32', 4)]:
+ with self.subTest(format_):
+ image = numpy.arange(
+ 3*3*channels, dtype=numpy.uint8).reshape(3, 3, channels)
+ qimage = convertArrayToQImage(image)
- self.assertEqual(qimage.height(), image.shape[0])
- self.assertEqual(qimage.width(), image.shape[1])
- self.assertEqual(qimage.format(), qt.QImage.Format_RGB888)
+ self.assertEqual(qimage.height(), image.shape[0])
+ self.assertEqual(qimage.width(), image.shape[1])
+ self.assertEqual(qimage.format(), getattr(qt.QImage, format_))
+
+ for row in range(3):
+ for col in range(3):
+ # Qrgb has no alpha channel, not compared
+ # Qt uses x,y while array is row,col...
+ self.assertEqual(qt.QColor(qimage.pixel(col, row)),
+ qt.QColor(*image[row, col, :3]))
- color = qt.QColor(1, 1, 1).rgb()
- self.assertEqual(qimage.pixel(1, 1), color)
def testConvertQImageToArray(self):
"""Test conversion of QImage to numpy array"""
- qimage = qt.QImage(3, 3, qt.QImage.Format_RGB888)
- qimage.fill(0x010101)
- image = _image.convertQImageToArray(qimage)
+ for format_, channels in [
+ ('Format_RGB888', 3), # Native support
+ ('Format_ARGB32', 4), # Native support
+ ('Format_RGB32', 3)]: # Conversion to RGB
+ with self.subTest(format_):
+ color = numpy.arange(channels) # RGB(A) values
+ qimage = qt.QImage(3, 3, getattr(qt.QImage, format_))
+ qimage.fill(qt.QColor(*color))
+ image = convertQImageToArray(qimage)
- self.assertEqual(qimage.height(), image.shape[0])
- self.assertEqual(qimage.width(), image.shape[1])
- self.assertEqual(image.shape[2], 3)
- self.assertTrue(numpy.all(numpy.equal(image, 1)))
+ self.assertEqual(qimage.height(), image.shape[0])
+ self.assertEqual(qimage.width(), image.shape[1])
+ self.assertEqual(image.shape[2], len(color))
+ self.assertTrue(numpy.all(numpy.equal(image, color)))
def suite():
diff --git a/silx/gui/utils/testutils.py b/silx/gui/utils/testutils.py
new file mode 100644
index 0000000..35085fc
--- /dev/null
+++ b/silx/gui/utils/testutils.py
@@ -0,0 +1,520 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""Helper class to write Qt widget unittests."""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "05/10/2018"
+
+
+import gc
+import logging
+import unittest
+import time
+import functools
+import sys
+import os
+
+_logger = logging.getLogger(__name__)
+
+from silx.gui import qt
+
+if qt.BINDING == 'PySide':
+ from PySide.QtTest import QTest
+elif qt.BINDING == 'PySide2':
+ from PySide2.QtTest import QTest
+elif qt.BINDING == 'PyQt5':
+ from PyQt5.QtTest import QTest
+elif qt.BINDING == 'PyQt4':
+ from PyQt4.QtTest import QTest
+else:
+ raise ImportError('Unsupported Qt bindings')
+
+# Qt4/Qt5 compatibility wrapper
+if qt.BINDING in ('PySide', 'PyQt4'):
+ _logger.info("QTest.qWaitForWindowExposed not available," +
+ "using QTest.qWaitForWindowShown instead.")
+
+ def qWaitForWindowExposed(window, timeout=None):
+ """Mimic QTest.qWaitForWindowExposed for Qt4."""
+ QTest.qWaitForWindowShown(window)
+ return True
+else:
+ qWaitForWindowExposed = QTest.qWaitForWindowExposed
+
+
+def qWaitForWindowExposedAndActivate(window, timeout=None):
+ """Waits until the window is shown in the screen.
+
+ It also activates the window and raises it.
+
+ See QTest.qWaitForWindowExposed for details.
+ """
+ if timeout is None:
+ result = qWaitForWindowExposed(window)
+ else:
+ result = qWaitForWindowExposed(window, timeout)
+
+ if result:
+ # Makes sure window is active and on top
+ window.activateWindow()
+ window.raise_()
+
+ return result
+
+
+# Placeholder for QApplication
+_qapp = None
+
+
+class TestCaseQt(unittest.TestCase):
+ """Base class to write test for Qt stuff.
+
+ It creates a QApplication before running the tests.
+ WARNING: The QApplication is shared by all tests, which might have side
+ effects.
+
+ After each test, this class is checking for widgets remaining alive.
+ To allow some widgets to remain alive at the end of a test, set the
+ allowedLeakingWidgets attribute to the number of widgets that can remain
+ alive at the end of the test.
+ With PySide, this test is not run for now as it seems PySide
+ is leaking widgets internally.
+
+ All keyboard and mouse event simulation methods call qWait(20) after
+ simulating the event (as QTest does on Mac OSX).
+ This was introduced to fix issues with continuous integration tests
+ running with Xvfb on Linux.
+ """
+
+ DEFAULT_TIMEOUT_WAIT = 100
+ """Default timeout for qWait"""
+
+ TIMEOUT_WAIT = 0
+ """Extra timeout in millisecond to add to qSleep, qWait and
+ qWaitForWindowExposed.
+
+ Intended purpose is for debugging, to add extra time to waits in order to
+ allow to view the tested widgets.
+ """
+
+ @classmethod
+ def exceptionHandler(cls, exceptionClass, exception, stack):
+ import traceback
+ message = (''.join(traceback.format_tb(stack)))
+ template = 'Traceback (most recent call last):\n{2}{0}: {1}'
+ message = template.format(exceptionClass.__name__, exception, message)
+ cls._exceptions.append(message)
+
+ @classmethod
+ def setUpClass(cls):
+ """Makes sure Qt is inited"""
+ cls._oldExceptionHook = sys.excepthook
+ sys.excepthook = cls.exceptionHandler
+
+ global _qapp
+ if _qapp is None:
+ # Makes sure a QApplication exists and do it once for all
+ _qapp = qt.QApplication.instance() or qt.QApplication([])
+
+ # Makes sure QDesktopWidget is init
+ # Otherwise it happens randomly during the tests
+ cls._desktopWidget = _qapp.desktop()
+ _qapp.processEvents()
+
+ @classmethod
+ def tearDownClass(cls):
+ sys.excepthook = cls._oldExceptionHook
+
+ def setUp(self):
+ """Get the list of existing widgets."""
+ self.allowedLeakingWidgets = 0
+ self.__previousWidgets = self.qapp.allWidgets()
+ self.__class__._exceptions = []
+
+ def _currentTestSucceeded(self):
+ if hasattr(self, '_outcome'):
+ # For Python >= 3.4
+ result = self.defaultTestResult() # these 2 methods have no side effects
+ self._feedErrorsToResult(result, self._outcome.errors)
+ else:
+ # For Python < 3.4
+ result = getattr(self, '_outcomeForDoCleanups', self._resultForDoCleanups)
+
+ skipped = self.id() in [case.id() for case, _ in result.skipped]
+ error = self.id() in [case.id() for case, _ in result.errors]
+ failure = self.id() in [case.id() for case, _ in result.failures]
+ return not error and not failure and not skipped
+
+ def _checkForUnreleasedWidgets(self):
+ """Test fixture checking that no more widgets exists."""
+ gc.collect()
+
+ widgets = [widget for widget in self.qapp.allWidgets()
+ if widget not in self.__previousWidgets]
+ del self.__previousWidgets
+
+ if qt.BINDING in ('PySide', 'PySide2'):
+ return # Do not test for leaking widgets with PySide
+
+ allowedLeakingWidgets = self.allowedLeakingWidgets
+ self.allowedLeakingWidgets = 0
+
+ if widgets and len(widgets) <= allowedLeakingWidgets:
+ _logger.info(
+ '%s: %d remaining widgets after test' % (self.id(),
+ len(widgets)))
+
+ if len(widgets) > allowedLeakingWidgets:
+ raise RuntimeError(
+ "Test ended with widgets alive: %s" % str(widgets))
+
+ def tearDown(self):
+ if len(self.__class__._exceptions) > 0:
+ messages = "\n".join(self.__class__._exceptions)
+ raise AssertionError("Exception occured in Qt thread:\n" + messages)
+
+ if self._currentTestSucceeded():
+ self._checkForUnreleasedWidgets()
+
+ @property
+ def qapp(self):
+ """The QApplication currently running."""
+ return qt.QApplication.instance()
+
+ # Proxy to QTest
+
+ Press = QTest.Press
+ """Key press action code"""
+
+ Release = QTest.Release
+ """Key release action code"""
+
+ Click = QTest.Click
+ """Key click action code"""
+
+ QTest = property(lambda self: QTest,
+ doc="""The Qt QTest class from the used Qt binding.""")
+
+ def keyClick(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
+ """Simulate clicking a key.
+
+ See QTest.keyClick for details.
+ """
+ QTest.keyClick(widget, key, modifier, delay)
+ self.qWait(20)
+
+ def keyClicks(self, widget, sequence, modifier=qt.Qt.NoModifier, delay=-1):
+ """Simulate clicking a sequence of keys.
+
+ See QTest.keyClick for details.
+ """
+ QTest.keyClicks(widget, sequence, modifier, delay)
+ self.qWait(20)
+
+ def keyEvent(self, action, widget, key,
+ modifier=qt.Qt.NoModifier, delay=-1):
+ """Sends a Qt key event.
+
+ See QTest.keyEvent for details.
+ """
+ QTest.keyEvent(action, widget, key, modifier, delay)
+ self.qWait(20)
+
+ def keyPress(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
+ """Sends a Qt key press event.
+
+ See QTest.keyPress for details.
+ """
+ QTest.keyPress(widget, key, modifier, delay)
+ self.qWait(20)
+
+ def keyRelease(self, widget, key, modifier=qt.Qt.NoModifier, delay=-1):
+ """Sends a Qt key release event.
+
+ See QTest.keyRelease for details.
+ """
+ QTest.keyRelease(widget, key, modifier, delay)
+ self.qWait(20)
+
+ def mouseClick(self, widget, button, modifier=None, pos=None, delay=-1):
+ """Simulate clicking a mouse button.
+
+ See QTest.mouseClick for details.
+ """
+ if modifier is None:
+ modifier = qt.Qt.KeyboardModifiers()
+ pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
+ QTest.mouseClick(widget, button, modifier, pos, delay)
+ self.qWait(20)
+
+ def mouseDClick(self, widget, button, modifier=None, pos=None, delay=-1):
+ """Simulate double clicking a mouse button.
+
+ See QTest.mouseDClick for details.
+ """
+ if modifier is None:
+ modifier = qt.Qt.KeyboardModifiers()
+ pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
+ QTest.mouseDClick(widget, button, modifier, pos, delay)
+ self.qWait(20)
+
+ def mouseMove(self, widget, pos=None, delay=-1):
+ """Simulate moving the mouse.
+
+ See QTest.mouseMove for details.
+ """
+ pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
+ QTest.mouseMove(widget, pos, delay)
+ self.qWait(20)
+
+ def mousePress(self, widget, button, modifier=None, pos=None, delay=-1):
+ """Simulate pressing a mouse button.
+
+ See QTest.mousePress for details.
+ """
+ if modifier is None:
+ modifier = qt.Qt.KeyboardModifiers()
+ pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
+ QTest.mousePress(widget, button, modifier, pos, delay)
+ self.qWait(20)
+
+ def mouseRelease(self, widget, button, modifier=None, pos=None, delay=-1):
+ """Simulate releasing a mouse button.
+
+ See QTest.mouseRelease for details.
+ """
+ if modifier is None:
+ modifier = qt.Qt.KeyboardModifiers()
+ pos = qt.QPoint(pos[0], pos[1]) if pos is not None else qt.QPoint()
+ QTest.mouseRelease(widget, button, modifier, pos, delay)
+ self.qWait(20)
+
+ def qSleep(self, ms):
+ """Sleep for ms milliseconds, blocking the execution of the test.
+
+ See QTest.qSleep for details.
+ """
+ QTest.qSleep(ms + self.TIMEOUT_WAIT)
+
+ @classmethod
+ def qWait(cls, ms=None):
+ """Waits for ms milliseconds, events will be processed.
+
+ See QTest.qWait for details.
+ """
+ if ms is None:
+ ms = cls.DEFAULT_TIMEOUT_WAIT
+
+ if qt.BINDING in ('PySide', 'PySide2'):
+ # PySide has no qWait, provide a replacement
+ timeout = int(ms)
+ endTimeMS = int(time.time() * 1000) + timeout
+ while timeout > 0:
+ _qapp.processEvents(qt.QEventLoop.AllEvents,
+ maxtime=timeout)
+ timeout = endTimeMS - int(time.time() * 1000)
+ else:
+ QTest.qWait(ms + cls.TIMEOUT_WAIT)
+
+ def qWaitForWindowExposed(self, window, timeout=None):
+ """Waits until the window is shown in the screen.
+
+ See QTest.qWaitForWindowExposed for details.
+ """
+ result = qWaitForWindowExposedAndActivate(window, timeout)
+
+ if self.TIMEOUT_WAIT:
+ QTest.qWait(self.TIMEOUT_WAIT)
+
+ return result
+
+ _qobject_destroyed = False
+
+ @classmethod
+ def _aboutToDestroy(cls):
+ cls._qobject_destroyed = True
+
+ @classmethod
+ def qWaitForDestroy(cls, ref):
+ """
+ Wait for Qt object destruction.
+
+ Use a weakref as parameter to avoid any strong references to the
+ object.
+
+ It have to be used as following. Removing the reference to the object
+ before calling the function looks to be expected, else
+ :meth:`deleteLater` will not work.
+
+ .. code-block:: python
+
+ ref = weakref.ref(self.obj)
+ self.obj = None
+ self.qWaitForDestroy(ref)
+
+ :param weakref ref: A weakref to an object to avoid any reference
+ :return: True if the object was destroyed
+ :rtype: bool
+ """
+ cls._qobject_destroyed = False
+ if qt.BINDING == 'PyQt4':
+ # Without this, QWidget will be still alive on PyQt4
+ # (at least on Windows Python 2.7)
+ # If it is not skipped on PySide, silx.gui.dialog tests will
+ # segfault (at least on Windows Python 2.7)
+ import gc
+ gc.collect()
+ qobject = ref()
+ if qobject is None:
+ return True
+ qobject.destroyed.connect(cls._aboutToDestroy)
+ qobject.deleteLater()
+ qobject = None
+ for _ in range(10):
+ if cls._qobject_destroyed:
+ break
+ cls.qWait(10)
+ else:
+ _logger.debug("Object was not destroyed")
+
+ return ref() is None
+
+ def logScreenShot(self, level=logging.ERROR):
+ """Take a screenshot and log it into the logging system if the
+ logger is enabled for the expected level.
+
+ The screenshot is stored in the directory "./build/test-debug", and
+ the logging system only log the path to this file.
+
+ :param level: Logging level
+ """
+ if not _logger.isEnabledFor(level):
+ return
+ basedir = os.path.abspath(os.path.join("build", "test-debug"))
+ if not os.path.exists(basedir):
+ os.makedirs(basedir)
+ filename = "Screenshot_%s.png" % self.id()
+ filename = os.path.join(basedir, filename)
+
+ if not hasattr(self.qapp, "primaryScreen"):
+ # Qt4
+ winId = qt.QApplication.desktop().winId()
+ pixmap = qt.QPixmap.grabWindow(winId)
+ else:
+ # Qt5
+ screen = self.qapp.primaryScreen()
+ pixmap = screen.grabWindow(0)
+ pixmap.save(filename)
+ _logger.log(level, "Screenshot saved at %s", filename)
+
+
+class SignalListener(object):
+ """Util to listen a Qt event and store parameters
+ """
+
+ def __init__(self):
+ self.__calls = []
+
+ def __call__(self, *args, **kargs):
+ self.__calls.append((args, kargs))
+
+ def clear(self):
+ """Clear stored data"""
+ self.__calls = []
+
+ def callCount(self):
+ """
+ Returns how many times the listener was called.
+
+ :rtype: int
+ """
+ return len(self.__calls)
+
+ def arguments(self, callIndex=None, argumentIndex=None):
+ """Returns positional arguments optionally filtered by call count id
+ or argument index.
+
+ :param int callIndex: Index of the called data
+ :param int argumentIndex: Index of the positional argument.
+ """
+ if callIndex is not None:
+ result = self.__calls[callIndex][0]
+ if argumentIndex is not None:
+ result = result[argumentIndex]
+ else:
+ result = [x[0] for x in self.__calls]
+ if argumentIndex is not None:
+ result = [x[argumentIndex] for x in result]
+ return result
+
+ def karguments(self, callIndex=None, argumentName=None):
+ """Returns positional arguments optionally filtered by call count id
+ or name of the keyword argument.
+
+ :param int callIndex: Index of the called data
+ :param int argumentName: Name of the keyword argument.
+ """
+ if callIndex is not None:
+ result = self.__calls[callIndex][1]
+ if argumentName is not None:
+ result = result[argumentName]
+ else:
+ result = [x[1] for x in self.__calls]
+ if argumentName is not None:
+ result = [x[argumentName] for x in result]
+ return result
+
+ def partial(self, *args, **kargs):
+ """Returns a new partial object which when called will behave like this
+ listener called with the positional arguments args and keyword
+ arguments keywords. If more arguments are supplied to the call, they
+ are appended to args. If additional keyword arguments are supplied,
+ they extend and override keywords.
+ """
+ return functools.partial(self, *args, **kargs)
+
+
+def getQToolButtonFromAction(action):
+ """Return a QToolButton corresponding to a QAction.
+
+ :param QAction action: The QAction from which to get QToolButton.
+ :return: A QToolButton associated to action or None.
+ """
+ for widget in action.associatedWidgets():
+ if isinstance(widget, qt.QToolButton):
+ return widget
+ return None
+
+
+def findChildren(parent, kind, name=None):
+ if qt.BINDING in ("PySide", "PySide2") and name is not None:
+ result = []
+ for obj in parent.findChildren(kind):
+ if obj.objectName() == name:
+ result.append(obj)
+ return result
+ else:
+ return parent.findChildren(kind, name=name)
diff --git a/silx/gui/widgets/FloatEdit.py b/silx/gui/widgets/FloatEdit.py
index fd6d8a7..36a39a7 100644
--- a/silx/gui/widgets/FloatEdit.py
+++ b/silx/gui/widgets/FloatEdit.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2004-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2004-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -61,5 +61,5 @@ class FloatEdit(qt.QLineEdit):
:param float value: The value to set the QLineEdit to.
"""
- text = self.validator().locale().toString(value)
+ text = self.validator().locale().toString(float(value))
self.setText(text)
diff --git a/silx/gui/widgets/FlowLayout.py b/silx/gui/widgets/FlowLayout.py
new file mode 100644
index 0000000..14c8ab2
--- /dev/null
+++ b/silx/gui/widgets/FlowLayout.py
@@ -0,0 +1,177 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides a flow layout for QWidget: :class:`FlowLayout`.
+"""
+
+from __future__ import division
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "20/07/2018"
+
+
+from .. import qt
+
+
+class FlowLayout(qt.QLayout):
+ """Layout widgets on (possibly) multiple lines in the available width.
+
+ See Qt :class:`QLayout` for API documentation.
+
+ Adapted from C++ `Qt FlowLayout example
+ <http://doc.qt.io/qt-5/qtwidgets-layouts-flowlayout-example.html>`_
+
+ :param QWidget parent: See :class:`QLayout`
+ """
+
+ def __init__(self, parent=None):
+ super(FlowLayout, self).__init__(parent)
+ self._items = []
+ self._horizontalSpacing = -1
+ self._verticalSpacing = -1
+
+ def addItem(self, item):
+ self._items.append(item)
+
+ def count(self):
+ return len(self._items)
+
+ def itemAt(self, index):
+ if 0 <= index < len(self._items):
+ return self._items[index]
+ else:
+ return None
+
+ def takeAt(self, index):
+ if 0 <= index < len(self._items):
+ return self._items.pop(index)
+ else:
+ return None
+
+ def expandingDirections(self):
+ return 0
+
+ def hasHeightForWidth(self):
+ return True
+
+ def heightForWidth(self, width):
+ return self._layout(qt.QRect(0, 0, width, 0), test=True)
+
+ def setGeometry(self, rect):
+ super(FlowLayout, self).setGeometry(rect)
+ self._layout(rect)
+
+ def sizeHint(self):
+ return self.minimumSize()
+
+ def minimumSize(self):
+ size = qt.QSize()
+ for item in self._items:
+ size = size.expandedTo(item.minimumSize())
+
+ left, top, right, bottom = self.getContentsMargins()
+ size += qt.QSize(left + right, top + bottom)
+ return size
+
+ def _layout(self, rect, test=False):
+ left, top, right, bottom = self.getContentsMargins()
+ effectiveRect = rect.adjusted(left, top, -right, -bottom)
+ x, y = effectiveRect.x(), effectiveRect.y()
+ lineHeight = 0
+
+ for item in self._items:
+ widget = item.widget()
+ spaceX = self.horizontalSpacing()
+ if spaceX == -1:
+ spaceX = widget.style().layoutSpacing(
+ qt.QSizePolicy.PushButton,
+ qt.QSizePolicy.PushButton,
+ qt.Qt.Horizontal)
+ spaceY = self.verticalSpacing()
+ if spaceY == -1:
+ spaceY = widget.style().layoutSpacing(
+ qt.QSizePolicy.PushButton,
+ qt.QSizePolicy.PushButton,
+ qt.Qt.Vertical)
+
+ nextX = x + item.sizeHint().width() + spaceX
+ if (nextX - spaceX) > effectiveRect.right() and lineHeight > 0:
+ x = effectiveRect.x()
+ y += lineHeight + spaceY
+ nextX = x + item.sizeHint().width() + spaceX
+ lineHeight = 0
+
+ if not test:
+ item.setGeometry(qt.QRect(qt.QPoint(x, y), item.sizeHint()))
+
+ x = nextX
+ lineHeight = max(lineHeight, item.sizeHint().height())
+
+ return y + lineHeight - rect.y() + bottom
+
+ def setHorizontalSpacing(self, spacing):
+ """Set the horizontal spacing between widgets laid out side by side
+
+ :param int spacing:
+ """
+ self._horizontalSpacing = spacing
+ self.update()
+
+ def horizontalSpacing(self):
+ """Returns the horizontal spacing between widgets laid out side by side
+
+ :rtype: int
+ """
+ if self._horizontalSpacing >= 0:
+ return self._horizontalSpacing
+ else:
+ return self._smartSpacing(qt.QStyle.PM_LayoutHorizontalSpacing)
+
+ def setVerticalSpacing(self, spacing):
+ """Set the vertical spacing between lines
+
+ :param int spacing:
+ """
+ self._verticalSpacing = spacing
+ self.update()
+
+ def verticalSpacing(self):
+ """Returns the vertical spacing between lines
+
+ :rtype: int
+ """
+ if self._verticalSpacing >= 0:
+ return self._verticalSpacing
+ else:
+ return self._smartSpacing(qt.QStyle.PM_LayoutVerticalSpacing)
+
+ def _smartSpacing(self, pm):
+ parent = self.parent()
+ if parent is None:
+ return -1
+ if parent.isWidgetType():
+ return parent.style().pixelMetric(pm, None, parent)
+ else:
+ return parent.spacing()
diff --git a/silx/gui/widgets/PrintPreview.py b/silx/gui/widgets/PrintPreview.py
index 78d1bd7..94a8ed4 100644
--- a/silx/gui/widgets/PrintPreview.py
+++ b/silx/gui/widgets/PrintPreview.py
@@ -411,6 +411,9 @@ class PrintPreviewDialog(qt.QDialog):
"""If the printer is not already set, try to interactively
setup the printer using a QPrintDialog.
In case of failure, hide widget and log a warning.
+
+ :return: True if printer was set. False if it failed or if the
+ selection dialog was canceled.
"""
if self.printer is None:
self.setup()
@@ -418,6 +421,7 @@ class PrintPreviewDialog(qt.QDialog):
self.hide()
_logger.warning("Printer setup failed or was cancelled, " +
"but printer is required.")
+ return self.printer is not None
def setOutputFileName(self, name):
"""Set output filename.
diff --git a/silx/gui/widgets/RangeSlider.py b/silx/gui/widgets/RangeSlider.py
new file mode 100644
index 0000000..0b72e71
--- /dev/null
+++ b/silx/gui/widgets/RangeSlider.py
@@ -0,0 +1,627 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""This module provides a :class:`RangeSlider` widget.
+
+.. image:: img/RangeSlider.png
+ :align: center
+"""
+from __future__ import absolute_import, division
+
+__authors__ = ["D. Naudet", "T. Vincent"]
+__license__ = "MIT"
+__date__ = "02/08/2018"
+
+
+import numpy as numpy
+
+from silx.gui import qt, icons, colors
+from silx.gui.utils.image import convertArrayToQImage
+
+
+class RangeSlider(qt.QWidget):
+ """Range slider with 2 thumbs and an optional colored groove.
+
+ The position of the slider thumbs can be retrieved either as values
+ in the slider range or as a number of steps or pixels.
+
+ :param QWidget parent: See QWidget
+ """
+
+ _SLIDER_WIDTH = 10
+ """Width of the slider rectangle"""
+
+ _PIXMAP_VOFFSET = 7
+ """Vertical groove pixmap offset"""
+
+ sigRangeChanged = qt.Signal(float, float)
+ """Signal emitted when the value range has changed.
+
+ It provides the new range (min, max).
+ """
+
+ sigValueChanged = qt.Signal(float, float)
+ """Signal emitted when the value of the sliders has changed.
+
+ It provides the slider values (first, second).
+ """
+
+ sigPositionCountChanged = qt.Signal(object)
+ """This signal is emitted when the number of steps has changed.
+
+ It provides the new position count.
+ """
+
+ sigPositionChanged = qt.Signal(int, int)
+ """Signal emitted when the position of the sliders has changed.
+
+ It provides the slider positions in steps or pixels (first, second).
+ """
+
+ def __init__(self, parent=None):
+ self.__pixmap = None
+ self.__positionCount = None
+ self.__firstValue = 0.
+ self.__secondValue = 1.
+ self.__minValue = 0.
+ self.__maxValue = 1.
+
+ self.__focus = None
+ self.__moving = None
+
+ self.__icons = {
+ 'first': icons.getQIcon('previous'),
+ 'second': icons.getQIcon('next')
+ }
+
+ # call the super constructor AFTER defining all members that
+ # are used in the "paint" method
+ super(RangeSlider, self).__init__(parent)
+
+ self.setFocusPolicy(qt.Qt.ClickFocus)
+
+ self.setMinimumSize(qt.QSize(50, 20))
+ self.setMaximumHeight(20)
+
+ # Broadcast value changed signal
+ self.sigValueChanged.connect(self.__emitPositionChanged)
+
+ # Position <-> Value conversion
+
+ def __positionToValue(self, position):
+ """Returns value corresponding to position
+
+ :param int position:
+ :rtype: float
+ """
+ min_, max_ = self.getMinimum(), self.getMaximum()
+ maxPos = self.__getCurrentPositionCount() - 1
+ return min_ + (max_ - min_) * int(position) / maxPos
+
+ def __valueToPosition(self, value):
+ """Returns closest position corresponding to value
+
+ :param float value:
+ :rtype: int
+ """
+ min_, max_ = self.getMinimum(), self.getMaximum()
+ maxPos = self.__getCurrentPositionCount() - 1
+ return int(0.5 + maxPos * (float(value) - min_) / (max_ - min_))
+
+ # Position (int) API
+
+ def __getCurrentPositionCount(self):
+ """Return current count (either position count or widget width
+
+ :rtype: int
+ """
+ count = self.getPositionCount()
+ if count is not None:
+ return count
+ else:
+ return max(2, self.width() - self._SLIDER_WIDTH)
+
+ def getPositionCount(self):
+ """Returns the number of positions.
+
+ :rtype: Union[int,None]"""
+ return self.__positionCount
+
+ def setPositionCount(self, count):
+ """Set the number of positions.
+
+ Slider values are eventually adjusted.
+
+ :param Union[int,None] count:
+ Either the number of possible positions or
+ None to allow any values.
+ :raise ValueError: If count <= 1
+ """
+ count = None if count is None else int(count)
+ if count != self.getPositionCount():
+ if count is not None and count <= 1:
+ raise ValueError("Position count must be higher than 1")
+ self.__positionCount = count
+ emit = self.__setValues(*self.getValues())
+ self.sigPositionCountChanged.emit(count)
+ if emit:
+ self.sigValueChanged.emit(*self.getValues())
+
+ def getFirstPosition(self):
+ """Returns first slider position
+
+ :rtype: int
+ """
+ return self.__valueToPosition(self.getFirstValue())
+
+ def setFirstPosition(self, position):
+ """Set the position of the first slider
+
+ The position is adjusted to valid values
+
+ :param int position:
+ """
+ self.setFirstValue(self.__positionToValue(position))
+
+ def getSecondPosition(self):
+ """Returns second slider position
+
+ :rtype: int
+ """
+ return self.__valueToPosition(self.getSecondValue())
+
+ def setSecondPosition(self, position):
+ """Set the position of the second slider
+
+ The position is adjusted to valid values
+
+ :param int position:
+ """
+ self.setSecondValue(self.__positionToValue(position))
+
+ def getPositions(self):
+ """Returns slider positions (first, second)
+
+ :rtype: List[int]
+ """
+ return self.getFirstPosition(), self.getSecondPosition()
+
+ def setPositions(self, first, second):
+ """Set the position of both sliders at once
+
+ First is clipped to the slider range: [0, max].
+ Second is clipped to valid values: [first, max]
+
+ :param int first:
+ :param int second:
+ """
+ self.setValues(self.__positionToValue(first),
+ self.__positionToValue(second))
+
+ # Value (float) API
+
+ def __emitPositionChanged(self, *args, **kwargs):
+ self.sigPositionChanged.emit(*self.getPositions())
+
+ def __rangeChanged(self):
+ """Handle change of value range"""
+ emit = self.__setValues(*self.getValues())
+ self.sigRangeChanged.emit(*self.getRange())
+ if emit:
+ self.sigValueChanged.emit(*self.getValues())
+
+ def getMinimum(self):
+ """Returns the minimum value of the slider range
+
+ :rtype: float
+ """
+ return self.__minValue
+
+ def setMinimum(self, minimum):
+ """Set the minimum value of the slider range.
+
+ It eventually adjusts maximum.
+ Slider positions remains unchanged and slider values are modified.
+
+ :param float minimum:
+ """
+ minimum = float(minimum)
+ if minimum != self.getMinimum():
+ if minimum > self.getMaximum():
+ self.__maxValue = minimum
+ self.__minValue = minimum
+ self.__rangeChanged()
+
+ def getMaximum(self):
+ """Returns the maximum value of the slider range
+
+ :rtype: float
+ """
+ return self.__maxValue
+
+ def setMaximum(self, maximum):
+ """Set the maximum value of the slider range
+
+ It eventually adjusts minimum.
+ Slider positions remains unchanged and slider values are modified.
+
+ :param float maximum:
+ """
+ maximum = float(maximum)
+ if maximum != self.getMaximum():
+ if maximum < self.getMinimum():
+ self.__minValue = maximum
+ self.__maxValue = maximum
+ self.__rangeChanged()
+
+ def getRange(self):
+ """Returns the range of values (min, max)
+
+ :rtype: List[float]
+ """
+ return self.getMinimum(), self.getMaximum()
+
+ def setRange(self, minimum, maximum):
+ """Set the range of values.
+
+ If maximum is lower than minimum, minimum is the only valid value.
+ Slider positions remains unchanged and slider values are modified.
+
+ :param float minimum:
+ :param float maximum:
+ """
+ minimum, maximum = float(minimum), float(maximum)
+ if minimum != self.getMinimum() or maximum != self.getMaximum():
+ self.__minValue = minimum
+ self.__maxValue = max(maximum, minimum)
+ self.__rangeChanged()
+
+ def getFirstValue(self):
+ """Returns the value of the first slider
+
+ :rtype: float
+ """
+ return self.__firstValue
+
+ def __clipFirstValue(self, value, max_=None):
+ """Clip first value to range and steps
+
+ :param float value:
+ :param float max_: Alternative maximum to use
+ """
+ if max_ is None:
+ max_ = self.getSecondValue()
+ value = min(max(self.getMinimum(), float(value)), max_)
+ if self.getPositionCount() is not None: # Clip to steps
+ value = self.__positionToValue(self.__valueToPosition(value))
+ return value
+
+ def setFirstValue(self, value):
+ """Set the value of the first slider
+
+ Value is clipped to valid values.
+
+ :param float value:
+ """
+ value = self.__clipFirstValue(value)
+ if value != self.getFirstValue():
+ self.__firstValue = value
+ self.update()
+ self.sigValueChanged.emit(*self.getValues())
+
+ def getSecondValue(self):
+ """Returns the value of the second slider
+
+ :rtype: float
+ """
+ return self.__secondValue
+
+ def __clipSecondValue(self, value):
+ """Clip second value to range and steps
+
+ :param float value:
+ """
+ value = min(max(self.getFirstValue(), float(value)), self.getMaximum())
+ if self.getPositionCount() is not None: # Clip to steps
+ value = self.__positionToValue(self.__valueToPosition(value))
+ return value
+
+ def setSecondValue(self, value):
+ """Set the value of the second slider
+
+ Value is clipped to valid values.
+
+ :param float value:
+ """
+ value = self.__clipSecondValue(value)
+ if value != self.getSecondValue():
+ self.__secondValue = value
+ self.update()
+ self.sigValueChanged.emit(*self.getValues())
+
+ def getValues(self):
+ """Returns value of both sliders at once
+
+ :return: (first value, second value)
+ :rtype: List[float]
+ """
+ return self.getFirstValue(), self.getSecondValue()
+
+ def setValues(self, first, second):
+ """Set values for both sliders at once
+
+ First is clipped to the slider range: [minimum, maximum].
+ Second is clipped to valid values: [first, maximum]
+
+ :param float first:
+ :param float second:
+ """
+ if self.__setValues(first, second):
+ self.sigValueChanged.emit(*self.getValues())
+
+ def __setValues(self, first, second):
+ """Set values for both sliders at once
+
+ First is clipped to the slider range: [minimum, maximum].
+ Second is clipped to valid values: [first, maximum]
+
+ :param float first:
+ :param float second:
+ :return: True if values has changed, False otherwise
+ :rtype: bool
+ """
+ first = self.__clipFirstValue(first, self.getMaximum())
+ second = self.__clipSecondValue(second)
+ values = first, second
+
+ if self.getValues() != values:
+ self.__firstValue, self.__secondValue = values
+ self.update()
+ return True
+ return False
+
+ # Groove API
+
+ def getGroovePixmap(self):
+ """Returns the pixmap displayed in the slider groove if any.
+
+ :rtype: Union[QPixmap,None]
+ """
+ return self.__pixmap
+
+ def setGroovePixmap(self, pixmap):
+ """Set the pixmap displayed in the slider groove.
+
+ :param Union[QPixmap,None] pixmap: The QPixmap to use or None to unset.
+ """
+ assert pixmap is None or isinstance(pixmap, qt.QPixmap)
+ self.__pixmap = pixmap
+ self.update()
+
+ def setGroovePixmapFromProfile(self, profile, colormap=None):
+ """Set the pixmap displayed in the slider groove from histogram values.
+
+ :param Union[numpy.ndarray,None] profile:
+ 1D array of values to display
+ :param Union[Colormap,str] colormap:
+ The colormap name or object to convert profile values to colors
+ """
+ if profile is None:
+ self.setSliderPixmap(None)
+ return
+
+ profile = numpy.array(profile, copy=False)
+
+ if profile.size == 0:
+ self.setSliderPixmap(None)
+ return
+
+ if colormap is None:
+ colormap = colors.Colormap()
+ elif isinstance(colormap, str):
+ colormap = colors.Colormap(name=colormap)
+ assert isinstance(colormap, colors.Colormap)
+
+ rgbImage = colormap.applyToData(profile.reshape(1, -1))[:, :, :3]
+ qimage = convertArrayToQImage(rgbImage)
+ qpixmap = qt.QPixmap.fromImage(qimage)
+ self.setGroovePixmap(qpixmap)
+
+ # Handle interaction
+
+ def mousePressEvent(self, event):
+ super(RangeSlider, self).mousePressEvent(event)
+
+ if event.buttons() == qt.Qt.LeftButton:
+ picked = None
+ for name in ('first', 'second'):
+ area = self.__sliderRect(name)
+ if area.contains(event.pos()):
+ picked = name
+ break
+
+ self.__moving = picked
+ self.__focus = picked
+ self.update()
+
+ def mouseMoveEvent(self, event):
+ super(RangeSlider, self).mouseMoveEvent(event)
+
+ if self.__moving is not None:
+ position = self.__xPixelToPosition(event.pos().x())
+ if self.__moving == 'first':
+ self.setFirstPosition(position)
+ else:
+ self.setSecondPosition(position)
+
+ def mouseReleaseEvent(self, event):
+ super(RangeSlider, self).mouseReleaseEvent(event)
+
+ if event.button() == qt.Qt.LeftButton and self.__moving is not None:
+ self.__moving = None
+ self.update()
+
+ def focusOutEvent(self, event):
+ if self.__focus is not None:
+ self.__focus = None
+ self.update()
+ super(RangeSlider, self).focusOutEvent(event)
+
+ def keyPressEvent(self, event):
+ key = event.key()
+ if event.modifiers() == qt.Qt.NoModifier and self.__focus is not None:
+ if key in (qt.Qt.Key_Left, qt.Qt.Key_Down):
+ if self.__focus == 'first':
+ self.setFirstPosition(self.getFirstPosition() - 1)
+ else:
+ self.setSecondPosition(self.getSecondPosition() - 1)
+ return # accept event
+ elif key in (qt.Qt.Key_Right, qt.Qt.Key_Up):
+ if self.__focus == 'first':
+ self.setFirstPosition(self.getFirstPosition() + 1)
+ else:
+ self.setSecondPosition(self.getSecondPosition() + 1)
+ return # accept event
+
+ super(RangeSlider, self).keyPressEvent(event)
+
+ # Handle resize
+
+ def resizeEvent(self, event):
+ super(RangeSlider, self).resizeEvent(event)
+
+ # If no step, signal position update when width change
+ if (self.getPositionCount() is None and
+ event.size().width() != event.oldSize().width()):
+ self.sigPositionChanged.emit(*self.getPositions())
+
+ # Handle repaint
+
+ def __xPixelToPosition(self, x):
+ """Convert position in pixel to slider position
+
+ :param int x: X in pixel coordinates
+ :rtype: int
+ """
+ sliderArea = self.__sliderAreaRect()
+ maxPos = self.__getCurrentPositionCount() - 1
+ position = maxPos * (x - sliderArea.left()) / (sliderArea.width() - 1)
+ return int(position + 0.5)
+
+ def __sliderRect(self, name):
+ """Returns rectangle corresponding to slider in pixels
+
+ :param str name: 'first' or 'second'
+ :rtype: QRect
+ :raise ValueError: If wrong name
+ """
+ assert name in ('first', 'second')
+ if name == 'first':
+ offset = - self._SLIDER_WIDTH
+ position = self.getFirstPosition()
+ elif name == 'second':
+ offset = 0
+ position = self.getSecondPosition()
+ else:
+ raise ValueError('Unknown name')
+
+ sliderArea = self.__sliderAreaRect()
+
+ maxPos = self.__getCurrentPositionCount() - 1
+ xOffset = int((sliderArea.width() - 1) * position / maxPos)
+ xPos = sliderArea.left() + xOffset + offset
+
+ return qt.QRect(xPos,
+ sliderArea.top(),
+ self._SLIDER_WIDTH,
+ sliderArea.height())
+
+ def __drawArea(self):
+ return self.rect().adjusted(self._SLIDER_WIDTH, 0,
+ -self._SLIDER_WIDTH, 0)
+
+ def __sliderAreaRect(self):
+ return self.__drawArea().adjusted(self._SLIDER_WIDTH / 2.,
+ 0,
+ -self._SLIDER_WIDTH / 2.,
+ 0)
+
+ def __pixMapRect(self):
+ return self.__sliderAreaRect().adjusted(0,
+ self._PIXMAP_VOFFSET,
+ 0,
+ -self._PIXMAP_VOFFSET)
+
+ def paintEvent(self, event):
+ painter = qt.QPainter(self)
+
+ style = qt.QApplication.style()
+
+ area = self.__drawArea()
+ pixmapRect = self.__pixMapRect()
+
+ option = qt.QStyleOptionProgressBar()
+ option.initFrom(self)
+ option.rect = area
+ option.state = ((self.isEnabled() and qt.QStyle.State_Enabled)
+ or qt.QStyle.State_None)
+ style.drawControl(qt.QStyle.CE_ProgressBarGroove,
+ option,
+ painter,
+ self)
+
+ painter.save()
+ pen = painter.pen()
+ pen.setWidth(1)
+ pen.setColor(qt.Qt.black if self.isEnabled() else qt.Qt.gray)
+ painter.setPen(pen)
+ painter.drawRect(pixmapRect.adjusted(-1, -1, 1, 1))
+ painter.restore()
+
+ if self.isEnabled() and self.__pixmap is not None:
+ painter.drawPixmap(area.adjusted(self._SLIDER_WIDTH / 2,
+ self._PIXMAP_VOFFSET,
+ -self._SLIDER_WIDTH / 2 + 1,
+ -self._PIXMAP_VOFFSET + 1),
+ self.__pixmap,
+ self.__pixmap.rect())
+
+ for name in ('first', 'second'):
+ rect = self.__sliderRect(name)
+ option = qt.QStyleOptionButton()
+ option.initFrom(self)
+ option.icon = self.__icons[name]
+ option.iconSize = rect.size() * 0.7
+ if option.state & qt.QStyle.State_MouseOver:
+ option.state ^= qt.QStyle.State_MouseOver
+ if self.__focus == name:
+ option.state |= qt.QStyle.State_HasFocus
+ elif option.state & qt.QStyle.State_HasFocus:
+ option.state ^= qt.QStyle.State_HasFocus
+ option.rect = rect
+ style.drawControl(
+ qt.QStyle.CE_PushButton, option, painter, self)
+
+ def sizeHint(self):
+ return qt.QSize(200, self.minimumHeight())
diff --git a/silx/gui/widgets/__init__.py b/silx/gui/widgets/__init__.py
index 034f4d3..9d0299d 100644
--- a/silx/gui/widgets/__init__.py
+++ b/silx/gui/widgets/__init__.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -22,6 +22,6 @@
# THE SOFTWARE.
#
# ###########################################################################*/
-"""This package provides a few simple Qt widgets that rely only on a Qt wrapper
-for Python (PyQt5, PyQt4 or PySide). No other optional dependencies of *silx*
-should be required."""
+"""This package provides a few simple Qt widgets that rely only on a Qt binding for Python.
+
+No other optional dependencies of *silx* should be required."""
diff --git a/silx/gui/widgets/test/__init__.py b/silx/gui/widgets/test/__init__.py
index 5e62393..8d179bc 100644
--- a/silx/gui/widgets/test/__init__.py
+++ b/silx/gui/widgets/test/__init__.py
@@ -31,6 +31,8 @@ from . import test_hierarchicaltableview
from . import test_printpreview
from . import test_framebrowser
from . import test_boxlayoutdockwidget
+from . import test_rangeslider
+from . import test_flowlayout
__authors__ = ["V. Valls", "P. Knobel"]
__license__ = "MIT"
@@ -47,5 +49,7 @@ def suite():
test_hierarchicaltableview.suite(),
test_framebrowser.suite(),
test_boxlayoutdockwidget.suite(),
+ test_rangeslider.suite(),
+ test_flowlayout.suite(),
])
return test_suite
diff --git a/silx/gui/widgets/test/test_boxlayoutdockwidget.py b/silx/gui/widgets/test/test_boxlayoutdockwidget.py
index 0df262b..9a93ca1 100644
--- a/silx/gui/widgets/test/test_boxlayoutdockwidget.py
+++ b/silx/gui/widgets/test/test_boxlayoutdockwidget.py
@@ -32,7 +32,7 @@ import unittest
from silx.gui.widgets.BoxLayoutDockWidget import BoxLayoutDockWidget
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
class TestBoxLayoutDockWidget(TestCaseQt):
diff --git a/silx/gui/widgets/test/test_flowlayout.py b/silx/gui/widgets/test/test_flowlayout.py
new file mode 100644
index 0000000..1497945
--- /dev/null
+++ b/silx/gui/widgets/test/test_flowlayout.py
@@ -0,0 +1,77 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""Tests for FlowLayout"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "02/08/2018"
+
+import unittest
+
+from silx.gui.widgets.FlowLayout import FlowLayout
+from silx.gui import qt
+from silx.gui.utils.testutils import TestCaseQt
+
+
+class TestFlowLayout(TestCaseQt):
+ """Tests for FlowLayout"""
+
+ def setUp(self):
+ """Create and show a widget"""
+ self.widget = qt.QWidget()
+ self.widget.show()
+ self.qWaitForWindowExposed(self.widget)
+
+ def tearDown(self):
+ """Delete widget"""
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.widget.close()
+ del self.widget
+ self.qapp.processEvents()
+
+ def test(self):
+ """Basic tests"""
+ layout = FlowLayout()
+ self.widget.setLayout(layout)
+
+ layout.addWidget(qt.QLabel('first'))
+ layout.addWidget(qt.QLabel('second'))
+ self.assertEqual(layout.count(), 2)
+
+ layout.setHorizontalSpacing(10)
+ self.assertEqual(layout.horizontalSpacing(), 10)
+ layout.setVerticalSpacing(5)
+ self.assertEqual(layout.verticalSpacing(), 5)
+
+
+def suite():
+ loader = unittest.defaultTestLoader.loadTestsFromTestCase
+ test_suite = unittest.TestSuite()
+ test_suite.addTest(loader(TestFlowLayout))
+ return test_suite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/widgets/test/test_framebrowser.py b/silx/gui/widgets/test/test_framebrowser.py
index 9988d16..2dfd302 100644
--- a/silx/gui/widgets/test/test_framebrowser.py
+++ b/silx/gui/widgets/test/test_framebrowser.py
@@ -29,7 +29,7 @@ __date__ = "23/03/2018"
import unittest
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.widgets.FrameBrowser import FrameBrowser
diff --git a/silx/gui/widgets/test/test_hierarchicaltableview.py b/silx/gui/widgets/test/test_hierarchicaltableview.py
index b3d37ed..9fad54d 100644
--- a/silx/gui/widgets/test/test_hierarchicaltableview.py
+++ b/silx/gui/widgets/test/test_hierarchicaltableview.py
@@ -29,7 +29,7 @@ __date__ = "07/04/2017"
import unittest
from .. import HierarchicalTableView
-from ...test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
diff --git a/silx/gui/widgets/test/test_periodictable.py b/silx/gui/widgets/test/test_periodictable.py
index c6bed81..3e7eb16 100644
--- a/silx/gui/widgets/test/test_periodictable.py
+++ b/silx/gui/widgets/test/test_periodictable.py
@@ -29,7 +29,7 @@ __date__ = "05/12/2016"
import unittest
from .. import PeriodicTable
-from ...test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui import qt
diff --git a/silx/gui/widgets/test/test_printpreview.py b/silx/gui/widgets/test/test_printpreview.py
index ecb165a..3c29171 100644
--- a/silx/gui/widgets/test/test_printpreview.py
+++ b/silx/gui/widgets/test/test_printpreview.py
@@ -30,7 +30,7 @@ __date__ = "19/07/2017"
import unittest
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.widgets.PrintPreview import PrintPreviewDialog
from silx.gui import qt
diff --git a/silx/gui/widgets/test/test_rangeslider.py b/silx/gui/widgets/test/test_rangeslider.py
new file mode 100644
index 0000000..2829050
--- /dev/null
+++ b/silx/gui/widgets/test/test_rangeslider.py
@@ -0,0 +1,114 @@
+# coding: utf-8
+# /*##########################################################################
+#
+# Copyright (c) 2018 European Synchrotron Radiation Facility
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# ###########################################################################*/
+"""Tests for RangeSlider"""
+
+__authors__ = ["T. Vincent"]
+__license__ = "MIT"
+__date__ = "01/08/2018"
+
+import unittest
+
+from silx.gui import qt, colors
+from silx.gui.widgets.RangeSlider import RangeSlider
+from silx.gui.utils.testutils import TestCaseQt
+from silx.utils.testutils import ParametricTestCase
+
+
+class TestRangeSlider(TestCaseQt, ParametricTestCase):
+ """Tests for TestRangeSlider"""
+
+ def setUp(self):
+ self.slider = RangeSlider()
+ self.slider.show()
+ self.qWaitForWindowExposed(self.slider)
+
+ def tearDown(self):
+ self.slider.setAttribute(qt.Qt.WA_DeleteOnClose)
+ self.slider.close()
+ del self.slider
+ self.qapp.processEvents()
+
+ def testRangeValue(self):
+ """Test slider range and values"""
+
+ # Play with range
+ self.slider.setRange(1, 2)
+ self.assertEqual(self.slider.getRange(), (1., 2.))
+ self.assertEqual(self.slider.getValues(), (1., 1.))
+
+ self.slider.setMinimum(-1)
+ self.assertEqual(self.slider.getRange(), (-1., 2.))
+ self.assertEqual(self.slider.getValues(), (1., 1.))
+
+ self.slider.setMaximum(0)
+ self.assertEqual(self.slider.getRange(), (-1., 0.))
+ self.assertEqual(self.slider.getValues(), (0., 0.))
+
+ # Play with values
+ self.slider.setFirstValue(-2.)
+ self.assertEqual(self.slider.getValues(), (-1., 0.))
+
+ self.slider.setFirstValue(-0.5)
+ self.assertEqual(self.slider.getValues(), (-0.5, 0.))
+
+ self.slider.setSecondValue(2.)
+ self.assertEqual(self.slider.getValues(), (-0.5, 0.))
+
+ self.slider.setSecondValue(-0.1)
+ self.assertEqual(self.slider.getValues(), (-0.5, -0.1))
+
+ def testStepCount(self):
+ """Test related to step count"""
+ self.slider.setPositionCount(11)
+ self.assertEqual(self.slider.getPositionCount(), 11)
+ self.slider.setFirstValue(0.32)
+ self.assertEqual(self.slider.getFirstValue(), 0.3)
+ self.assertEqual(self.slider.getFirstPosition(), 3)
+
+ self.slider.setPositionCount(3) # Value is adjusted
+ self.assertEqual(self.slider.getValues(), (0.5, 1.))
+ self.assertEqual(self.slider.getPositions(), (1, 2))
+
+ def testGroove(self):
+ """Test Groove pixmap"""
+ profile = list(range(100))
+
+ for cmap in ('jet', colors.Colormap('viridis')):
+ with self.subTest(str(cmap)):
+ self.slider.setGroovePixmapFromProfile(profile, cmap)
+ pixmap = self.slider.getGroovePixmap()
+ self.assertIsInstance(pixmap, qt.QPixmap)
+ self.assertEqual(pixmap.width(), len(profile))
+
+
+def suite():
+ loader = unittest.defaultTestLoader.loadTestsFromTestCase
+ test_suite = unittest.TestSuite()
+ test_suite.addTest(loader(TestRangeSlider))
+ return test_suite
+
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='suite')
diff --git a/silx/gui/widgets/test/test_tablewidget.py b/silx/gui/widgets/test/test_tablewidget.py
index 5ad0a06..6822aef 100644
--- a/silx/gui/widgets/test/test_tablewidget.py
+++ b/silx/gui/widgets/test/test_tablewidget.py
@@ -30,7 +30,7 @@ __date__ = "05/12/2016"
import unittest
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.widgets.TableWidget import TableWidget
diff --git a/silx/gui/widgets/test/test_threadpoolpushbutton.py b/silx/gui/widgets/test/test_threadpoolpushbutton.py
index a8618a4..e92eb02 100644
--- a/silx/gui/widgets/test/test_threadpoolpushbutton.py
+++ b/silx/gui/widgets/test/test_threadpoolpushbutton.py
@@ -32,8 +32,8 @@ __date__ = "17/01/2018"
import unittest
import time
from silx.gui import qt
-from silx.gui.test.utils import TestCaseQt
-from silx.gui.test.utils import SignalListener
+from silx.gui.utils.testutils import TestCaseQt
+from silx.gui.utils.testutils import SignalListener
from silx.gui.widgets.ThreadPoolPushButton import ThreadPoolPushButton
from silx.utils.testutils import TestLogging
diff --git a/silx/image/bilinear.c b/silx/image/bilinear.c
index 8c3d151..ad02809 100644
--- a/silx/image/bilinear.c
+++ b/silx/image/bilinear.c
@@ -1,15 +1,15 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
- "depends": [],
- "language": "c",
- "name": "silx.image.bilinear",
+ "depends": [],
+ "language": "c",
+ "name": "silx.image.bilinear",
"sources": [
"silx/image/bilinear.pyx"
]
- },
+ },
"module_name": "silx.image.bilinear"
}
END: Cython Metadata */
@@ -21,7 +21,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -92,6 +93,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -129,6 +134,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -182,11 +191,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -322,6 +337,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -335,15 +353,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -451,8 +494,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -610,6 +653,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -668,6 +714,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -748,7 +795,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1149,13 +1196,8 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
@@ -1179,13 +1221,6 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
int is_list, int wraparound, int boundscheck);
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
-
/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
@@ -1195,6 +1230,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1209,9 +1256,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
@@ -1219,8 +1263,36 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif
+/* PyCFunctionFastCall.proto */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
+#else
+#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
+#endif
+
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* MemviewSliceInit.proto */
#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
@@ -1301,6 +1373,9 @@ static CYTHON_INLINE int __Pyx_IterFinish(void);
/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
@@ -1382,6 +1457,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1737,6 +1817,7 @@ static const char __pyx_k_data[] = "data";
static const char __pyx_k_date[] = "__date__";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_main[] = "__main__";
+static const char __pyx_k_mean[] = "mean";
static const char __pyx_k_mode[] = "mode";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_ndim[] = "ndim";
@@ -1765,6 +1846,7 @@ static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_logger[] = "logger";
+static const char __pyx_k_method[] = "method";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_reduce[] = "__reduce__";
@@ -1801,6 +1883,7 @@ static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_PickleError[] = "PickleError";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_stringsource[] = "stringsource";
+static const char __pyx_k_BilinearImage[] = "BilinearImage";
static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_View_MemoryView[] = "View.MemoryView";
@@ -1842,6 +1925,7 @@ static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __red
static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides.";
static PyObject *__pyx_kp_s_15_09_2016;
static PyObject *__pyx_n_s_ASCII;
+static PyObject *__pyx_n_s_BilinearImage;
static PyObject *__pyx_kp_s_Bilinear_interpolator_peak_finde;
static PyObject *__pyx_kp_s_Buffer_view_does_not_expose_stri;
static PyObject *__pyx_kp_s_Can_only_create_a_buffer_that_is;
@@ -1914,7 +1998,9 @@ static PyObject *__pyx_n_s_logger;
static PyObject *__pyx_n_s_logging;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_max;
+static PyObject *__pyx_n_s_mean;
static PyObject *__pyx_n_s_memview;
+static PyObject *__pyx_n_s_method;
static PyObject *__pyx_n_s_min;
static PyObject *__pyx_n_s_mode;
static PyObject *__pyx_n_s_name;
@@ -1968,7 +2054,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_6opp_f(struct _
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_coord); /* proto */
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_10coarse_local_maxi(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, size_t __pyx_v_x); /* proto */
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinates(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_coordinates); /* proto */
-static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, int __pyx_v_linewidth); /* proto */
+static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, int __pyx_v_linewidth, PyObject *__pyx_v_method); /* proto */
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_4data___get__(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_4maxi___get__(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_4mini___get__(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self); /* proto */
@@ -2037,9 +2123,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__21;
-static PyObject *__pyx_slice__22;
-static PyObject *__pyx_slice__23;
+static PyObject *__pyx_slice__17;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2047,20 +2131,16 @@ static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__21;
+static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__27;
-static PyObject *__pyx_tuple__28;
-static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_codeobj__33;
+static PyObject *__pyx_codeobj__27;
/* Late includes */
/* "silx/image/bilinear.pyx":51
@@ -2216,12 +2296,9 @@ static int __pyx_pf_4silx_5image_8bilinear_13BilinearImage___cinit__(struct __py
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 59, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L1_error)
@@ -2247,12 +2324,9 @@ static int __pyx_pf_4silx_5image_8bilinear_13BilinearImage___cinit__(struct __py
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error)
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L1_error)
@@ -2266,7 +2340,7 @@ static int __pyx_pf_4silx_5image_8bilinear_13BilinearImage___cinit__(struct __py
*
* def __dealloc__(self):
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -2278,7 +2352,7 @@ static int __pyx_pf_4silx_5image_8bilinear_13BilinearImage___cinit__(struct __py
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
@@ -3435,14 +3509,26 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(str
* else:
* delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_kp_s_Singular_determinant_Hessian_und) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Singular_determinant_Hessian_und);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/image/bilinear.pyx":183
@@ -3502,18 +3588,18 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(str
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyFloat_FromDouble((__pyx_v_delta0 + ((double)__pyx_v_current0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyFloat_FromDouble((__pyx_v_delta1 + ((double)__pyx_v_current1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __pyx_t_3 = PyFloat_FromDouble((__pyx_v_delta1 + ((double)__pyx_v_current1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 190, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
__pyx_t_1 = 0;
- __pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
+ __pyx_r = __pyx_t_2;
+ __pyx_t_2 = 0;
goto __pyx_L0;
/* "silx/image/bilinear.pyx":188
@@ -3533,15 +3619,27 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(str
* for i0 in range(current0 - 1, current0 + 2):
*/
/*else*/ {
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 192, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_kp_s_Failed_to_find_root_using_second) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Failed_to_find_root_using_second);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
}
__pyx_L8:;
@@ -3629,20 +3727,20 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(str
* return (float(current0), float(current1))
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_sum0 / __pyx_v_sum)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyFloat_FromDouble((__pyx_v_sum1 / __pyx_v_sum)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __pyx_t_2 = PyFloat_FromDouble((__pyx_v_sum0 / __pyx_v_sum)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 201, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __pyx_t_1 = PyFloat_FromDouble((__pyx_v_sum1 / __pyx_v_sum)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
- __pyx_t_3 = 0;
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
__pyx_t_2 = 0;
- __pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
+ __pyx_r = __pyx_t_3;
+ __pyx_t_3 = 0;
goto __pyx_L0;
/* "silx/image/bilinear.pyx":200
@@ -3671,20 +3769,20 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_8local_maxi(str
* cpdef size_t coarse_local_maxi(self, size_t x):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyFloat_FromDouble(((double)__pyx_v_current0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __pyx_t_3 = PyFloat_FromDouble(((double)__pyx_v_current0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = PyFloat_FromDouble(((double)__pyx_v_current1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyFloat_FromDouble(((double)__pyx_v_current1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ __pyx_t_3 = 0;
__pyx_t_1 = 0;
+ __pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
- __pyx_r = __pyx_t_3;
- __pyx_t_3 = 0;
goto __pyx_L0;
/* "silx/image/bilinear.pyx":143
@@ -3725,72 +3823,57 @@ static size_t __pyx_f_4silx_5image_8bilinear_13BilinearImage_coarse_local_maxi(s
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- size_t __pyx_t_7;
+ size_t __pyx_t_6;
__Pyx_RefNannySetupContext("coarse_local_maxi", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
- else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_coarse_local_maxi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_11coarse_local_maxi)) {
- __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_1);
- __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
+ else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+ static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
+ if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
+ else {
+ PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
+ #endif
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_coarse_local_maxi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_11coarse_local_maxi)) {
+ __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
}
- }
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_6;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ goto __pyx_L0;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_7;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+ tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
+ obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
+ if (unlikely(type_dict_guard != tp_dict_version)) {
+ tp_dict_version = obj_dict_version = 0;
+ }
+ #endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- goto __pyx_L0;
+ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ #endif
}
/* "silx/image/bilinear.pyx":211
@@ -3818,7 +3901,6 @@ static size_t __pyx_f_4silx_5image_8bilinear_13BilinearImage_coarse_local_maxi(s
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_WriteUnraisable("silx.image.bilinear.BilinearImage.coarse_local_maxi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
@@ -4211,7 +4293,6 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
size_t __pyx_t_11;
size_t __pyx_t_12;
size_t __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
__Pyx_RefNannySetupContext("map_coordinates", 0);
/* "silx/image/bilinear.pyx":259
@@ -4252,7 +4333,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
* d1 = numpy.ascontiguousarray(coordinates[1].ravel(), dtype=numpy.float32)
* assert size == d1.size
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4272,12 +4353,9 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
@@ -4287,7 +4365,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -4312,7 +4390,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
* assert size == d1.size
* res = numpy.empty(size, dtype=numpy.float32)
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4332,12 +4410,9 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
- }
+ __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
@@ -4347,7 +4422,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -4400,7 +4475,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
* with nogil:
* for i in range(size):
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4414,7 +4489,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -4500,7 +4575,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
* @cython.boundscheck(False)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4517,41 +4592,11 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_6 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4566,38 +4611,10 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_shape};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v_shape};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v_shape);
- __Pyx_GIVEREF(__pyx_v_shape);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_shape);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_v_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shape);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_5;
__pyx_t_5 = 0;
@@ -4619,7 +4636,6 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
- __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.image.bilinear.BilinearImage.map_coordinates", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4635,28 +4651,32 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_12map_coordinat
/* "silx/image/bilinear.pyx":271
*
* @cython.boundscheck(False)
- * def profile_line(self, src, dst, int linewidth=1): # <<<<<<<<<<<<<<
- * """Return the intensity profile of an image measured along a scan line.
- *
+ * def profile_line(self, src, dst, int linewidth=1, method='mean'): # <<<<<<<<<<<<<<
+ * """Return the mean or sum of intensity profile of an image measured
+ * along a scan line.
*/
/* Python wrapper */
static PyObject *__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_5image_8bilinear_13BilinearImage_14profile_line[] = "BilinearImage.profile_line(self, src, dst, int linewidth=1)\nReturn the intensity profile of an image measured along a scan line.\n\n :param src: The start point of the scan line.\n :type src: 2-tuple of numeric scalar\n :param dst: The end point of the scan line.\n The destination point is included in the profile,\n in contrast to standard numpy indexing.\n :type dst: 2-tuple of numeric scalar\n :param int linewidth: Width of the scanline (unit image pixel).\n :return: The intensity profile along the scan line.\n The length of the profile is the ceil of the computed length\n of the scan line.\n :rtype: 1d array\n\n Inspired from skimage\n ";
+static char __pyx_doc_4silx_5image_8bilinear_13BilinearImage_14profile_line[] = "BilinearImage.profile_line(self, src, dst, int linewidth=1, method='mean')\nReturn the mean or sum of intensity profile of an image measured\n along a scan line.\n\n :param src: The start point of the scan line.\n :type src: 2-tuple of numeric scalar\n :param dst: The end point of the scan line.\n The destination point is included in the profile,\n in contrast to standard numpy indexing.\n :type dst: 2-tuple of numeric scalar\n :param int linewidth: Width of the scanline (unit image pixel).\n :param str method: 'mean' or 'sum' depending if we want to compute the\n mean intensity along the line or the sum.\n :return: The intensity profile along the scan line.\n The length of the profile is the ceil of the computed length\n of the scan line.\n :rtype: 1d array\n\n Inspired from skimage\n ";
static PyObject *__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_src = 0;
PyObject *__pyx_v_dst = 0;
int __pyx_v_linewidth;
+ PyObject *__pyx_v_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("profile_line (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_src,&__pyx_n_s_dst,&__pyx_n_s_linewidth,0};
- PyObject* values[3] = {0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_src,&__pyx_n_s_dst,&__pyx_n_s_linewidth,&__pyx_n_s_method,0};
+ PyObject* values[4] = {0,0,0,0};
+ values[3] = ((PyObject *)__pyx_n_s_mean);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -4675,7 +4695,7 @@ static PyObject *__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line(
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dst)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("profile_line", 0, 2, 3, 1); __PYX_ERR(0, 271, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("profile_line", 0, 2, 4, 1); __PYX_ERR(0, 271, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
@@ -4683,12 +4703,20 @@ static PyObject *__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line(
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_linewidth);
if (value) { values[2] = value; kw_args--; }
}
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
+ if (value) { values[3] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "profile_line") < 0)) __PYX_ERR(0, 271, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+ CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -4704,23 +4732,24 @@ static PyObject *__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line(
} else {
__pyx_v_linewidth = ((int)1);
}
+ __pyx_v_method = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("profile_line", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 271, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("profile_line", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 271, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.image.bilinear.BilinearImage.profile_line", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(((struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *)__pyx_v_self), __pyx_v_src, __pyx_v_dst, __pyx_v_linewidth);
+ __pyx_r = __pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(((struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *)__pyx_v_self), __pyx_v_src, __pyx_v_dst, __pyx_v_linewidth, __pyx_v_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, int __pyx_v_linewidth) {
+static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(struct __pyx_obj_4silx_5image_8bilinear_BilinearImage *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, int __pyx_v_linewidth, PyObject *__pyx_v_method) {
float __pyx_v_src_row;
float __pyx_v_src_col;
float __pyx_v_dst_row;
@@ -4740,6 +4769,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
int __pyx_v_j;
int __pyx_v_cnt;
__Pyx_memviewslice __pyx_v_result = { 0, 0, { 0 }, { 0 }, { 0 } };
+ PyObject *__pyx_v_compute_mean = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
@@ -4760,9 +4790,10 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
int __pyx_t_16;
int __pyx_t_17;
Py_ssize_t __pyx_t_18;
+ Py_ssize_t __pyx_t_19;
__Pyx_RefNannySetupContext("profile_line", 0);
- /* "silx/image/bilinear.pyx":293
+ /* "silx/image/bilinear.pyx":296
* int lengt, i, j, cnt
* float[::1] result
* src_row, src_col = src # <<<<<<<<<<<<<<
@@ -4775,7 +4806,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 293, __pyx_L1_error)
+ __PYX_ERR(0, 296, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
@@ -4788,21 +4819,21 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_2);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
} else {
Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_v_src); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __pyx_t_3 = PyObject_GetIter(__pyx_v_src); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 296, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 293, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 296, __pyx_L1_error)
__pyx_t_4 = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L4_unpacking_done;
@@ -4810,17 +4841,17 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_4 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 293, __pyx_L1_error)
+ __PYX_ERR(0, 296, __pyx_L1_error)
__pyx_L4_unpacking_done:;
}
- __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 293, __pyx_L1_error)
+ __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 293, __pyx_L1_error)
+ __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_src_row = __pyx_t_5;
__pyx_v_src_col = __pyx_t_6;
- /* "silx/image/bilinear.pyx":294
+ /* "silx/image/bilinear.pyx":297
* float[::1] result
* src_row, src_col = src
* dst_row, dst_col = dst # <<<<<<<<<<<<<<
@@ -4833,7 +4864,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(0, 294, __pyx_L1_error)
+ __PYX_ERR(0, 297, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
@@ -4846,21 +4877,21 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx_t_1);
#else
- __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_v_dst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_3 = PyObject_GetIter(__pyx_v_dst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 294, __pyx_L1_error)
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 297, __pyx_L1_error)
__pyx_t_4 = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L6_unpacking_done;
@@ -4868,17 +4899,17 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_4 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- __PYX_ERR(0, 294, __pyx_L1_error)
+ __PYX_ERR(0, 297, __pyx_L1_error)
__pyx_L6_unpacking_done:;
}
- __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 297, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 297, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_dst_row = __pyx_t_6;
__pyx_v_dst_col = __pyx_t_5;
- /* "silx/image/bilinear.pyx":295
+ /* "silx/image/bilinear.pyx":298
* src_row, src_col = src
* dst_row, dst_col = dst
* if (src_row == dst_row) and (src_col == dst_col): # <<<<<<<<<<<<<<
@@ -4896,24 +4927,36 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_L8_bool_binop_done:;
if (__pyx_t_7) {
- /* "silx/image/bilinear.pyx":296
+ /* "silx/image/bilinear.pyx":299
* dst_row, dst_col = dst
* if (src_row == dst_row) and (src_col == dst_col):
* logger.warning("Source and destination points are the same") # <<<<<<<<<<<<<<
* return numpy.array([self.c_funct(src_col, src_row)])
* d_row = dst_row - src_row
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_kp_s_Source_and_destination_points_ar) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Source_and_destination_points_ar);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/image/bilinear.pyx":297
+ /* "silx/image/bilinear.pyx":300
* if (src_row == dst_row) and (src_col == dst_col):
* logger.warning("Source and destination points are the same")
* return numpy.array([self.c_funct(src_col, src_row)]) # <<<<<<<<<<<<<<
@@ -4921,69 +4964,39 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
* d_col = dst_col - src_col
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 297, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyFloat_FromDouble(((struct __pyx_vtabstruct_4silx_5image_8bilinear_BilinearImage *)__pyx_v_self->__pyx_vtab)->c_funct(__pyx_v_self, __pyx_v_src_col, __pyx_v_src_row)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 297, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 297, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_4silx_5image_8bilinear_BilinearImage *)__pyx_v_self->__pyx_vtab)->c_funct(__pyx_v_self, __pyx_v_src_col, __pyx_v_src_row)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_2);
- PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyList_SET_ITEM(__pyx_t_9, 0, __pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_9};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_9};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 297, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "silx/image/bilinear.pyx":295
+ /* "silx/image/bilinear.pyx":298
* src_row, src_col = src
* dst_row, dst_col = dst
* if (src_row == dst_row) and (src_col == dst_col): # <<<<<<<<<<<<<<
@@ -4992,7 +5005,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
}
- /* "silx/image/bilinear.pyx":298
+ /* "silx/image/bilinear.pyx":301
* logger.warning("Source and destination points are the same")
* return numpy.array([self.c_funct(src_col, src_row)])
* d_row = dst_row - src_row # <<<<<<<<<<<<<<
@@ -5001,7 +5014,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_d_row = (__pyx_v_dst_row - __pyx_v_src_row);
- /* "silx/image/bilinear.pyx":299
+ /* "silx/image/bilinear.pyx":302
* return numpy.array([self.c_funct(src_col, src_row)])
* d_row = dst_row - src_row
* d_col = dst_col - src_col # <<<<<<<<<<<<<<
@@ -5010,7 +5023,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_d_col = (__pyx_v_dst_col - __pyx_v_src_col);
- /* "silx/image/bilinear.pyx":302
+ /* "silx/image/bilinear.pyx":305
*
* # Offsets to deal with linewidth
* length = sqrt(d_row * d_row + d_col * d_col) # <<<<<<<<<<<<<<
@@ -5019,7 +5032,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_length = sqrt(((__pyx_v_d_row * __pyx_v_d_row) + (__pyx_v_d_col * __pyx_v_d_col)));
- /* "silx/image/bilinear.pyx":303
+ /* "silx/image/bilinear.pyx":306
* # Offsets to deal with linewidth
* length = sqrt(d_row * d_row + d_col * d_col)
* row_width = d_col / length # <<<<<<<<<<<<<<
@@ -5028,11 +5041,11 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
if (unlikely(__pyx_v_length == 0)) {
PyErr_SetString(PyExc_ZeroDivisionError, "float division");
- __PYX_ERR(0, 303, __pyx_L1_error)
+ __PYX_ERR(0, 306, __pyx_L1_error)
}
__pyx_v_row_width = (__pyx_v_d_col / __pyx_v_length);
- /* "silx/image/bilinear.pyx":304
+ /* "silx/image/bilinear.pyx":307
* length = sqrt(d_row * d_row + d_col * d_col)
* row_width = d_col / length
* col_width = - d_row / length # <<<<<<<<<<<<<<
@@ -5042,11 +5055,11 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_t_5 = (-__pyx_v_d_row);
if (unlikely(__pyx_v_length == 0)) {
PyErr_SetString(PyExc_ZeroDivisionError, "float division");
- __PYX_ERR(0, 304, __pyx_L1_error)
+ __PYX_ERR(0, 307, __pyx_L1_error)
}
__pyx_v_col_width = (__pyx_t_5 / __pyx_v_length);
- /* "silx/image/bilinear.pyx":306
+ /* "silx/image/bilinear.pyx":309
* col_width = - d_row / length
*
* lengt = <int> ceil(length + 1) # <<<<<<<<<<<<<<
@@ -5055,7 +5068,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_lengt = ((int)ceil((__pyx_v_length + 1.0)));
- /* "silx/image/bilinear.pyx":307
+ /* "silx/image/bilinear.pyx":310
*
* lengt = <int> ceil(length + 1)
* d_row /= <float> (lengt -1) # <<<<<<<<<<<<<<
@@ -5065,11 +5078,11 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_t_5 = ((float)(__pyx_v_lengt - 1));
if (unlikely(__pyx_t_5 == 0)) {
PyErr_SetString(PyExc_ZeroDivisionError, "float division");
- __PYX_ERR(0, 307, __pyx_L1_error)
+ __PYX_ERR(0, 310, __pyx_L1_error)
}
__pyx_v_d_row = (__pyx_v_d_row / __pyx_t_5);
- /* "silx/image/bilinear.pyx":308
+ /* "silx/image/bilinear.pyx":311
* lengt = <int> ceil(length + 1)
* d_row /= <float> (lengt -1)
* d_col /= <float> (lengt -1) # <<<<<<<<<<<<<<
@@ -5079,50 +5092,50 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_t_5 = ((float)(__pyx_v_lengt - 1));
if (unlikely(__pyx_t_5 == 0)) {
PyErr_SetString(PyExc_ZeroDivisionError, "float division");
- __PYX_ERR(0, 308, __pyx_L1_error)
+ __PYX_ERR(0, 311, __pyx_L1_error)
}
__pyx_v_d_col = (__pyx_v_d_col / __pyx_t_5);
- /* "silx/image/bilinear.pyx":310
+ /* "silx/image/bilinear.pyx":313
* d_col /= <float> (lengt -1)
*
* result = numpy.zeros(lengt, dtype=numpy.float32) # <<<<<<<<<<<<<<
*
* # Offset position to the center of the bottom pixels of the profile
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_lengt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_lengt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_float(__pyx_t_10, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_v_result = __pyx_t_11;
__pyx_t_11.memview = NULL;
__pyx_t_11.data = NULL;
- /* "silx/image/bilinear.pyx":313
+ /* "silx/image/bilinear.pyx":316
*
* # Offset position to the center of the bottom pixels of the profile
* src_row -= row_width * (linewidth - 1) / 2. # <<<<<<<<<<<<<<
@@ -5131,18 +5144,29 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_src_row = (__pyx_v_src_row - ((__pyx_v_row_width * (__pyx_v_linewidth - 1)) / 2.));
- /* "silx/image/bilinear.pyx":314
+ /* "silx/image/bilinear.pyx":317
* # Offset position to the center of the bottom pixels of the profile
* src_row -= row_width * (linewidth - 1) / 2.
* src_col -= col_width * (linewidth - 1) / 2. # <<<<<<<<<<<<<<
*
- * with nogil:
+ * compute_mean = (method == 'mean')
*/
__pyx_v_src_col = (__pyx_v_src_col - ((__pyx_v_col_width * (__pyx_v_linewidth - 1)) / 2.));
- /* "silx/image/bilinear.pyx":316
+ /* "silx/image/bilinear.pyx":319
* src_col -= col_width * (linewidth - 1) / 2.
*
+ * compute_mean = (method == 'mean') # <<<<<<<<<<<<<<
+ * with nogil:
+ * for i in range(lengt):
+ */
+ __pyx_t_10 = PyObject_RichCompare(__pyx_v_method, __pyx_n_s_mean, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 319, __pyx_L1_error)
+ __pyx_v_compute_mean = __pyx_t_10;
+ __pyx_t_10 = 0;
+
+ /* "silx/image/bilinear.pyx":320
+ *
+ * compute_mean = (method == 'mean')
* with nogil: # <<<<<<<<<<<<<<
* for i in range(lengt):
* sum = 0
@@ -5155,8 +5179,8 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
#endif
/*try:*/ {
- /* "silx/image/bilinear.pyx":317
- *
+ /* "silx/image/bilinear.pyx":321
+ * compute_mean = (method == 'mean')
* with nogil:
* for i in range(lengt): # <<<<<<<<<<<<<<
* sum = 0
@@ -5167,7 +5191,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_i = __pyx_t_14;
- /* "silx/image/bilinear.pyx":318
+ /* "silx/image/bilinear.pyx":322
* with nogil:
* for i in range(lengt):
* sum = 0 # <<<<<<<<<<<<<<
@@ -5176,7 +5200,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_sum = 0.0;
- /* "silx/image/bilinear.pyx":319
+ /* "silx/image/bilinear.pyx":323
* for i in range(lengt):
* sum = 0
* cnt = 0 # <<<<<<<<<<<<<<
@@ -5185,7 +5209,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_cnt = 0;
- /* "silx/image/bilinear.pyx":321
+ /* "silx/image/bilinear.pyx":325
* cnt = 0
*
* row = src_row + i * d_row # <<<<<<<<<<<<<<
@@ -5194,7 +5218,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_row = (__pyx_v_src_row + (__pyx_v_i * __pyx_v_d_row));
- /* "silx/image/bilinear.pyx":322
+ /* "silx/image/bilinear.pyx":326
*
* row = src_row + i * d_row
* col = src_col + i * d_col # <<<<<<<<<<<<<<
@@ -5203,7 +5227,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_col = (__pyx_v_src_col + (__pyx_v_i * __pyx_v_d_col));
- /* "silx/image/bilinear.pyx":324
+ /* "silx/image/bilinear.pyx":328
* col = src_col + i * d_col
*
* for j in range(linewidth): # <<<<<<<<<<<<<<
@@ -5215,7 +5239,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_j = __pyx_t_17;
- /* "silx/image/bilinear.pyx":325
+ /* "silx/image/bilinear.pyx":329
*
* for j in range(linewidth):
* new_row = row + j * row_width # <<<<<<<<<<<<<<
@@ -5224,7 +5248,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_new_row = (__pyx_v_row + (__pyx_v_j * __pyx_v_row_width));
- /* "silx/image/bilinear.pyx":326
+ /* "silx/image/bilinear.pyx":330
* for j in range(linewidth):
* new_row = row + j * row_width
* new_col = col + j * col_width # <<<<<<<<<<<<<<
@@ -5233,7 +5257,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_new_col = (__pyx_v_col + (__pyx_v_j * __pyx_v_col_width));
- /* "silx/image/bilinear.pyx":327
+ /* "silx/image/bilinear.pyx":331
* new_row = row + j * row_width
* new_col = col + j * col_width
* if ((new_col >= 0) and (new_col < self.width) and # <<<<<<<<<<<<<<
@@ -5253,7 +5277,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
goto __pyx_L18_bool_binop_done;
}
- /* "silx/image/bilinear.pyx":328
+ /* "silx/image/bilinear.pyx":332
* new_col = col + j * col_width
* if ((new_col >= 0) and (new_col < self.width) and
* (new_row >= 0) and (new_row < self.height)): # <<<<<<<<<<<<<<
@@ -5270,7 +5294,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_t_7 = __pyx_t_8;
__pyx_L18_bool_binop_done:;
- /* "silx/image/bilinear.pyx":327
+ /* "silx/image/bilinear.pyx":331
* new_row = row + j * row_width
* new_col = col + j * col_width
* if ((new_col >= 0) and (new_col < self.width) and # <<<<<<<<<<<<<<
@@ -5279,7 +5303,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
if (__pyx_t_7) {
- /* "silx/image/bilinear.pyx":329
+ /* "silx/image/bilinear.pyx":333
* if ((new_col >= 0) and (new_col < self.width) and
* (new_row >= 0) and (new_row < self.height)):
* cnt = cnt + 1 # <<<<<<<<<<<<<<
@@ -5288,16 +5312,16 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
*/
__pyx_v_cnt = (__pyx_v_cnt + 1);
- /* "silx/image/bilinear.pyx":330
+ /* "silx/image/bilinear.pyx":334
* (new_row >= 0) and (new_row < self.height)):
* cnt = cnt + 1
* sum = sum + self.c_funct(new_col, new_row) # <<<<<<<<<<<<<<
* if cnt:
- * result[i] += sum / cnt
+ * if compute_mean is True:
*/
__pyx_v_sum = (__pyx_v_sum + ((struct __pyx_vtabstruct_4silx_5image_8bilinear_BilinearImage *)__pyx_v_self->__pyx_vtab)->c_funct(__pyx_v_self, __pyx_v_new_col, __pyx_v_new_row));
- /* "silx/image/bilinear.pyx":327
+ /* "silx/image/bilinear.pyx":331
* new_row = row + j * row_width
* new_col = col + j * col_width
* if ((new_col >= 0) and (new_col < self.width) and # <<<<<<<<<<<<<<
@@ -5307,51 +5331,86 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
}
}
- /* "silx/image/bilinear.pyx":331
+ /* "silx/image/bilinear.pyx":335
* cnt = cnt + 1
* sum = sum + self.c_funct(new_col, new_row)
* if cnt: # <<<<<<<<<<<<<<
- * result[i] += sum / cnt
- *
+ * if compute_mean is True:
+ * result[i] += sum / cnt
*/
__pyx_t_7 = (__pyx_v_cnt != 0);
if (__pyx_t_7) {
- /* "silx/image/bilinear.pyx":332
+ /* "silx/image/bilinear.pyx":336
* sum = sum + self.c_funct(new_col, new_row)
* if cnt:
- * result[i] += sum / cnt # <<<<<<<<<<<<<<
+ * if compute_mean is True: # <<<<<<<<<<<<<<
+ * result[i] += sum / cnt
+ * else:
+ */
+ __pyx_t_7 = (__pyx_v_compute_mean == Py_True);
+ __pyx_t_8 = (__pyx_t_7 != 0);
+ if (__pyx_t_8) {
+
+ /* "silx/image/bilinear.pyx":337
+ * if cnt:
+ * if compute_mean is True:
+ * result[i] += sum / cnt # <<<<<<<<<<<<<<
+ * else:
+ * result[i] += sum
+ */
+ if (unlikely(__pyx_v_cnt == 0)) {
+ #ifdef WITH_THREAD
+ PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+ #endif
+ PyErr_SetString(PyExc_ZeroDivisionError, "float division");
+ #ifdef WITH_THREAD
+ __Pyx_PyGILState_Release(__pyx_gilstate_save);
+ #endif
+ __PYX_ERR(0, 337, __pyx_L11_error)
+ }
+ __pyx_t_18 = __pyx_v_i;
+ if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_v_result.shape[0];
+ *((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_result.data) + __pyx_t_18)) )) += (__pyx_v_sum / __pyx_v_cnt);
+
+ /* "silx/image/bilinear.pyx":336
+ * sum = sum + self.c_funct(new_col, new_row)
+ * if cnt:
+ * if compute_mean is True: # <<<<<<<<<<<<<<
+ * result[i] += sum / cnt
+ * else:
+ */
+ goto __pyx_L23;
+ }
+
+ /* "silx/image/bilinear.pyx":339
+ * result[i] += sum / cnt
+ * else:
+ * result[i] += sum # <<<<<<<<<<<<<<
*
* # Ensures the result is exported as numpy array and not memory view.
*/
- if (unlikely(__pyx_v_cnt == 0)) {
- #ifdef WITH_THREAD
- PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
- #endif
- PyErr_SetString(PyExc_ZeroDivisionError, "float division");
- #ifdef WITH_THREAD
- __Pyx_PyGILState_Release(__pyx_gilstate_save);
- #endif
- __PYX_ERR(0, 332, __pyx_L11_error)
+ /*else*/ {
+ __pyx_t_19 = __pyx_v_i;
+ if (__pyx_t_19 < 0) __pyx_t_19 += __pyx_v_result.shape[0];
+ *((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_result.data) + __pyx_t_19)) )) += __pyx_v_sum;
}
- __pyx_t_18 = __pyx_v_i;
- if (__pyx_t_18 < 0) __pyx_t_18 += __pyx_v_result.shape[0];
- *((float *) ( /* dim=0 */ ((char *) (((float *) __pyx_v_result.data) + __pyx_t_18)) )) += (__pyx_v_sum / __pyx_v_cnt);
+ __pyx_L23:;
- /* "silx/image/bilinear.pyx":331
+ /* "silx/image/bilinear.pyx":335
* cnt = cnt + 1
* sum = sum + self.c_funct(new_col, new_row)
* if cnt: # <<<<<<<<<<<<<<
- * result[i] += sum / cnt
- *
+ * if compute_mean is True:
+ * result[i] += sum / cnt
*/
}
}
}
- /* "silx/image/bilinear.pyx":316
- * src_col -= col_width * (linewidth - 1) / 2.
+ /* "silx/image/bilinear.pyx":320
*
+ * compute_mean = (method == 'mean')
* with nogil: # <<<<<<<<<<<<<<
* for i in range(lengt):
* sum = 0
@@ -5375,75 +5434,45 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
}
}
- /* "silx/image/bilinear.pyx":335
+ /* "silx/image/bilinear.pyx":342
*
* # Ensures the result is exported as numpy array and not memory view.
* return numpy.asarray(result) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asarray); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 342, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_result, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
+ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_result, 1, (PyObject *(*)(char *)) __pyx_memview_get_float, (int (*)(char *, PyObject *)) __pyx_memview_set_float, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_2 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_r = __pyx_t_2;
- __pyx_t_2 = 0;
+ __pyx_t_10 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 342, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_10;
+ __pyx_t_10 = 0;
goto __pyx_L0;
/* "silx/image/bilinear.pyx":271
*
* @cython.boundscheck(False)
- * def profile_line(self, src, dst, int linewidth=1): # <<<<<<<<<<<<<<
- * """Return the intensity profile of an image measured along a scan line.
- *
+ * def profile_line(self, src, dst, int linewidth=1, method='mean'): # <<<<<<<<<<<<<<
+ * """Return the mean or sum of intensity profile of an image measured
+ * along a scan line.
*/
/* function exit code */
@@ -5458,6 +5487,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_14profile_line(
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_result, 1);
+ __Pyx_XDECREF(__pyx_v_compute_mean);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
@@ -5700,7 +5730,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_16__reduce_cyth
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5754,7 +5784,7 @@ static PyObject *__pyx_pf_4silx_5image_8bilinear_13BilinearImage_18__setstate_cy
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5925,10 +5955,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -5974,7 +6004,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6006,7 +6036,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6039,13 +6069,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -6064,13 +6106,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -6083,8 +6125,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -6121,10 +6163,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -6143,21 +6185,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -6176,24 +6218,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -6224,7 +6266,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -6318,11 +6360,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -6395,7 +6437,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -6445,8 +6487,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -6500,7 +6542,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -6636,7 +6678,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7352,7 +7394,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7405,7 +7447,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7881,7 +7923,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -7927,7 +7969,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9049,7 +9091,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -10076,7 +10118,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -10432,7 +10474,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -10972,7 +11014,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11086,7 +11128,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__18, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__14, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -12087,7 +12129,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12140,7 +12182,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12491,9 +12533,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__21);
- __Pyx_GIVEREF(__pyx_slice__21);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__21);
+ __Pyx_INCREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__17);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -12526,7 +12568,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__22); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__17); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -12576,7 +12618,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -12666,9 +12708,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__23);
- __Pyx_GIVEREF(__pyx_slice__23);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__23);
+ __Pyx_INCREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__17);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -12792,7 +12834,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -14955,7 +14997,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15008,7 +15050,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16889,7 +16931,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -16922,41 +16963,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16976,7 +16987,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -17003,7 +17013,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -17040,41 +17049,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17115,7 +17094,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -18223,7 +18201,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -18304,8 +18282,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -18362,41 +18339,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18419,48 +18366,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -18473,8 +18392,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -18521,7 +18440,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -18551,7 +18469,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -18622,41 +18539,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18684,7 +18571,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -18758,7 +18644,7 @@ static PyMethodDef __pyx_methods_4silx_5image_8bilinear_BilinearImage[] = {
{"local_maxi", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_9local_maxi, METH_O, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_8local_maxi},
{"coarse_local_maxi", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_11coarse_local_maxi, METH_O, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_10coarse_local_maxi},
{"map_coordinates", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_13map_coordinates, METH_O, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_12map_coordinates},
- {"profile_line", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_14profile_line},
+ {"profile_line", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_15profile_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_14profile_line},
{"__reduce_cython__", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_17__reduce_cython__, METH_NOARGS, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_16__reduce_cython__},
{"__setstate_cython__", (PyCFunction)__pyx_pw_4silx_5image_8bilinear_13BilinearImage_19__setstate_cython__, METH_O, __pyx_doc_4silx_5image_8bilinear_13BilinearImage_18__setstate_cython__},
{0, 0, 0, 0}
@@ -19537,10 +19423,20 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_15_09_2016, __pyx_k_15_09_2016, sizeof(__pyx_k_15_09_2016), 0, 0, 1, 0},
{&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1},
+ {&__pyx_n_s_BilinearImage, __pyx_k_BilinearImage, sizeof(__pyx_k_BilinearImage), 0, 0, 1, 1},
{&__pyx_kp_s_Bilinear_interpolator_peak_finde, __pyx_k_Bilinear_interpolator_peak_finde, sizeof(__pyx_k_Bilinear_interpolator_peak_finde), 0, 0, 1, 0},
{&__pyx_kp_s_Buffer_view_does_not_expose_stri, __pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 0, 1, 0},
{&__pyx_kp_s_Can_only_create_a_buffer_that_is, __pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 0, 1, 0},
@@ -19613,7 +19509,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
{&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
{&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
+ {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
{&__pyx_n_s_memview, __pyx_k_memview, sizeof(__pyx_k_memview), 0, 0, 1, 1},
+ {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
{&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
{&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
{&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
@@ -19662,7 +19560,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_round = __Pyx_GetBuiltinName(__pyx_n_s_round); if (!__pyx_builtin_round) __PYX_ERR(0, 164, __pyx_L1_error)
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 194, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
@@ -19677,61 +19575,28 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/image/bilinear.pyx":184
- * denom = 2.0 * (d00 * d11 - d01 * d01)
- * if abs(denom) < 1e-10:
- * logger.debug("Singular determinant, Hessian undefined") # <<<<<<<<<<<<<<
- * else:
- * delta0 = ((a12 - a10) * d01 + (a01 - a21) * d11) / denom
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Singular_determinant_Hessian_und); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
- /* "silx/image/bilinear.pyx":192
- * return (delta0 + float(current0), delta1 + float(current1))
- * else:
- * logger.debug("Failed to find root using second order expansion") # <<<<<<<<<<<<<<
- * # refinement of the position by a simple center of mass of the last valid region used
- * for i0 in range(current0 - 1, current0 + 2):
- */
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Failed_to_find_root_using_second); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 192, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
- /* "silx/image/bilinear.pyx":296
- * dst_row, dst_col = dst
- * if (src_row == dst_row) and (src_col == dst_col):
- * logger.warning("Source and destination points are the same") # <<<<<<<<<<<<<<
- * return numpy.array([self.c_funct(src_col, src_row)])
- * d_row = dst_row - src_row
- */
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Source_and_destination_points_ar); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 296, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
-
/* "(tree fragment)":2
* def __reduce_cython__(self):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple_);
+ __Pyx_GIVEREF(__pyx_tuple_);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "View.MemoryView":132
*
@@ -19740,9 +19605,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "View.MemoryView":135
*
@@ -19751,20 +19616,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "View.MemoryView":147
*
@@ -19773,9 +19627,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -19784,9 +19638,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -19795,9 +19649,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -19805,18 +19659,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -19825,9 +19679,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -19836,9 +19690,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -19847,9 +19701,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -19858,9 +19712,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -19869,12 +19723,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__18 = PyTuple_New(1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
+ __pyx_tuple__14 = PyTuple_New(1); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__18, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ PyTuple_SET_ITEM(__pyx_tuple__14, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -19882,18 +19736,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -19902,9 +19756,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__21 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__21);
- __Pyx_GIVEREF(__pyx_slice__21);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -19913,9 +19767,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__22 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__22);
- __Pyx_GIVEREF(__pyx_slice__22);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -19924,9 +19778,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__23 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__23);
- __Pyx_GIVEREF(__pyx_slice__23);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -19935,9 +19789,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -19945,18 +19799,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":285
* return self.name
@@ -19965,9 +19819,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":286
*
@@ -19976,9 +19830,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -19987,9 +19841,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":290
*
@@ -19998,9 +19852,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "View.MemoryView":291
*
@@ -20009,19 +19863,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
- __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__26 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -20029,7 +19883,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20041,13 +19895,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -20102,7 +19956,7 @@ static int __Pyx_modinit_type_init_code(void) {
}
#endif
if (__Pyx_SetVtable(__pyx_type_4silx_5image_8bilinear_BilinearImage.tp_dict, __pyx_vtabptr_4silx_5image_8bilinear_BilinearImage) < 0) __PYX_ERR(0, 39, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "BilinearImage", (PyObject *)&__pyx_type_4silx_5image_8bilinear_BilinearImage) < 0) __PYX_ERR(0, 39, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BilinearImage, (PyObject *)&__pyx_type_4silx_5image_8bilinear_BilinearImage) < 0) __PYX_ERR(0, 39, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_8bilinear_BilinearImage) < 0) __PYX_ERR(0, 39, __pyx_L1_error)
__pyx_ptype_4silx_5image_8bilinear_BilinearImage = &__pyx_type_4silx_5image_8bilinear_BilinearImage;
__pyx_vtabptr_array = &__pyx_vtable_array;
@@ -20193,15 +20047,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -20214,7 +20059,30 @@ __Pyx_PyMODINIT_FUNC PyInit_bilinear(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -20227,8 +20095,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -20249,7 +20119,7 @@ bad:
}
-static int __pyx_pymod_exec_bilinear(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_bilinear(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -20259,7 +20129,11 @@ static int __pyx_pymod_exec_bilinear(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_4[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'bilinear' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -20274,6 +20148,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_bilinear(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20328,7 +20205,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__image__bilinear) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -20428,12 +20305,12 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -20472,7 +20349,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -20486,7 +20363,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -20500,7 +20377,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -20514,7 +20391,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -20528,7 +20405,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -20614,9 +20491,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.image.bilinear", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.image.bilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.image.bilinear");
}
@@ -20637,9 +20514,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -20819,9 +20696,8 @@ static void __Pyx_RaiseArgtupleInvalid(
(num_expected == 1) ? "" : "s", num_found);
}
-/* PyIntBinop */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -20829,86 +20705,63 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
@@ -20926,7 +20779,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -20944,7 +20797,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -20960,7 +20813,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -20968,7 +20821,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -20997,32 +20850,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}
-/* PyCFunctionFastCall */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
- PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- int flags = PyCFunction_GET_FLAGS(func);
- assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
- assert(nargs >= 0);
- assert(nargs == 0 || args != NULL);
- /* _PyCFunction_FastCallDict() must not be called with an exception set,
- because it may clear it (directly or indirectly) and so the
- caller loses its exception */
- assert(!PyErr_Occurred());
- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
- } else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
- }
-}
-#endif
-
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -21040,7 +20869,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -21180,6 +21009,51 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
}
#endif
+/* PyObjectCallNoArg */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+#if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(func)) {
+ return __Pyx_PyFunction_FastCall(func, NULL, 0);
+ }
+#endif
+#ifdef __Pyx_CyFunction_USED
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
+#else
+ if (likely(PyCFunction_Check(func)))
+#endif
+ {
+ if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
+ return __Pyx_PyObject_CallMethO(func, NULL);
+ }
+ }
+ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
+}
+#endif
+
+/* PyCFunctionFastCall */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
+ PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
+ PyCFunction meth = PyCFunction_GET_FUNCTION(func);
+ PyObject *self = PyCFunction_GET_SELF(func);
+ int flags = PyCFunction_GET_FLAGS(func);
+ assert(PyCFunction_Check(func));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
+ assert(nargs >= 0);
+ assert(nargs == 0 || args != NULL);
+ /* _PyCFunction_FastCallDict() must not be called with an exception set,
+ because it may clear it (directly or indirectly) and so the
+ caller loses its exception */
+ assert(!PyErr_Occurred());
+ if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
+ } else {
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
+ }
+}
+#endif
+
/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
@@ -21220,56 +21094,43 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
-/* PyObjectCallNoArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, NULL, 0);
- }
-#endif
-#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+/* GetModuleGlobalName */
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
- if (likely(PyCFunction_Check(func))) {
-#endif
- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
- return __Pyx_PyObject_CallMethO(func, NULL);
- }
- }
- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
-
-/* GetModuleGlobalName */
- static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -21407,7 +21268,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -21431,7 +21292,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -21473,20 +21334,20 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -21521,7 +21382,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -21532,8 +21393,37 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
return 0;
}
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -21692,7 +21582,7 @@ bad:
#endif
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -21713,7 +21603,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -21760,7 +21650,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -21839,6 +21729,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -21859,7 +21752,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -21867,7 +21760,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -21880,7 +21773,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -21909,7 +21802,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -21942,7 +21835,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -21967,7 +21860,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -21982,12 +21875,12 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -21999,13 +21892,29 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -22017,13 +21926,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22039,11 +21949,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -22076,13 +21987,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22109,16 +22023,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22143,7 +22058,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -22190,7 +22105,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -22208,7 +22123,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -22263,14 +22178,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -22280,7 +22223,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -22402,12 +22345,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -22415,7 +22358,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -22429,7 +22372,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -22447,7 +22390,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -22487,7 +22430,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -22497,7 +22440,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -22515,7 +22458,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -22591,8 +22534,8 @@ GOOD:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -22605,7 +22548,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -22622,7 +22567,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -22631,7 +22576,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -22711,7 +22656,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -22817,8 +22762,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -22840,7 +22785,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -22876,7 +22821,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -22889,7 +22834,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -22911,8 +22856,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -22942,8 +22887,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -22973,7 +22918,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(float *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj) {
@@ -22985,7 +22930,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -23052,8 +22997,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
- const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
+ const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -23241,8 +23186,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -23430,8 +23375,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -23619,8 +23564,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -23808,7 +23753,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -23819,7 +23764,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -24321,7 +24266,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -24362,7 +24307,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -24544,7 +24489,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -24567,7 +24512,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -24590,7 +24535,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -24613,7 +24558,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -24629,7 +24574,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -24738,6 +24683,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -24815,7 +24767,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/image/bilinear.pyx b/silx/image/bilinear.pyx
index 0b072df..7f6354b 100644
--- a/silx/image/bilinear.pyx
+++ b/silx/image/bilinear.pyx
@@ -268,8 +268,9 @@ cdef class BilinearImage:
return numpy.asarray(res).reshape(shape)
@cython.boundscheck(False)
- def profile_line(self, src, dst, int linewidth=1):
- """Return the intensity profile of an image measured along a scan line.
+ def profile_line(self, src, dst, int linewidth=1, method='mean'):
+ """Return the mean or sum of intensity profile of an image measured
+ along a scan line.
:param src: The start point of the scan line.
:type src: 2-tuple of numeric scalar
@@ -278,6 +279,8 @@ cdef class BilinearImage:
in contrast to standard numpy indexing.
:type dst: 2-tuple of numeric scalar
:param int linewidth: Width of the scanline (unit image pixel).
+ :param str method: 'mean' or 'sum' depending if we want to compute the
+ mean intensity along the line or the sum.
:return: The intensity profile along the scan line.
The length of the profile is the ceil of the computed length
of the scan line.
@@ -313,6 +316,7 @@ cdef class BilinearImage:
src_row -= row_width * (linewidth - 1) / 2.
src_col -= col_width * (linewidth - 1) / 2.
+ compute_mean = (method == 'mean')
with nogil:
for i in range(lengt):
sum = 0
@@ -329,7 +333,10 @@ cdef class BilinearImage:
cnt = cnt + 1
sum = sum + self.c_funct(new_col, new_row)
if cnt:
- result[i] += sum / cnt
+ if compute_mean is True:
+ result[i] += sum / cnt
+ else:
+ result[i] += sum
# Ensures the result is exported as numpy array and not memory view.
return numpy.asarray(result)
diff --git a/silx/image/marchingsquares/_mergeimpl.cpp b/silx/image/marchingsquares/_mergeimpl.cpp
index 4507c39..c789957 100644
--- a/silx/image/marchingsquares/_mergeimpl.cpp
+++ b/silx/image/marchingsquares/_mergeimpl.cpp
@@ -1,31 +1,31 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/users/tvincent/src/silx/silx/utils/include/silx_store_openmp.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/silx/silx/utils/include/silx_store_openmp.h",
"silx/image/marchingsquares/include/patterns.h"
- ],
+ ],
"extra_compile_args": [
"-fopenmp"
- ],
+ ],
"extra_link_args": [
"-fopenmp"
- ],
+ ],
"include_dirs": [
- "silx/image/marchingsquares",
- "/usr/lib/python2.7/dist-packages/numpy/core/include",
- "/users/tvincent/src/silx/silx/utils/include"
- ],
- "language": "c++",
- "name": "silx.image.marchingsquares._mergeimpl",
+ "silx/image/marchingsquares",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/silx/silx/utils/include"
+ ],
+ "language": "c++",
+ "name": "silx.image.marchingsquares._mergeimpl",
"sources": [
"silx/image/marchingsquares/_mergeimpl.pyx"
]
- },
+ },
"module_name": "silx.image.marchingsquares._mergeimpl"
}
END: Cython Metadata */
@@ -37,7 +37,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -108,6 +109,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -145,6 +150,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -198,11 +207,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -352,6 +367,9 @@ class __Pyx_FakeReference {
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -365,15 +383,40 @@ class __Pyx_FakeReference {
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -481,8 +524,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -654,6 +697,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -712,6 +758,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -792,7 +839,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -966,7 +1013,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -975,7 +1022,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -984,7 +1031,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -993,7 +1040,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -1002,7 +1049,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -1011,7 +1058,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1020,7 +1067,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1029,7 +1076,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1038,7 +1085,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1047,7 +1094,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1056,7 +1103,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1065,7 +1112,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1074,7 +1121,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1083,7 +1130,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1092,7 +1139,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1101,7 +1148,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1110,7 +1157,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1119,7 +1166,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1128,7 +1175,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1137,7 +1184,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1146,7 +1193,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1198,7 +1245,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1207,7 +1254,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1216,7 +1263,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1225,7 +1272,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1692,7 +1739,25 @@ static void __Pyx_WriteUnraisable(const char *name, int clineno,
int full_traceback, int nogil);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* MemviewSliceInit.proto */
#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
@@ -1753,8 +1818,23 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1826,6 +1906,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -2012,6 +2097,17 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable);
/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
@@ -2292,21 +2388,6 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_n
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2560,11 +2641,15 @@ static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_strided_and_direct[] = "<strided and direct>";
static const char __pyx_k_COMPILED_WITH_OPENMP[] = "_COMPILED_WITH_OPENMP";
static const char __pyx_k_strided_and_indirect[] = "<strided and indirect>";
+static const char __pyx_k_MarchingSquaresPixels[] = "_MarchingSquaresPixels";
static const char __pyx_k_contiguous_and_direct[] = "<contiguous and direct>";
static const char __pyx_k_MemoryView_of_r_object[] = "<MemoryView of %r object>";
+static const char __pyx_k_MarchingSquaresContours[] = "_MarchingSquaresContours";
static const char __pyx_k_MemoryView_of_r_at_0x_x[] = "<MemoryView of %r at 0x%x>";
static const char __pyx_k_contiguous_and_indirect[] = "<contiguous and indirect>";
static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'";
+static const char __pyx_k_MarchingSquaresAlgorithm[] = "_MarchingSquaresAlgorithm";
+static const char __pyx_k_MarchingSquaresMergeImpl[] = "MarchingSquaresMergeImpl";
static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d.";
static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array";
static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
@@ -2617,6 +2702,10 @@ static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr;
static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d;
static PyObject *__pyx_kp_s_Jerome_Kieffer;
static PyObject *__pyx_n_s_MIT;
+static PyObject *__pyx_n_s_MarchingSquaresAlgorithm;
+static PyObject *__pyx_n_s_MarchingSquaresContours;
+static PyObject *__pyx_n_s_MarchingSquaresMergeImpl;
+static PyObject *__pyx_n_s_MarchingSquaresPixels;
static PyObject *__pyx_kp_s_Mask_size_and_image_size_must_be;
static PyObject *__pyx_n_s_MemoryError;
static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x;
@@ -2803,9 +2892,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__39;
-static PyObject *__pyx_slice__40;
-static PyObject *__pyx_slice__41;
+static PyObject *__pyx_slice__35;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2831,20 +2918,16 @@ static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
+static PyObject *__pyx_tuple__39;
+static PyObject *__pyx_tuple__40;
+static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_codeobj__51;
+static PyObject *__pyx_codeobj__45;
/* Late includes */
/* "silx/image/marchingsquares/_mergeimpl.pyx":82
@@ -5287,14 +5370,6 @@ static void __pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_25_MarchingSquar
* result_coord.y = y
*/
break;
-
- /* "silx/image/marchingsquares/_mergeimpl.pyx":585
- * result_coord.x = x + (weight1 > weight2)
- * result_coord.y = y
- * elif edge == 1: # <<<<<<<<<<<<<<
- * result_coord.x = x + 1
- * result_coord.y = y + (weight1 > weight2)
- */
case 1:
/* "silx/image/marchingsquares/_mergeimpl.pyx":586
@@ -5323,14 +5398,6 @@ static void __pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_25_MarchingSquar
* result_coord.y = y + (weight1 > weight2)
*/
break;
-
- /* "silx/image/marchingsquares/_mergeimpl.pyx":588
- * result_coord.x = x + 1
- * result_coord.y = y + (weight1 > weight2)
- * elif edge == 2: # <<<<<<<<<<<<<<
- * result_coord.x = x + (weight1 < weight2)
- * result_coord.y = y + 1
- */
case 2:
/* "silx/image/marchingsquares/_mergeimpl.pyx":589
@@ -5359,14 +5426,6 @@ static void __pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_25_MarchingSquar
* result_coord.y = y + 1
*/
break;
-
- /* "silx/image/marchingsquares/_mergeimpl.pyx":591
- * result_coord.x = x + (weight1 < weight2)
- * result_coord.y = y + 1
- * elif edge == 3: # <<<<<<<<<<<<<<
- * result_coord.x = x
- * result_coord.y = y + (weight1 < weight2)
- */
case 3:
/* "silx/image/marchingsquares/_mergeimpl.pyx":592
@@ -5456,14 +5515,6 @@ static __pyx_t_4silx_5image_15marchingsquares_10_mergeimpl_point_index_t __pyx_f
* edge = 0
*/
break;
-
- /* "silx/image/marchingsquares/_mergeimpl.pyx":614
- * yx += self._dim_x
- * edge = 0
- * elif edge == 1: # <<<<<<<<<<<<<<
- * yx += 1
- * elif edge == 3:
- */
case 1:
/* "silx/image/marchingsquares/_mergeimpl.pyx":615
@@ -5483,14 +5534,6 @@ static __pyx_t_4silx_5image_15marchingsquares_10_mergeimpl_point_index_t __pyx_f
* elif edge == 3:
*/
break;
-
- /* "silx/image/marchingsquares/_mergeimpl.pyx":616
- * elif edge == 1:
- * yx += 1
- * elif edge == 3: # <<<<<<<<<<<<<<
- * edge = 1
- *
- */
case 3:
/* "silx/image/marchingsquares/_mergeimpl.pyx":617
@@ -7665,7 +7708,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_24_Marching
* it_points = description.points.begin()
* i_pixel = 0
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 905, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -7687,7 +7730,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_24_Marching
__pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 905, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 905, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
@@ -7785,7 +7828,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_24_Marching
* del description
*
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 913, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 913, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -7802,41 +7845,11 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_24_Marching
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 913, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_8};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 913, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_8};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 913, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 913, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 913, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_10 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 913, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_17 = __Pyx_PyList_Append(__pyx_v_polygons, __pyx_t_10); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 913, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -8264,7 +8277,7 @@ static void __pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_MarchingSquar
* context.final_pixels.push_back(coord)
* else:
*/
- __pyx_v_context->pixels.erase(__pyx_v_it_coord_erase);
+ (void)(__pyx_v_context->pixels.erase(__pyx_v_it_coord_erase));
/* "silx/image/marchingsquares/_mergeimpl.pyx":973
* preincrement(it_coord)
@@ -8443,14 +8456,14 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_Marching
* # create result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1008, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1008, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1008, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1008, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1008, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1008, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -8529,7 +8542,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_Marching
* i = 0
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1017, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1017, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1017, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -8551,7 +8564,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_Marching
__pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1017, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1017, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -8676,7 +8689,7 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_Marching
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1031, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1031, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1031, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -8693,41 +8706,11 @@ static PyObject *__pyx_f_4silx_5image_15marchingsquares_10_mergeimpl_22_Marching
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_6 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_r = __pyx_t_6;
__pyx_t_6 = 0;
@@ -9018,7 +9001,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* raise ValueError("Only 2D arrays are supported.")
* if image.shape[0] < 2 or image.shape[1] < 2:
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1128, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1128, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1128, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -9125,7 +9108,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* self._image_ptr = &self._image[0][0]
* if mask is not None:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1133, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -9193,7 +9176,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* raise ValueError("Only 2D arrays are supported.")
* if image.shape != mask.shape:
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1136, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1136, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1136, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -9210,7 +9193,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* if image.shape != mask.shape:
* raise ValueError("Mask size and image size must be the same.")
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1137, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -9250,7 +9233,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* # Force contiguous native array
* self._mask = numpy.ascontiguousarray(mask, dtype='=i1')
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1139, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1139, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9272,7 +9255,7 @@ static int __pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquare
* self._mask_ptr = &self._mask[0][0]
* else:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1141, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
@@ -10889,7 +10872,7 @@ static PyObject *__pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24Marching
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("self._image_ptr,self._max_cache,self._min_cache cannot be converted to a Python object for pickling")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -10943,7 +10926,7 @@ static PyObject *__pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24Marching
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("self._image_ptr,self._max_cache,self._min_cache cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -10966,7 +10949,7 @@ static PyObject *__pyx_pf_4silx_5image_15marchingsquares_10_mergeimpl_24Marching
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -11004,8 +10987,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -11014,7 +10998,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -11023,7 +11007,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -11032,7 +11016,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -11041,11 +11025,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -11055,53 +11039,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 229, __pyx_L1_error)
+ __PYX_ERR(2, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -11111,49 +11095,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 233, __pyx_L1_error)
+ __PYX_ERR(2, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -11162,7 +11146,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -11171,7 +11155,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11181,7 +11165,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -11190,7 +11174,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -11199,7 +11183,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -11211,7 +11195,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -11220,7 +11204,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -11230,7 +11214,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11240,7 +11224,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -11250,7 +11234,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -11261,7 +11245,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -11270,7 +11254,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -11279,7 +11263,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -11288,28 +11272,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -11322,7 +11307,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -11332,7 +11317,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -11342,7 +11327,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11362,7 +11347,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -11379,7 +11364,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11388,20 +11373,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 263, __pyx_L1_error)
+ __PYX_ERR(2, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11410,7 +11395,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -11421,206 +11406,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 282, __pyx_L1_error)
+ __PYX_ERR(2, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -11629,7 +11614,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -11639,7 +11624,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -11648,7 +11633,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -11658,7 +11643,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -11667,7 +11652,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -11676,17 +11661,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(2, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -11696,7 +11681,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -11709,7 +11694,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -11728,7 +11713,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -11752,7 +11737,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -11762,7 +11747,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -11771,7 +11756,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -11780,7 +11765,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11790,7 +11775,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -11799,7 +11784,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11808,7 +11793,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -11820,7 +11805,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -11834,7 +11819,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -11842,13 +11827,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -11867,7 +11852,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -11881,7 +11866,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -11889,13 +11874,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -11914,7 +11899,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -11928,7 +11913,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -11936,13 +11921,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -11961,7 +11946,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -11975,7 +11960,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -11983,13 +11968,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -12008,7 +11993,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -12022,7 +12007,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -12030,13 +12015,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -12055,7 +12040,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -12069,7 +12054,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -12079,7 +12064,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -12091,7 +12076,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -12100,7 +12085,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -12114,7 +12099,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -12129,7 +12114,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -12158,7 +12143,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -12167,7 +12152,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -12176,7 +12161,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -12185,21 +12170,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(2, 805, __pyx_L1_error)
+ __PYX_ERR(2, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -12208,15 +12193,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(2, 806, __pyx_L1_error)
+ __PYX_ERR(2, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -12229,7 +12214,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(2, 807, __pyx_L1_error)
+ __PYX_ERR(2, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -12237,51 +12222,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 810, __pyx_L1_error)
+ __PYX_ERR(2, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -12290,7 +12275,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12310,7 +12295,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -12327,7 +12312,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12336,20 +12321,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 814, __pyx_L1_error)
+ __PYX_ERR(2, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12358,7 +12343,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -12366,15 +12351,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -12383,7 +12368,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -12392,7 +12377,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -12403,7 +12388,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -12413,7 +12398,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -12423,19 +12408,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -12445,20 +12430,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(2, 834, __pyx_L1_error)
+ __PYX_ERR(2, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -12467,252 +12452,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -12721,18 +12706,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -12741,18 +12726,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -12761,25 +12746,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -12787,18 +12772,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(2, 855, __pyx_L1_error)
+ __PYX_ERR(2, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -12807,7 +12792,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -12817,7 +12802,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -12825,12 +12810,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -12840,7 +12825,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -12850,7 +12835,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -12875,166 +12860,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -13044,7 +12983,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -13065,7 +13004,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13081,16 +13020,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13104,7 +13043,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -13114,28 +13053,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1000, __pyx_L5_except_error)
+ __PYX_ERR(2, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13150,7 +13089,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -13173,7 +13112,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -13194,7 +13133,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13210,16 +13149,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13233,7 +13172,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -13243,28 +13182,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1006, __pyx_L5_except_error)
+ __PYX_ERR(2, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13279,7 +13218,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -13302,7 +13241,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -13323,7 +13262,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13339,16 +13278,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13362,7 +13301,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -13371,26 +13310,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1012, __pyx_L5_except_error)
+ __PYX_ERR(2, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13405,7 +13344,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -13576,10 +13515,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -13625,7 +13564,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13657,7 +13596,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13690,13 +13629,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -13715,13 +13666,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -13734,8 +13685,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -13772,10 +13723,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -13794,21 +13745,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -13827,24 +13778,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -13875,7 +13826,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -13969,11 +13920,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -14046,7 +13997,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -14096,8 +14047,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -14151,7 +14102,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -14287,7 +14238,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15003,7 +14954,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15056,7 +15007,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15532,7 +15483,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -15578,7 +15529,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -16700,7 +16651,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17727,7 +17678,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -18083,7 +18034,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18623,7 +18574,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -18737,7 +18688,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__36, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__32, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -19738,7 +19689,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -19791,7 +19742,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20142,9 +20093,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__39);
- __Pyx_GIVEREF(__pyx_slice__39);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__39);
+ __Pyx_INCREF(__pyx_slice__35);
+ __Pyx_GIVEREF(__pyx_slice__35);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__35);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -20177,7 +20128,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__40); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__35); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -20227,7 +20178,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -20317,9 +20268,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__41);
- __Pyx_GIVEREF(__pyx_slice__41);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__41);
+ __Pyx_INCREF(__pyx_slice__35);
+ __Pyx_GIVEREF(__pyx_slice__35);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__35);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -20443,7 +20394,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -22606,7 +22557,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22659,7 +22610,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24540,7 +24491,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -24573,41 +24523,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24627,7 +24547,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -24654,7 +24573,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -24691,41 +24609,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -24766,7 +24654,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -25874,7 +25761,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -25955,8 +25842,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -26013,41 +25899,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26070,48 +25926,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -26124,8 +25952,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -26172,7 +26000,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -26202,7 +26029,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -26273,41 +26099,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26335,7 +26131,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -26654,7 +26449,7 @@ static int __pyx_tp_clear_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSq
static PyMethodDef __pyx_methods_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl[] = {
{"find_pixels", (PyCFunction)__pyx_pw_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_5find_pixels, METH_O, __pyx_doc_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_4find_pixels},
- {"find_contours", (PyCFunction)__pyx_pw_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_7find_contours, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_6find_contours},
+ {"find_contours", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_7find_contours, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_6find_contours},
{"__reduce_cython__", (PyCFunction)__pyx_pw_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_9__reduce_cython__, METH_NOARGS, __pyx_doc_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_8__reduce_cython__},
{"__setstate_cython__", (PyCFunction)__pyx_pw_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_11__setstate_cython__, METH_O, __pyx_doc_4silx_5image_15marchingsquares_10_mergeimpl_24MarchingSquaresMergeImpl_10__setstate_cython__},
{0, 0, 0, 0}
@@ -27424,6 +27219,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_23_04_2018, __pyx_k_23_04_2018, sizeof(__pyx_k_23_04_2018), 0, 0, 1, 0},
@@ -27448,6 +27252,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0},
{&__pyx_kp_s_Jerome_Kieffer, __pyx_k_Jerome_Kieffer, sizeof(__pyx_k_Jerome_Kieffer), 0, 0, 1, 0},
{&__pyx_n_s_MIT, __pyx_k_MIT, sizeof(__pyx_k_MIT), 0, 0, 1, 1},
+ {&__pyx_n_s_MarchingSquaresAlgorithm, __pyx_k_MarchingSquaresAlgorithm, sizeof(__pyx_k_MarchingSquaresAlgorithm), 0, 0, 1, 1},
+ {&__pyx_n_s_MarchingSquaresContours, __pyx_k_MarchingSquaresContours, sizeof(__pyx_k_MarchingSquaresContours), 0, 0, 1, 1},
+ {&__pyx_n_s_MarchingSquaresMergeImpl, __pyx_k_MarchingSquaresMergeImpl, sizeof(__pyx_k_MarchingSquaresMergeImpl), 0, 0, 1, 1},
+ {&__pyx_n_s_MarchingSquaresPixels, __pyx_k_MarchingSquaresPixels, sizeof(__pyx_k_MarchingSquaresPixels), 0, 0, 1, 1},
{&__pyx_kp_s_Mask_size_and_image_size_must_be, __pyx_k_Mask_size_and_image_size_must_be, sizeof(__pyx_k_Mask_size_and_image_size_must_be), 0, 0, 1, 0},
{&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
{&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0},
@@ -27556,7 +27364,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
#if PY_MAJOR_VERSION >= 3
__pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_xrange) __PYX_ERR(0, 162, __pyx_L1_error)
#else
@@ -27565,8 +27373,8 @@ static int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 309, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 1129, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1000, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1038, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 147, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 150, __pyx_L1_error)
__pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 399, __pyx_L1_error)
@@ -27577,7 +27385,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -27681,9 +27489,9 @@ static int __Pyx_InitCachedConstants(void) {
* if image.shape != mask.shape:
* raise ValueError("Mask size and image size must be the same.")
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Only_2D_arrays_are_supported); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1137, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Only_2D_arrays_are_supported); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1137, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "silx/image/marchingsquares/_mergeimpl.pyx":1139
* raise ValueError("Only 2D arrays are supported.")
@@ -27692,9 +27500,9 @@ static int __Pyx_InitCachedConstants(void) {
* # Force contiguous native array
* self._mask = numpy.ascontiguousarray(mask, dtype='=i1')
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Mask_size_and_image_size_must_be); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1139, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Mask_size_and_image_size_must_be); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1139, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27702,115 +27510,115 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("self._image_ptr,self._max_cache,self._min_cache cannot be converted to a Python object for pickling")
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_self__image_ptr_self__max_cache); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_self__image_ptr_self__max_cache); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "(tree fragment)":4
* raise TypeError("self._image_ptr,self._max_cache,self._min_cache cannot be converted to a Python object for pickling")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("self._image_ptr,self._max_cache,self._min_cache cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_self__image_ptr_self__max_cache); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_self__image_ptr_self__max_cache); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":132
*
@@ -27819,9 +27627,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":135
*
@@ -27830,20 +27638,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":147
*
@@ -27852,9 +27649,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -27863,9 +27660,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -27874,9 +27671,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27884,18 +27681,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -27904,9 +27701,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -27915,9 +27712,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -27926,9 +27723,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -27937,9 +27734,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -27948,12 +27745,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__36 = PyTuple_New(1); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
+ __pyx_tuple__32 = PyTuple_New(1); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__36, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ PyTuple_SET_ITEM(__pyx_tuple__32, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__32);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27961,18 +27758,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -27981,9 +27778,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__39 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__39);
- __Pyx_GIVEREF(__pyx_slice__39);
+ __pyx_slice__35 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__35);
+ __Pyx_GIVEREF(__pyx_slice__35);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -27992,9 +27789,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__40 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__40);
- __Pyx_GIVEREF(__pyx_slice__40);
+ __pyx_slice__35 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__35);
+ __Pyx_GIVEREF(__pyx_slice__35);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -28003,9 +27800,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__41 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__41);
- __Pyx_GIVEREF(__pyx_slice__41);
+ __pyx_slice__35 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__35);
+ __Pyx_GIVEREF(__pyx_slice__35);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -28014,9 +27811,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -28024,18 +27821,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
/* "View.MemoryView":285
* return self.name
@@ -28044,9 +27841,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "View.MemoryView":286
*
@@ -28055,9 +27852,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -28066,9 +27863,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
/* "View.MemoryView":290
*
@@ -28077,9 +27874,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
/* "View.MemoryView":291
*
@@ -28088,19 +27885,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__50 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
- __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__44 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__44);
+ __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -28108,7 +27905,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
/* InitThreads.init */
#ifdef WITH_THREAD
PyEval_InitThreads();
@@ -28128,13 +27925,13 @@ if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -28189,7 +27986,7 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
if (__Pyx_SetVtable(__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm.tp_dict, __pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm) < 0) __PYX_ERR(0, 109, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "_MarchingSquaresAlgorithm", (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm) < 0) __PYX_ERR(0, 109, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MarchingSquaresAlgorithm, (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm) < 0) __PYX_ERR(0, 109, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm) < 0) __PYX_ERR(0, 109, __pyx_L1_error)
__pyx_ptype_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm = &__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresAlgorithm;
__pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours = &__pyx_vtable_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours;
@@ -28205,7 +28002,7 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
if (__Pyx_SetVtable(__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours.tp_dict, __pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours) < 0) __PYX_ERR(0, 625, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "_MarchingSquaresContours", (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours) < 0) __PYX_ERR(0, 625, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MarchingSquaresContours, (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours) < 0) __PYX_ERR(0, 625, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours) < 0) __PYX_ERR(0, 625, __pyx_L1_error)
__pyx_ptype_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours = &__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresContours;
__pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels = &__pyx_vtable_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels;
@@ -28222,7 +28019,7 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
if (__Pyx_SetVtable(__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels.tp_dict, __pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels) < 0) __PYX_ERR(0, 919, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "_MarchingSquaresPixels", (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels) < 0) __PYX_ERR(0, 919, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MarchingSquaresPixels, (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels) < 0) __PYX_ERR(0, 919, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels) < 0) __PYX_ERR(0, 919, __pyx_L1_error)
__pyx_ptype_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels = &__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl__MarchingSquaresPixels;
__pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl = &__pyx_vtable_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl;
@@ -28234,7 +28031,7 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
if (__Pyx_SetVtable(__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl.tp_dict, __pyx_vtabptr_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl) < 0) __PYX_ERR(0, 1034, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "MarchingSquaresMergeImpl", (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl) < 0) __PYX_ERR(0, 1034, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MarchingSquaresMergeImpl, (PyObject *)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl) < 0) __PYX_ERR(0, 1034, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl) < 0) __PYX_ERR(0, 1034, __pyx_L1_error)
__pyx_ptype_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl = &__pyx_type_4silx_5image_15marchingsquares_10_mergeimpl_MarchingSquaresMergeImpl;
__pyx_vtabptr_array = &__pyx_vtable_array;
@@ -28289,23 +28086,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -28340,15 +28151,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -28361,7 +28163,30 @@ __Pyx_PyMODINIT_FUNC PyInit__mergeimpl(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -28374,8 +28199,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -28396,7 +28223,7 @@ bad:
}
-static int __pyx_pymod_exec__mergeimpl(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec__mergeimpl(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -28407,7 +28234,11 @@ static int __pyx_pymod_exec__mergeimpl(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_5[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module '_mergeimpl' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -28422,6 +28253,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__mergeimpl(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -28476,7 +28310,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__image__marchingsquares___mergeimpl) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -28571,12 +28405,12 @@ if (!__Pyx_RefNanny) {
*
* # Windows compatibility: Cross-platform INFINITY
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_finfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -28631,7 +28465,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -28645,7 +28479,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -28659,7 +28493,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -28673,7 +28507,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -28687,7 +28521,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -28773,9 +28607,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.image.marchingsquares._mergeimpl", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.image.marchingsquares._mergeimpl", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.image.marchingsquares._mergeimpl");
}
@@ -28796,9 +28630,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -29148,34 +28982,42 @@ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -29313,14 +29155,14 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -29328,16 +29170,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -29355,7 +29196,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -29455,8 +29296,37 @@ done:
#endif
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -29476,7 +29346,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -29516,7 +29386,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* RaiseDoubleKeywords */
- static void __Pyx_RaiseDoubleKeywordsError(
+static void __Pyx_RaiseDoubleKeywordsError(
const char* func_name,
PyObject* kw_name)
{
@@ -29530,7 +29400,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
/* ParseKeywords */
- static int __Pyx_ParseOptionalKeywords(
+static int __Pyx_ParseOptionalKeywords(
PyObject *kwds,
PyObject **argnames[],
PyObject *kwds2,
@@ -29632,7 +29502,7 @@ bad:
}
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -29647,7 +29517,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29665,7 +29535,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29681,7 +29551,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -29689,7 +29559,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -29719,13 +29589,13 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -29733,10 +29603,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -29746,16 +29617,21 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#endif
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -29765,25 +29641,25 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -29795,13 +29671,29 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -29813,13 +29705,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -29835,7 +29728,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -29860,11 +29753,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -29897,13 +29791,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -29930,7 +29827,7 @@ bad:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -29951,7 +29848,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -29998,7 +29895,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -30077,6 +29974,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -30097,7 +29997,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -30105,7 +30005,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -30118,7 +30018,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -30147,7 +30047,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -30180,7 +30080,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -30195,16 +30095,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -30229,7 +30130,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -30276,7 +30177,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -30294,7 +30195,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -30349,14 +30250,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -30366,7 +30295,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -30488,12 +30417,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -30501,7 +30430,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -30515,7 +30444,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -30533,7 +30462,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -30573,7 +30502,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -30583,7 +30512,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -30601,7 +30530,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -30676,9 +30605,70 @@ GOOD:
return ret;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -30691,7 +30681,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -30708,7 +30700,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -30717,7 +30709,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -30797,7 +30789,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -30905,8 +30897,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -30928,7 +30920,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -30964,7 +30956,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -30977,8 +30969,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -31008,7 +31000,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -31030,8 +31022,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
- const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
+ const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned char) < sizeof(long)) {
@@ -31061,7 +31053,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_float32_t(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_float32_t(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(__pyx_t_5numpy_float32_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_float32_t(const char *itemp, PyObject *obj) {
@@ -31073,8 +31065,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_float32_t(const cha
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_int32) < sizeof(long)) {
@@ -31104,7 +31096,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_float32_t(const cha
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int32_t(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int32_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_int32(*(__pyx_t_5numpy_int32_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char *itemp, PyObject *obj) {
@@ -31116,8 +31108,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -31147,7 +31139,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -31167,7 +31159,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -31302,7 +31294,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -31322,7 +31314,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -31457,8 +31449,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -31488,7 +31480,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -31555,8 +31547,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -31744,8 +31736,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
- const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
+ const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -31933,8 +31925,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -32122,8 +32114,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -32311,8 +32303,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -32500,7 +32492,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -32511,7 +32503,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -33013,7 +33005,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -33054,7 +33046,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -33236,7 +33228,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -33259,7 +33251,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -33282,7 +33274,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int8_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -33305,7 +33297,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -33320,91 +33312,8 @@ __pyx_fail:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -33513,6 +33422,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -33590,7 +33506,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/image/medianfilter.py b/silx/image/medianfilter.py
index a986b4d..5d98b48 100644
--- a/silx/image/medianfilter.py
+++ b/silx/image/medianfilter.py
@@ -1,6 +1,6 @@
# coding: utf-8
# /*##########################################################################
-# Copyright (C) 2017 European Synchrotron Radiation Facility
+# Copyright (C) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -31,12 +31,15 @@ __authors__ = ["H. Payno"]
__license__ = "MIT"
__date__ = "04/05/2017"
+
+import logging
+
from silx.math import medianfilter as medianfilter_cpp
-try:
+from silx.opencl import ocl as _ocl
+if _ocl is not None:
from silx.opencl import medfilt as medfilt_opencl
-except ImportError:
+else: # No OpenCL device or pyopencl not installed
medfilt_opencl = None
-import logging
_logger = logging.getLogger(__name__)
@@ -84,7 +87,7 @@ def medfilt2d(image, kernel_size=3, engine='cpp'):
conditional=False)
elif engine == 'opencl':
if medfilt_opencl is None:
- wrn = 'opencl median filter module import failed'
+ wrn = 'opencl median filter not available. '
wrn += 'Launching cpp implementation.'
_logger.warning(wrn)
# instead call the cpp implementation
diff --git a/silx/image/shapes.c b/silx/image/shapes.c
index 3f3ccd7..4993fe2 100644
--- a/silx/image/shapes.c
+++ b/silx/image/shapes.c
@@ -1,15 +1,15 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
- "depends": [],
- "language": "c",
- "name": "silx.image.shapes",
+ "depends": [],
+ "language": "c",
+ "name": "silx.image.shapes",
"sources": [
"silx/image/shapes.pyx"
]
- },
+ },
"module_name": "silx.image.shapes"
}
END: Cython Metadata */
@@ -21,7 +21,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -92,6 +93,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -129,6 +134,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -182,11 +191,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -322,6 +337,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -335,15 +353,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -451,8 +494,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -610,6 +653,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -668,6 +714,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -748,7 +795,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1145,7 +1192,25 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1237,6 +1302,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCallMethO.proto */
@@ -1255,6 +1332,9 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval,
(inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
@@ -1382,6 +1462,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1786,6 +1871,7 @@ static const char __pyx_k_step_b[] = "step_b";
static const char __pyx_k_struct[] = "struct";
static const char __pyx_k_unpack[] = "unpack";
static const char __pyx_k_update[] = "update";
+static const char __pyx_k_Polygon[] = "Polygon";
static const char __pyx_k_asarray[] = "asarray";
static const char __pyx_k_authors[] = "__authors__";
static const char __pyx_k_float32[] = "float32";
@@ -1885,6 +1971,7 @@ static PyObject *__pyx_kp_s_MemoryView_of_r_object;
static PyObject *__pyx_n_b_O;
static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a;
static PyObject *__pyx_n_s_PickleError;
+static PyObject *__pyx_n_s_Polygon;
static PyObject *__pyx_kp_s_T_Vincent;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
@@ -2082,37 +2169,30 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__20;
-static PyObject *__pyx_slice__21;
-static PyObject *__pyx_slice__22;
+static PyObject *__pyx_slice__15;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
-static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__26;
+static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
+static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_codeobj__27;
-static PyObject *__pyx_codeobj__29;
-static PyObject *__pyx_codeobj__31;
+static PyObject *__pyx_codeobj__20;
+static PyObject *__pyx_codeobj__22;
+static PyObject *__pyx_codeobj__24;
+static PyObject *__pyx_codeobj__26;
static PyObject *__pyx_codeobj__33;
-static PyObject *__pyx_codeobj__40;
/* Late includes */
/* "silx/image/shapes.pyx":59
@@ -2191,7 +2271,7 @@ static int __pyx_pf_4silx_5image_6shapes_7Polygon___init__(struct __pyx_obj_4sil
* self.nvert = self.vertices.shape[0]
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -2203,7 +2283,7 @@ static int __pyx_pf_4silx_5image_6shapes_7Polygon___init__(struct __pyx_obj_4sil
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_vertices);
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -2734,7 +2814,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_7Polygon_4make_mask(struct __pyx_
* dtype=numpy.uint8)
* cdef int row_min, row_max, col_min, col_max # mask subpart to update
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -2766,7 +2846,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_7Polygon_4make_mask(struct __pyx_
*/
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -2814,7 +2894,7 @@ __pyx_t_8.strides[0] = __pyx_v_self->vertices.strides[0];
Py_ssize_t __pyx_tmp_stride = __pyx_v_self->vertices.strides[1];
if (0 && (__pyx_tmp_idx < 0))
__pyx_tmp_idx += __pyx_tmp_shape;
- if (0 && (__pyx_tmp_idx < 0 || __pyx_tmp_idx >= __pyx_tmp_shape)) {
+ if (0 && !__Pyx_is_valid_index(__pyx_tmp_idx, __pyx_tmp_shape)) {
PyErr_SetString(PyExc_IndexError, "Index out of bounds (axis 1)");
__PYX_ERR(0, 120, __pyx_L1_error)
}
@@ -2874,7 +2954,7 @@ __pyx_t_8.strides[0] = __pyx_v_self->vertices.strides[0];
Py_ssize_t __pyx_tmp_stride = __pyx_v_self->vertices.strides[1];
if (0 && (__pyx_tmp_idx < 0))
__pyx_tmp_idx += __pyx_tmp_shape;
- if (0 && (__pyx_tmp_idx < 0 || __pyx_tmp_idx >= __pyx_tmp_shape)) {
+ if (0 && !__Pyx_is_valid_index(__pyx_tmp_idx, __pyx_tmp_shape)) {
PyErr_SetString(PyExc_IndexError, "Index out of bounds (axis 1)");
__PYX_ERR(0, 121, __pyx_L1_error)
}
@@ -3377,7 +3457,7 @@ __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __p
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3394,41 +3474,11 @@ __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __p
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
@@ -3606,7 +3656,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_7Polygon_6__reduce_cython__(struc
* return __pyx_unpickle_Polygon, (type(self), 0x42e5452, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Polygon); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Polygon); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3652,7 +3702,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_7Polygon_6__reduce_cython__(struc
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Polygon); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Polygon); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3767,7 +3817,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_7Polygon_8__setstate_cython__(str
/* Python wrapper */
static PyObject *__pyx_pw_4silx_5image_6shapes_1polygon_fill_mask(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_5image_6shapes_polygon_fill_mask[] = "polygon_fill_mask(vertices, shape)\nReturn a mask of boolean, True for pixels inside a polygon.\n\n :param vertices: Strip of segments end points (row, column) or (y, x)\n :type vertices: numpy.ndarray like container of dimension Nx2\n :param shape: size of the mask as (height, width)\n :type shape: 2-tuple of int\n :return: Mask corresponding to the polygon\n :rtype: numpy.ndarray of dimension shape\n ";
-static PyMethodDef __pyx_mdef_4silx_5image_6shapes_1polygon_fill_mask = {"polygon_fill_mask", (PyCFunction)__pyx_pw_4silx_5image_6shapes_1polygon_fill_mask, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_polygon_fill_mask};
+static PyMethodDef __pyx_mdef_4silx_5image_6shapes_1polygon_fill_mask = {"polygon_fill_mask", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_1polygon_fill_mask, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_polygon_fill_mask};
static PyObject *__pyx_pw_4silx_5image_6shapes_1polygon_fill_mask(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_vertices = 0;
PyObject *__pyx_v_shape = 0;
@@ -3944,7 +3994,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_polygon_fill_mask(CYTHON_UNUSED P
/* Python wrapper */
static PyObject *__pyx_pw_4silx_5image_6shapes_3draw_line(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_5image_6shapes_2draw_line[] = "draw_line(int row0, int col0, int row1, int col1, int width=1)\nLine includes both end points.\n Width is handled by drawing parallel lines, so junctions of lines belonging\n to different octant with width > 1 will not look nice.\n\n Using Bresenham line algorithm:\n Bresenham, J. E.\n Algorithm for computer control of a digital plotter.\n IBM Systems Journal. Vol 4 No 1. 1965. pp 25-30\n\n :param int row0: Start point row\n :param int col0: Start point col\n :param int row1: End point row\n :param int col1: End point col\n :param int width: Thickness of the line in pixels (default 1)\n Width must be at least 1.\n :return: Array coordinates of points inside the line (might be negative)\n :rtype: 2-tuple of numpy.ndarray (rows, cols)\n ";
-static PyMethodDef __pyx_mdef_4silx_5image_6shapes_3draw_line = {"draw_line", (PyCFunction)__pyx_pw_4silx_5image_6shapes_3draw_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_2draw_line};
+static PyMethodDef __pyx_mdef_4silx_5image_6shapes_3draw_line = {"draw_line", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_3draw_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_2draw_line};
static PyObject *__pyx_pw_4silx_5image_6shapes_3draw_line(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
int __pyx_v_row0;
int __pyx_v_col0;
@@ -4137,7 +4187,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -4156,7 +4206,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
@@ -4176,7 +4226,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*
* if width < 1:
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 226, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -4195,7 +4245,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
__pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 226, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
@@ -4422,7 +4472,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
* a_coords = numpy.empty((da + 1, width), dtype=numpy.int32)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
@@ -4446,7 +4496,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -4471,7 +4521,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*
* with nogil:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -4495,7 +4545,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
__pyx_t_9 = 0;
__pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -4687,65 +4737,47 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
* else:
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_b_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_6);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_b_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_9};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_9};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/image/shapes.pyx":269
* if not invert_coords:
@@ -4754,65 +4786,47 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
* else:
* return (numpy.asarray(a_coords).reshape(-1),
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_a_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_9 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_a_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- }
- }
- if (!__pyx_t_6) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/image/shapes.pyx":268
*
@@ -4821,16 +4835,16 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
* numpy.asarray(a_coords).reshape(-1))
* else:
*/
- __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
__pyx_t_5 = 0;
- __pyx_t_8 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/image/shapes.pyx":267
@@ -4851,65 +4865,47 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_a_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_a_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_7) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_8};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_8};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
+ __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 271, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_6, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/image/shapes.pyx":272
* else:
@@ -4918,13 +4914,13 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_b_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_b_coords, 2, (PyObject *(*)(char *)) __pyx_memview_get_int, (int (*)(char *, PyObject *)) __pyx_memview_set_int, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
@@ -4935,47 +4931,29 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_9 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/image/shapes.pyx":271
@@ -4987,12 +4965,12 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
*/
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 271, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9);
+ __pyx_t_4 = 0;
__pyx_t_9 = 0;
- __pyx_t_5 = 0;
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
@@ -5036,7 +5014,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_2draw_line(CYTHON_UNUSED PyObject
/* Python wrapper */
static PyObject *__pyx_pw_4silx_5image_6shapes_5circle_fill(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_5image_6shapes_4circle_fill[] = "circle_fill(int crow, int ccol, float radius)\nGenerates coordinate of image points lying in a disk.\n\n :param int crow: Row of the center of the disk\n :param int ccol: Column of the center of the disk\n :param float radius: Radius of the disk\n :return: Array coordinates of points inside the disk (might be negative)\n :rtype: 2-tuple of numpy.ndarray (rows, cols)\n ";
-static PyMethodDef __pyx_mdef_4silx_5image_6shapes_5circle_fill = {"circle_fill", (PyCFunction)__pyx_pw_4silx_5image_6shapes_5circle_fill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_4circle_fill};
+static PyMethodDef __pyx_mdef_4silx_5image_6shapes_5circle_fill = {"circle_fill", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_5circle_fill, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_4circle_fill};
static PyObject *__pyx_pw_4silx_5image_6shapes_5circle_fill(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
int __pyx_v_crow;
int __pyx_v_ccol;
@@ -5153,7 +5131,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
* dtype=numpy.float32) ** 2
* len_coords = len(coords)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -5180,7 +5158,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
*/
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -5231,7 +5209,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
* coords.reshape(len_coords, 1) < radius ** 2)
* return rows + crow - i_radius, cols + ccol - i_radius
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_where); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -5379,41 +5357,11 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
PyObject* sequence = __pyx_t_3;
@@ -5426,36 +5374,36 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
- __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_4 = PyList_GET_ITEM(sequence, 0);
- __pyx_t_9 = PyList_GET_ITEM(sequence, 1);
+ __pyx_t_5 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_5);
#else
__pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_11 = Py_TYPE(__pyx_t_5)->tp_iternext;
- index = 0; __pyx_t_4 = __pyx_t_11(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
+ __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext;
+ index = 0; __pyx_t_4 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
- index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_5); if (unlikely(!__pyx_t_9)) goto __pyx_L3_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_5), 2) < 0) __PYX_ERR(0, 293, __pyx_L1_error)
+ index = 1; __pyx_t_5 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_2), 2) < 0) __PYX_ERR(0, 293, __pyx_L1_error)
__pyx_t_11 = NULL;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L4_unpacking_done;
__pyx_L3_unpacking_failed:;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 293, __pyx_L1_error)
@@ -5471,8 +5419,8 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
*/
__pyx_v_rows = __pyx_t_4;
__pyx_t_4 = 0;
- __pyx_v_cols = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_v_cols = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/image/shapes.pyx":295
* rows, cols = numpy.where(coords.reshape(1, len_coords) +
@@ -5482,34 +5430,34 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_crow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyNumber_Add(__pyx_v_rows, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 295, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = PyNumber_Add(__pyx_v_rows, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i_radius); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyNumber_Subtract(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __pyx_t_4 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ccol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyNumber_Add(__pyx_v_cols, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 295, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = PyNumber_Add(__pyx_v_cols, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_i_radius); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyNumber_Subtract(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_2 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
__pyx_t_4 = 0;
- __pyx_t_5 = 0;
+ __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
__pyx_t_3 = 0;
goto __pyx_L0;
@@ -5552,7 +5500,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_4circle_fill(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_5image_6shapes_7__pyx_unpickle_Polygon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_5image_6shapes_6__pyx_unpickle_Polygon[] = "__pyx_unpickle_Polygon(__pyx_type, long __pyx_checksum, __pyx_state)";
-static PyMethodDef __pyx_mdef_4silx_5image_6shapes_7__pyx_unpickle_Polygon = {"__pyx_unpickle_Polygon", (PyCFunction)__pyx_pw_4silx_5image_6shapes_7__pyx_unpickle_Polygon, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_6__pyx_unpickle_Polygon};
+static PyMethodDef __pyx_mdef_4silx_5image_6shapes_7__pyx_unpickle_Polygon = {"__pyx_unpickle_Polygon", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_7__pyx_unpickle_Polygon, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_6__pyx_unpickle_Polygon};
static PyObject *__pyx_pw_4silx_5image_6shapes_7__pyx_unpickle_Polygon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -5633,8 +5581,7 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_6__pyx_unpickle_Polygon(CYTHON_UN
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Polygon", 0);
/* "(tree fragment)":2
@@ -5691,41 +5638,11 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_6__pyx_unpickle_Polygon(CYTHON_UN
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -5748,48 +5665,20 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_6__pyx_unpickle_Polygon(CYTHON_UN
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4silx_5image_6shapes_Polygon), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -5802,8 +5691,8 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_6__pyx_unpickle_Polygon(CYTHON_UN
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Polygon.__new__(__pyx_type)
@@ -5850,7 +5739,6 @@ static PyObject *__pyx_pf_4silx_5image_6shapes_6__pyx_unpickle_Polygon(CYTHON_UN
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("silx.image.shapes.__pyx_unpickle_Polygon", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5882,7 +5770,6 @@ static PyObject *__pyx_f_4silx_5image_6shapes___pyx_unpickle_Polygon__set_state(
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
- PyObject *__pyx_t_11 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Polygon__set_state", 0);
/* "(tree fragment)":10
@@ -5963,41 +5850,11 @@ static PyObject *__pyx_f_4silx_5image_6shapes___pyx_unpickle_Polygon__set_state(
__Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- if (!__pyx_t_10) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_8};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6026,7 +5883,6 @@ static PyObject *__pyx_f_4silx_5image_6shapes___pyx_unpickle_Polygon__set_state(
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("silx.image.shapes.__pyx_unpickle_Polygon__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -6183,10 +6039,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -6232,7 +6088,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6264,7 +6120,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6297,13 +6153,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -6322,13 +6190,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -6341,8 +6209,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -6379,10 +6247,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -6401,21 +6269,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -6434,24 +6302,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -6482,7 +6350,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -6576,11 +6444,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -6653,7 +6521,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -6703,8 +6571,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -6758,7 +6626,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -6894,7 +6762,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7610,7 +7478,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7663,7 +7531,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -8139,7 +8007,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -8185,7 +8053,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9307,7 +9175,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -10334,7 +10202,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -10690,7 +10558,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11230,7 +11098,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11344,7 +11212,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__17, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__12, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -12345,7 +12213,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12398,7 +12266,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12749,9 +12617,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__20);
- __Pyx_GIVEREF(__pyx_slice__20);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__20);
+ __Pyx_INCREF(__pyx_slice__15);
+ __Pyx_GIVEREF(__pyx_slice__15);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__15);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -12784,7 +12652,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__21); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__15); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -12834,7 +12702,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -12924,9 +12792,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__22);
- __Pyx_GIVEREF(__pyx_slice__22);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__22);
+ __Pyx_INCREF(__pyx_slice__15);
+ __Pyx_GIVEREF(__pyx_slice__15);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__15);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -13050,7 +12918,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -15213,7 +15081,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15266,7 +15134,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17147,7 +17015,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -17180,41 +17047,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17234,7 +17071,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -17261,7 +17097,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -17298,41 +17133,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17373,7 +17178,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -18481,7 +18285,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -18562,8 +18366,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -18620,41 +18423,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18677,48 +18450,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -18731,8 +18476,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -18779,7 +18524,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -18809,7 +18553,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -18880,41 +18623,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18942,7 +18655,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -18980,8 +18692,8 @@ static void __pyx_tp_dealloc_4silx_5image_6shapes_Polygon(PyObject *o) {
}
static PyMethodDef __pyx_methods_4silx_5image_6shapes_Polygon[] = {
- {"is_inside", (PyCFunction)__pyx_pw_4silx_5image_6shapes_7Polygon_3is_inside, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_7Polygon_2is_inside},
- {"make_mask", (PyCFunction)__pyx_pw_4silx_5image_6shapes_7Polygon_5make_mask, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_7Polygon_4make_mask},
+ {"is_inside", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_7Polygon_3is_inside, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_7Polygon_2is_inside},
+ {"make_mask", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_5image_6shapes_7Polygon_5make_mask, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_5image_6shapes_7Polygon_4make_mask},
{"__reduce_cython__", (PyCFunction)__pyx_pw_4silx_5image_6shapes_7Polygon_7__reduce_cython__, METH_NOARGS, __pyx_doc_4silx_5image_6shapes_7Polygon_6__reduce_cython__},
{"__setstate_cython__", (PyCFunction)__pyx_pw_4silx_5image_6shapes_7Polygon_9__setstate_cython__, METH_O, __pyx_doc_4silx_5image_6shapes_7Polygon_8__setstate_cython__},
{0, 0, 0, 0}
@@ -19751,6 +19463,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_03_06_2016, __pyx_k_03_06_2016, sizeof(__pyx_k_03_06_2016), 0, 0, 1, 0},
@@ -19776,6 +19497,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1},
{&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0},
{&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
+ {&__pyx_n_s_Polygon, __pyx_k_Polygon, sizeof(__pyx_k_Polygon), 0, 0, 1, 1},
{&__pyx_kp_s_T_Vincent, __pyx_k_T_Vincent, sizeof(__pyx_k_T_Vincent), 0, 0, 1, 0},
{&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
{&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
@@ -19904,7 +19626,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 90, __pyx_L1_error)
__pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(0, 120, __pyx_L1_error)
__pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(0, 121, __pyx_L1_error)
@@ -19920,54 +19642,10 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/image/shapes.pyx":268
- *
- * if not invert_coords:
- * return (numpy.asarray(b_coords).reshape(-1), # <<<<<<<<<<<<<<
- * numpy.asarray(a_coords).reshape(-1))
- * else:
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
- /* "silx/image/shapes.pyx":269
- * if not invert_coords:
- * return (numpy.asarray(b_coords).reshape(-1),
- * numpy.asarray(a_coords).reshape(-1)) # <<<<<<<<<<<<<<
- * else:
- * return (numpy.asarray(a_coords).reshape(-1),
- */
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
- /* "silx/image/shapes.pyx":271
- * numpy.asarray(a_coords).reshape(-1))
- * else:
- * return (numpy.asarray(a_coords).reshape(-1), # <<<<<<<<<<<<<<
- * numpy.asarray(b_coords).reshape(-1))
- *
- */
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
-
- /* "silx/image/shapes.pyx":272
- * else:
- * return (numpy.asarray(a_coords).reshape(-1),
- * numpy.asarray(b_coords).reshape(-1)) # <<<<<<<<<<<<<<
- *
- *
- */
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
-
/* "View.MemoryView":132
*
* if not self.ndim:
@@ -19975,9 +19653,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple_);
+ __Pyx_GIVEREF(__pyx_tuple_);
/* "View.MemoryView":135
*
@@ -19986,20 +19664,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "View.MemoryView":147
*
@@ -20008,9 +19675,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -20019,9 +19686,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -20030,9 +19697,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20040,18 +19707,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -20060,9 +19727,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -20071,9 +19738,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -20082,9 +19749,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -20093,9 +19760,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -20104,12 +19771,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__17 = PyTuple_New(1); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
+ __pyx_tuple__12 = PyTuple_New(1); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__17, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ PyTuple_SET_ITEM(__pyx_tuple__12, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20117,18 +19784,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -20137,9 +19804,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__20 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__20);
- __Pyx_GIVEREF(__pyx_slice__20);
+ __pyx_slice__15 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__15)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__15);
+ __Pyx_GIVEREF(__pyx_slice__15);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -20148,9 +19815,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__21 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__21);
- __Pyx_GIVEREF(__pyx_slice__21);
+ __pyx_slice__15 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__15)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__15);
+ __Pyx_GIVEREF(__pyx_slice__15);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -20159,9 +19826,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__22 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__22);
- __Pyx_GIVEREF(__pyx_slice__22);
+ __pyx_slice__15 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__15)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__15);
+ __Pyx_GIVEREF(__pyx_slice__15);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -20170,9 +19837,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20180,18 +19847,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "silx/image/shapes.pyx":178
*
@@ -20200,10 +19867,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a mask of boolean, True for pixels inside a polygon.
*
*/
- __pyx_tuple__26 = PyTuple_Pack(2, __pyx_n_s_vertices, __pyx_n_s_shape); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 178, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
- __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_polygon_fill_mask, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 178, __pyx_L1_error)
+ __pyx_tuple__19 = PyTuple_Pack(2, __pyx_n_s_vertices, __pyx_n_s_shape); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 178, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_polygon_fill_mask, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 178, __pyx_L1_error)
/* "silx/image/shapes.pyx":193
* @cython.wraparound(False)
@@ -20212,10 +19879,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Line includes both end points.
* Width is handled by drawing parallel lines, so junctions of lines belonging
*/
- __pyx_tuple__28 = PyTuple_Pack(19, __pyx_n_s_row0, __pyx_n_s_col0, __pyx_n_s_row1, __pyx_n_s_col1, __pyx_n_s_width, __pyx_n_s_drow, __pyx_n_s_dcol, __pyx_n_s_invert_coords, __pyx_n_s_db, __pyx_n_s_da, __pyx_n_s_delta, __pyx_n_s_b, __pyx_n_s_a, __pyx_n_s_step_a, __pyx_n_s_step_b, __pyx_n_s_index, __pyx_n_s_offset, __pyx_n_s_b_coords, __pyx_n_s_a_coords); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 193, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
- __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(5, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_draw_line, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __pyx_tuple__21 = PyTuple_Pack(19, __pyx_n_s_row0, __pyx_n_s_col0, __pyx_n_s_row1, __pyx_n_s_col1, __pyx_n_s_width, __pyx_n_s_drow, __pyx_n_s_dcol, __pyx_n_s_invert_coords, __pyx_n_s_db, __pyx_n_s_da, __pyx_n_s_delta, __pyx_n_s_b, __pyx_n_s_a, __pyx_n_s_step_a, __pyx_n_s_step_b, __pyx_n_s_index, __pyx_n_s_offset, __pyx_n_s_b_coords, __pyx_n_s_a_coords); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(5, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_draw_line, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 193, __pyx_L1_error)
/* "silx/image/shapes.pyx":275
*
@@ -20224,20 +19891,20 @@ static int __Pyx_InitCachedConstants(void) {
* """Generates coordinate of image points lying in a disk.
*
*/
- __pyx_tuple__30 = PyTuple_Pack(8, __pyx_n_s_crow, __pyx_n_s_ccol, __pyx_n_s_radius, __pyx_n_s_i_radius, __pyx_n_s_len_coords, __pyx_n_s_coords, __pyx_n_s_rows, __pyx_n_s_cols); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 275, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
- __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_circle_fill, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __pyx_tuple__23 = PyTuple_Pack(8, __pyx_n_s_crow, __pyx_n_s_ccol, __pyx_n_s_radius, __pyx_n_s_i_radius, __pyx_n_s_len_coords, __pyx_n_s_coords, __pyx_n_s_rows, __pyx_n_s_cols); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_image_shapes_pyx, __pyx_n_s_circle_fill, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 275, __pyx_L1_error)
/* "(tree fragment)":1
* def __pyx_unpickle_Polygon(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0x42e5452:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
- __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Polygon, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__25 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Polygon, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 1, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -20246,9 +19913,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "View.MemoryView":286
*
@@ -20257,9 +19924,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -20268,9 +19935,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "View.MemoryView":290
*
@@ -20279,9 +19946,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "View.MemoryView":291
*
@@ -20290,19 +19957,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__39 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
- __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -20310,7 +19977,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20323,13 +19990,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -20372,7 +20039,7 @@ static int __Pyx_modinit_type_init_code(void) {
__pyx_type_4silx_5image_6shapes_Polygon.tp_getattro = __Pyx_PyObject_GenericGetAttr;
}
if (__Pyx_SetVtable(__pyx_type_4silx_5image_6shapes_Polygon.tp_dict, __pyx_vtabptr_4silx_5image_6shapes_Polygon) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
- if (PyObject_SetAttrString(__pyx_m, "Polygon", (PyObject *)&__pyx_type_4silx_5image_6shapes_Polygon) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Polygon, (PyObject *)&__pyx_type_4silx_5image_6shapes_Polygon) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_5image_6shapes_Polygon) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
__pyx_ptype_4silx_5image_6shapes_Polygon = &__pyx_type_4silx_5image_6shapes_Polygon;
__pyx_vtabptr_array = &__pyx_vtable_array;
@@ -20463,15 +20130,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -20484,7 +20142,30 @@ __Pyx_PyMODINIT_FUNC PyInit_shapes(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -20497,8 +20178,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -20519,7 +20202,7 @@ bad:
}
-static int __pyx_pymod_exec_shapes(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_shapes(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -20527,7 +20210,11 @@ static int __pyx_pymod_exec_shapes(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_2[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'shapes' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -20542,6 +20229,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_shapes(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20596,7 +20286,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__image__shapes) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -20756,7 +20446,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_1);
@@ -20770,7 +20460,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_1);
@@ -20784,7 +20474,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_1);
@@ -20798,7 +20488,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_1);
@@ -20812,7 +20502,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1);
@@ -20896,9 +20586,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_1);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.image.shapes", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.image.shapes", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.image.shapes");
}
@@ -20919,9 +20609,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -21102,34 +20792,42 @@ static void __Pyx_RaiseArgtupleInvalid(
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -21149,7 +20847,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#endif
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -21287,7 +20985,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -21311,7 +21009,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -21353,14 +21051,14 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -21368,16 +21066,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -21395,7 +21092,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -21496,7 +21193,7 @@ done:
#endif
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -21516,7 +21213,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -21556,7 +21253,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -21677,8 +21374,37 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -21703,7 +21429,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -21716,7 +21442,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -21731,7 +21457,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -21746,7 +21472,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -21764,7 +21490,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -21780,7 +21506,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -21788,7 +21514,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -21818,7 +21544,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -21826,20 +21552,20 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -21874,7 +21600,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -21886,7 +21612,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -21933,7 +21659,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -21951,7 +21677,7 @@ bad:
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -21965,7 +21691,7 @@ bad:
}
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -22124,7 +21850,7 @@ bad:
#endif
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -22142,7 +21868,7 @@ bad:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -22163,7 +21889,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -22210,7 +21936,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -22289,6 +22015,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -22309,7 +22038,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -22317,7 +22046,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -22346,7 +22075,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -22379,12 +22108,12 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -22396,13 +22125,29 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -22414,13 +22159,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22436,11 +22182,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -22473,13 +22220,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22506,16 +22256,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22540,7 +22291,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -22595,14 +22346,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -22612,12 +22391,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -22657,7 +22436,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -22667,7 +22446,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -22685,7 +22464,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -22761,8 +22540,8 @@ GOOD:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -22775,7 +22554,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -22792,7 +22573,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -22801,7 +22582,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -22881,7 +22662,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -22987,8 +22768,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -23010,7 +22791,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -23046,7 +22827,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -23059,8 +22840,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -23090,7 +22871,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -23112,7 +22893,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(float *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj) {
@@ -23124,7 +22905,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -23135,7 +22916,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -23637,7 +23418,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -23678,7 +23459,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -23860,7 +23641,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -23883,8 +23664,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -23914,8 +23695,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
- const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
+ const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned char) < sizeof(long)) {
@@ -23945,7 +23726,7 @@ __pyx_fail:
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_char(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_char(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_char(*(unsigned char *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_char(const char *itemp, PyObject *obj) {
@@ -23957,7 +23738,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_char(const char *itemp, PyOb
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_int(*(int *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj) {
@@ -23969,7 +23750,7 @@ static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj)
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -24036,8 +23817,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24225,8 +24006,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24414,8 +24195,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
- const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
+ static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
+ const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24603,8 +24384,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24792,7 +24573,7 @@ raise_neg_overflow:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_unsigned_char(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_unsigned_char(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -24815,7 +24596,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_int(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_int(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -24838,7 +24619,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -24854,7 +24635,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -24963,6 +24744,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -25040,7 +24828,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/image/test/test_bilinear.py b/silx/image/test/test_bilinear.py
index 564dfad..12d0067 100644
--- a/silx/image/test/test_bilinear.py
+++ b/silx/image/test/test_bilinear.py
@@ -85,17 +85,17 @@ class TestBilinear(unittest.TestCase):
x2d = numpy.zeros_like(y) + x
y2d = numpy.zeros_like(x) + y
res1 = b.map_coordinates((y2d, x2d))
- self.assertEquals(abs(res1 - img).max(), 0, "images are the same (corners)")
+ self.assertEqual(abs(res1 - img).max(), 0, "images are the same (corners)")
x2d = numpy.zeros_like(y) + (x[:, :-1] + 0.5)
y2d = numpy.zeros_like(x[:, :-1]) + y
res1 = b.map_coordinates((y2d, x2d))
- self.assertEquals(abs(res1 - img[:, :-1] - 0.5).max(), 0, "images are the same (middle)")
+ self.assertEqual(abs(res1 - img[:, :-1] - 0.5).max(), 0, "images are the same (middle)")
x2d = numpy.zeros_like(y[:-1, :]) + (x[:, :-1] + 0.5)
y2d = numpy.zeros_like(x[:, :-1]) + (y[:-1, :] + 0.5)
res1 = b.map_coordinates((y2d, x2d))
- self.assertEquals(abs(res1 - img[:-1, 1:]).max(), 0, "images are the same (center)")
+ self.assertEqual(abs(res1 - img[:-1, 1:]).max(), 0, "images are the same (center)")
def test_profile_grad(self):
N = 100
@@ -103,7 +103,7 @@ class TestBilinear(unittest.TestCase):
b = BilinearImage(img)
res1 = b.profile_line((0, 0), (N - 1, N - 1))
l = numpy.ceil(numpy.sqrt(2) * N)
- self.assertEquals(len(res1), l, "Profile has correct length")
+ self.assertEqual(len(res1), l, "Profile has correct length")
self.assertLess((res1[:-2] - res1[1:-1]).std(), 1e-3, "profile is linear (excluding last point)")
def test_profile_gaus(self):
@@ -114,8 +114,8 @@ class TestBilinear(unittest.TestCase):
b = BilinearImage(img)
res_hor = b.profile_line((N // 2, 0), (N // 2, N - 1))
res_ver = b.profile_line((0, N // 2), (N - 1, N // 2))
- self.assertEquals(len(res_hor), N, "Profile has correct length")
- self.assertEquals(len(res_ver), N, "Profile has correct length")
+ self.assertEqual(len(res_hor), N, "Profile has correct length")
+ self.assertEqual(len(res_ver), N, "Profile has correct length")
self.assertLess(abs(res_hor - g).max(), 1e-5, "correct horizontal profile")
self.assertLess(abs(res_ver - g).max(), 1e-5, "correct vertical profile")
@@ -124,8 +124,8 @@ class TestBilinear(unittest.TestCase):
res_hor = b.profile_line((N // 2, 0), (N // 2, N - 1), linewidth=3)
res_ver = b.profile_line((0, N // 2), (N - 1, N // 2), linewidth=3)
- self.assertEquals(len(res_hor), N, "Profile has correct length")
- self.assertEquals(len(res_ver), N, "Profile has correct length")
+ self.assertEqual(len(res_hor), N, "Profile has correct length")
+ self.assertEqual(len(res_ver), N, "Profile has correct length")
self.assertLess(abs(res_hor - expected_profile).max(), 1e-5,
"correct horizontal profile")
self.assertLess(abs(res_ver - expected_profile).max(), 1e-5,
diff --git a/silx/io/configdict.py b/silx/io/configdict.py
index 2ba9755..c028211 100644
--- a/silx/io/configdict.py
+++ b/silx/io/configdict.py
@@ -147,7 +147,7 @@ def _parse_simple_types(sstr):
# un-escape string
sstr = sstr.lstrip("\\")
# un-escape commas
- sstr = sstr.replace("\,", ",").replace("^@", ",")
+ sstr = sstr.replace(r"\,", ",").replace("^@", ",")
return sstr
@@ -191,7 +191,7 @@ def _parse_container(sstr):
raise ValueError
else:
# if all commas are escaped, it is a strinq, not a list
- if sstr.count(",") == sstr.count("\,"):
+ if sstr.count(",") == sstr.count(r"\,"):
raise ValueError
dataline = [line for line in sstr.splitlines()]
@@ -213,7 +213,7 @@ def _parse_list_line(sstr):
# preserve escaped commas in strings before splitting list
# (_parse_simple_types recognizes ^@ as a comma)
- sstr.replace("\,", "^@")
+ sstr.replace(r"\,", "^@")
# it is a list
if sstr.endswith(','):
if ',' in sstr[:-1]:
@@ -256,12 +256,12 @@ class OptionStr(str):
return _boolean(self)
def tostr(self):
- """Return string after replacing escaped commas ``\,`` with regular
+ """Return string after replacing escaped commas ``\\,`` with regular
commas ``,`` and removing leading backslash.
:return: str(self)
"""
- return str(self.replace("\,", ",").lstrip("\\"))
+ return str(self.replace(r"\,", ",").lstrip("\\"))
def tocontainer(self):
"""Return a list or a numpy array.
@@ -306,8 +306,8 @@ class ConfigDict(OrderedDict):
- sections can be nested to any depth
- value types are guessed when the file is read back
- to prevent strings from being interpreted as lists, commas are
- escaped with a backslash (``\,``)
- - strings may be prefixed with a leading backslash (``\``) to prevent
+ escaped with a backslash (``\\,``)
+ - strings may be prefixed with a leading backslash (``\\``) to prevent
conversion to numeric or boolean values
:param defaultdict: Default dictionary used to initialize the
@@ -456,7 +456,7 @@ class ConfigDict(OrderedDict):
fp.close()
def _escape_str(self, sstr):
- """Escape strings and special characters in strings with a ``\``
+ """Escape strings and special characters in strings with a ``\\``
character to ensure they are read back as strings and not parsed.
:param sstr: String to be escaped
@@ -473,7 +473,7 @@ class ConfigDict(OrderedDict):
if re.match(non_str, sstr.lower()):
sstr = "\\" + sstr
# Escape commas
- sstr = sstr.replace(",", "\,")
+ sstr = sstr.replace(",", r"\,")
if sys.version_info >= (3, ):
# Escape % characters except in "%%" and "%("
diff --git a/silx/io/convert.py b/silx/io/convert.py
index e9cbd2d..b08bfcc 100644
--- a/silx/io/convert.py
+++ b/silx/io/convert.py
@@ -64,7 +64,7 @@ except ImportError:
__authors__ = ["P. Knobel"]
__license__ = "MIT"
-__date__ = "12/02/2018"
+__date__ = "17/07/2018"
_logger = logging.getLogger(__name__)
@@ -92,11 +92,11 @@ def _create_link(h5f, link_name, target_name,
if link_name not in h5f:
_logger.debug("Creating link " + link_name + " -> " + target_name)
elif overwrite_data:
- _logger.warn("Overwriting " + link_name + " with link to " +
+ _logger.warning("Overwriting " + link_name + " with link to " +
target_name)
del h5f[link_name]
else:
- _logger.warn(link_name + " already exist. Cannot create link to " +
+ _logger.warning(link_name + " already exist. Cannot create link to " +
target_name)
return None
@@ -212,7 +212,7 @@ class Hdf5Writer(object):
member_initially_exists = h5_name in self._h5f
if self.overwrite_data and member_initially_exists:
- _logger.warn("Overwriting dataset: " + h5_name)
+ _logger.warning("Overwriting dataset: " + h5_name)
del self._h5f[h5_name]
if self.overwrite_data or not member_initially_exists:
@@ -244,7 +244,7 @@ class Hdf5Writer(object):
_attr_utf8(obj.attrs[key]))
if not self.overwrite_data and member_initially_exists:
- _logger.warn("Not overwriting existing dataset: " + h5_name)
+ _logger.warning("Not overwriting existing dataset: " + h5_name)
elif is_group(obj):
if h5_name not in self._h5f:
diff --git a/silx/io/dictdump.py b/silx/io/dictdump.py
index 1857cdb..0087753 100644
--- a/silx/io/dictdump.py
+++ b/silx/io/dictdump.py
@@ -47,7 +47,7 @@ from .utils import open as h5open
__authors__ = ["P. Knobel"]
__license__ = "MIT"
-__date__ = "16/06/2017"
+__date__ = "17/07/2018"
logger = logging.getLogger(__name__)
@@ -419,25 +419,31 @@ def load(ffile, fmat=None):
:return: Dictionary (ordered dictionary for JSON and INI)
:raises IOError: if file format is not supported
"""
+ must_be_closed = False
if not hasattr(ffile, "read"):
f = open(ffile, "r")
fname = ffile
+ must_be_closed = True
else:
f = ffile
fname = ffile.name
- if fmat is None: # Use file extension as format
- fmat = os.path.splitext(fname)[1][1:] # Strip extension leading '.'
- fmat = fmat.lower()
-
- if fmat == "json":
- return json.load(f, object_pairs_hook=OrderedDict)
- if fmat in ["hdf5", "h5"]:
- if h5py_missing:
- logger.error("Cannot load from HDF5 format, missing h5py library")
- raise h5py_import_error
- return h5todict(fname)
- elif fmat in ["ini", "cfg"]:
- return ConfigDict(filelist=[fname])
- else:
- raise IOError("Unknown format " + fmat)
+ try:
+ if fmat is None: # Use file extension as format
+ fmat = os.path.splitext(fname)[1][1:] # Strip extension leading '.'
+ fmat = fmat.lower()
+
+ if fmat == "json":
+ return json.load(f, object_pairs_hook=OrderedDict)
+ if fmat in ["hdf5", "h5"]:
+ if h5py_missing:
+ logger.error("Cannot load from HDF5 format, missing h5py library")
+ raise h5py_import_error
+ return h5todict(fname)
+ elif fmat in ["ini", "cfg"]:
+ return ConfigDict(filelist=[fname])
+ else:
+ raise IOError("Unknown format " + fmat)
+ finally:
+ if must_be_closed:
+ f.close()
diff --git a/silx/io/specfile.c b/silx/io/specfile.c
index ca67473..67223b6 100644
--- a/silx/io/specfile.c
+++ b/silx/io/specfile.c
@@ -1,35 +1,35 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"define_macros": [
[
- "SPECFILE_POSIX",
+ "SPECFILE_POSIX",
null
]
- ],
+ ],
"depends": [
"silx/io/specfile/include/SpecFileCython.h"
- ],
+ ],
"include_dirs": [
"silx/io/specfile/include"
- ],
- "language": "c",
- "name": "silx.io.specfile",
+ ],
+ "language": "c",
+ "name": "silx.io.specfile",
"sources": [
- "silx/io/specfile.pyx",
- "silx/io/specfile/src/sfheader.c",
- "silx/io/specfile/src/sfinit.c",
- "silx/io/specfile/src/sflists.c",
- "silx/io/specfile/src/sfdata.c",
- "silx/io/specfile/src/sfindex.c",
- "silx/io/specfile/src/sflabel.c",
- "silx/io/specfile/src/sfmca.c",
- "silx/io/specfile/src/sftools.c",
+ "silx/io/specfile.pyx",
+ "silx/io/specfile/src/sfheader.c",
+ "silx/io/specfile/src/sfinit.c",
+ "silx/io/specfile/src/sflists.c",
+ "silx/io/specfile/src/sfdata.c",
+ "silx/io/specfile/src/sfindex.c",
+ "silx/io/specfile/src/sflabel.c",
+ "silx/io/specfile/src/sfmca.c",
+ "silx/io/specfile/src/sftools.c",
"silx/io/specfile/src/locale_management.c"
]
- },
+ },
"module_name": "silx.io.specfile"
}
END: Cython Metadata */
@@ -41,7 +41,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -112,6 +113,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -149,6 +154,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -202,11 +211,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -342,6 +357,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -355,15 +373,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -471,8 +514,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -630,6 +673,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -688,6 +734,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -768,7 +815,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1203,13 +1250,6 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif
-/* PyCFunctionFastCall.proto */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
-#else
-#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
-#endif
-
/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
@@ -1219,6 +1259,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1233,9 +1285,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif
-/* PyObjectCallOneArg.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
@@ -1243,6 +1292,16 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif
+/* PyCFunctionFastCall.proto */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
+#else
+#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)
+#endif
+
+/* PyObjectCallOneArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+
/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
int result = PySequence_Contains(seq, item);
@@ -1260,6 +1319,9 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name) PyObject_GetItem(obj, name)
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
@@ -1306,9 +1368,11 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
-static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg);
/* append.proto */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
@@ -1397,6 +1461,11 @@ static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* k
#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
#endif
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1425,7 +1494,25 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1542,13 +1629,8 @@ static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
start, stop, encoding, errors, decode_func);
}
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);
@@ -1726,6 +1808,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -1843,13 +1926,20 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
/* CoroutineBase.proto */
typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
+#if CYTHON_USE_EXC_INFO_STACK
+#define __Pyx_ExcInfoStruct _PyErr_StackItem
+#else
typedef struct {
- PyObject_HEAD
- __pyx_coroutine_body_t body;
- PyObject *closure;
PyObject *exc_type;
PyObject *exc_value;
PyObject *exc_traceback;
+} __Pyx_ExcInfoStruct;
+#endif
+typedef struct {
+ PyObject_HEAD
+ __pyx_coroutine_body_t body;
+ PyObject *closure;
+ __Pyx_ExcInfoStruct gi_exc_state;
PyObject *gi_weakreflist;
PyObject *classobj;
PyObject *yieldfrom;
@@ -1866,18 +1956,24 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_New(
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
__pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
PyObject *name, PyObject *qualname, PyObject *module_name);
+static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
+#if CYTHON_USE_EXC_INFO_STACK
+#define __Pyx_Coroutine_SwapException(self)
+#define __Pyx_Coroutine_ResetAndClearException(self) __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
+#else
#define __Pyx_Coroutine_SwapException(self) {\
- __Pyx_ExceptionSwap(&(self)->exc_type, &(self)->exc_value, &(self)->exc_traceback);\
- __Pyx_Coroutine_ResetFrameBackpointer(self);\
+ __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
+ __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
}
#define __Pyx_Coroutine_ResetAndClearException(self) {\
- __Pyx_ExceptionReset((self)->exc_type, (self)->exc_value, (self)->exc_traceback);\
- (self)->exc_type = (self)->exc_value = (self)->exc_traceback = NULL;\
+ __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
+ (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
}
+#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
__Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
@@ -1886,7 +1982,7 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
__Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self);
+static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
@@ -2039,17 +2135,17 @@ static const char __pyx_k_d[] = "d";
static const char __pyx_k_f[] = "f";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_w[] = "#(\\w+) *(.*)";
-static const char __pyx_k__8[] = "#";
+static const char __pyx_k__5[] = "#";
+static const char __pyx_k__6[] = " ";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_os[] = "os";
static const char __pyx_k_rb[] = "rb";
static const char __pyx_k_re[] = "re";
static const char __pyx_k_MCA[] = "MCA";
static const char __pyx_k_MIT[] = "MIT";
-static const char __pyx_k__15[] = " ";
-static const char __pyx_k__28[] = ".";
-static const char __pyx_k__30[] = "', '";
-static const char __pyx_k__31[] = "'";
+static const char __pyx_k__10[] = ".";
+static const char __pyx_k__11[] = "', '";
+static const char __pyx_k__12[] = "'";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_len[] = "__len__";
@@ -2165,6 +2261,7 @@ static const char __pyx_k_KeyError[] = "KeyError";
static const char __pyx_k_L_header[] = "L_header";
static const char __pyx_k_P_Knobel[] = "P. Knobel";
static const char __pyx_k_Scan_mca[] = "Scan.mca";
+static const char __pyx_k_SpecFile[] = "SpecFile";
static const char __pyx_k_channels[] = "channels";
static const char __pyx_k_filename[] = "filename";
static const char __pyx_k_getstate[] = "__getstate__";
@@ -2438,6 +2535,7 @@ static PyObject *__pyx_n_s_SfErrUserNotFound;
static PyObject *__pyx_n_s_SfError;
static PyObject *__pyx_n_s_SfNoMcaError;
static PyObject *__pyx_kp_s_SfNoMca_returned_1;
+static PyObject *__pyx_n_s_SpecFile;
static PyObject *__pyx_n_s_SpecFile___iter;
static PyObject *__pyx_kp_s_The_scan_identification_key_can;
static PyObject *__pyx_n_s_TypeError;
@@ -2447,12 +2545,12 @@ static PyObject *__pyx_kp_s_Unable_to_parse_scan_header_line;
static PyObject *__pyx_kp_s_Valid_keys;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_View_MemoryView;
-static PyObject *__pyx_kp_s__15;
-static PyObject *__pyx_kp_s__28;
-static PyObject *__pyx_kp_u__28;
-static PyObject *__pyx_kp_s__30;
-static PyObject *__pyx_kp_s__31;
-static PyObject *__pyx_kp_s__8;
+static PyObject *__pyx_kp_s__10;
+static PyObject *__pyx_kp_u__10;
+static PyObject *__pyx_kp_s__11;
+static PyObject *__pyx_kp_s__12;
+static PyObject *__pyx_kp_s__5;
+static PyObject *__pyx_kp_s__6;
static PyObject *__pyx_n_s_add_or_concatenate;
static PyObject *__pyx_n_s_all_calib_values;
static PyObject *__pyx_n_s_all_chann_values;
@@ -2789,25 +2887,19 @@ static PyObject *__pyx_int_15;
static PyObject *__pyx_int_2500;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
+static PyObject *__pyx_slice__7;
static PyObject *__pyx_tuple__2;
-static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_tuple__7;
+static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__20;
-static PyObject *__pyx_slice__52;
-static PyObject *__pyx_slice__53;
-static PyObject *__pyx_slice__54;
-static PyObject *__pyx_tuple__10;
-static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
+static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
@@ -2815,95 +2907,76 @@ static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
+static PyObject *__pyx_tuple__30;
+static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
-static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__55;
+static PyObject *__pyx_tuple__52;
+static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__57;
static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__59;
-static PyObject *__pyx_tuple__61;
-static PyObject *__pyx_tuple__63;
-static PyObject *__pyx_tuple__65;
-static PyObject *__pyx_tuple__67;
-static PyObject *__pyx_tuple__69;
+static PyObject *__pyx_tuple__60;
+static PyObject *__pyx_tuple__62;
+static PyObject *__pyx_tuple__64;
+static PyObject *__pyx_tuple__66;
+static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__72;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_tuple__75;
-static PyObject *__pyx_tuple__77;
-static PyObject *__pyx_tuple__79;
-static PyObject *__pyx_tuple__81;
-static PyObject *__pyx_tuple__83;
-static PyObject *__pyx_tuple__85;
-static PyObject *__pyx_tuple__87;
-static PyObject *__pyx_tuple__89;
+static PyObject *__pyx_tuple__74;
+static PyObject *__pyx_tuple__76;
+static PyObject *__pyx_tuple__78;
+static PyObject *__pyx_tuple__80;
+static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__86;
+static PyObject *__pyx_tuple__88;
+static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__91;
+static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__93;
+static PyObject *__pyx_tuple__94;
static PyObject *__pyx_tuple__95;
-static PyObject *__pyx_tuple__97;
-static PyObject *__pyx_tuple__99;
-static PyObject *__pyx_codeobj__5;
-static PyObject *__pyx_tuple__101;
-static PyObject *__pyx_tuple__103;
-static PyObject *__pyx_tuple__105;
-static PyObject *__pyx_tuple__107;
-static PyObject *__pyx_tuple__109;
-static PyObject *__pyx_tuple__111;
-static PyObject *__pyx_tuple__113;
-static PyObject *__pyx_tuple__115;
-static PyObject *__pyx_tuple__116;
-static PyObject *__pyx_tuple__117;
-static PyObject *__pyx_tuple__118;
-static PyObject *__pyx_tuple__119;
-static PyObject *__pyx_tuple__120;
-static PyObject *__pyx_codeobj__60;
-static PyObject *__pyx_codeobj__62;
-static PyObject *__pyx_codeobj__64;
-static PyObject *__pyx_codeobj__66;
-static PyObject *__pyx_codeobj__68;
+static PyObject *__pyx_codeobj__3;
+static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__37;
+static PyObject *__pyx_codeobj__39;
+static PyObject *__pyx_codeobj__41;
+static PyObject *__pyx_codeobj__43;
+static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__49;
+static PyObject *__pyx_codeobj__51;
+static PyObject *__pyx_codeobj__53;
+static PyObject *__pyx_codeobj__55;
+static PyObject *__pyx_codeobj__57;
+static PyObject *__pyx_codeobj__59;
+static PyObject *__pyx_codeobj__61;
+static PyObject *__pyx_codeobj__63;
+static PyObject *__pyx_codeobj__65;
+static PyObject *__pyx_codeobj__67;
+static PyObject *__pyx_codeobj__69;
static PyObject *__pyx_codeobj__71;
-static PyObject *__pyx_codeobj__74;
-static PyObject *__pyx_codeobj__76;
-static PyObject *__pyx_codeobj__78;
-static PyObject *__pyx_codeobj__80;
-static PyObject *__pyx_codeobj__82;
-static PyObject *__pyx_codeobj__84;
-static PyObject *__pyx_codeobj__86;
-static PyObject *__pyx_codeobj__88;
-static PyObject *__pyx_codeobj__90;
-static PyObject *__pyx_codeobj__92;
-static PyObject *__pyx_codeobj__94;
+static PyObject *__pyx_codeobj__73;
+static PyObject *__pyx_codeobj__75;
+static PyObject *__pyx_codeobj__77;
+static PyObject *__pyx_codeobj__79;
+static PyObject *__pyx_codeobj__81;
+static PyObject *__pyx_codeobj__83;
+static PyObject *__pyx_codeobj__85;
+static PyObject *__pyx_codeobj__87;
+static PyObject *__pyx_codeobj__89;
static PyObject *__pyx_codeobj__96;
-static PyObject *__pyx_codeobj__98;
-static PyObject *__pyx_codeobj__100;
-static PyObject *__pyx_codeobj__102;
-static PyObject *__pyx_codeobj__104;
-static PyObject *__pyx_codeobj__106;
-static PyObject *__pyx_codeobj__108;
-static PyObject *__pyx_codeobj__110;
-static PyObject *__pyx_codeobj__112;
-static PyObject *__pyx_codeobj__114;
-static PyObject *__pyx_codeobj__121;
/* Late includes */
/* "silx/io/specfile.pyx":219
@@ -2917,7 +2990,7 @@ static PyObject *__pyx_codeobj__121;
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_3MCA_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_3MCA___init__[] = "MCA.__init__(self, scan)";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_3MCA_1__init__ = {"__init__", (PyCFunction)__pyx_pw_4silx_2io_8specfile_3MCA_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_3MCA___init__};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_3MCA_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_3MCA_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_3MCA___init__};
static PyObject *__pyx_pw_4silx_2io_8specfile_3MCA_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_scan = 0;
@@ -3037,12 +3110,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA___init__(CYTHON_UNUSED PyObje
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3078,12 +3148,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA___init__(CYTHON_UNUSED PyObje
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3149,9 +3216,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
int __pyx_t_2;
int __pyx_t_3;
PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
- PyObject *(*__pyx_t_6)(PyObject *);
- PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ Py_ssize_t __pyx_t_6;
+ PyObject *(*__pyx_t_7)(PyObject *);
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
@@ -3181,19 +3248,31 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* all_chann_values = [chann_line.split() for chann_line in chann_lines]
* for one_line_chann_values in all_chann_values:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_header); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_s_CHANN); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_header); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_s_CHANN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_chann_lines = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_chann_lines = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":242
* if "CHANN" in self._header:
@@ -3202,38 +3281,38 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* for one_line_chann_values in all_chann_values:
* length, start, stop, increment = map(int, one_line_chann_values)
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_v_chann_lines)) || PyTuple_CheckExact(__pyx_v_chann_lines)) {
- __pyx_t_1 = __pyx_v_chann_lines; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
- __pyx_t_6 = NULL;
+ __pyx_t_4 = __pyx_v_chann_lines; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_chann_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_chann_lines); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
}
for (;;) {
- if (likely(!__pyx_t_6)) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
+ if (likely(!__pyx_t_7)) {
+ if (likely(PyList_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
} else {
- if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
}
} else {
- __pyx_t_7 = __pyx_t_6(__pyx_t_1);
- if (unlikely(!__pyx_t_7)) {
+ __pyx_t_5 = __pyx_t_7(__pyx_t_4);
+ if (unlikely(!__pyx_t_5)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
@@ -3241,10 +3320,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
}
break;
}
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GOTREF(__pyx_t_5);
}
- __Pyx_XDECREF_SET(__pyx_v_chann_line, __pyx_t_7);
- __pyx_t_7 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_chann_line, __pyx_t_5);
+ __pyx_t_5 = 0;
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_chann_line, __pyx_n_s_split); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = NULL;
@@ -3257,20 +3336,17 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (__pyx_t_9) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else {
- __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
- }
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_all_chann_values = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_all_chann_values = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":243
* chann_lines = self._header["CHANN"].split("\n")
@@ -3279,17 +3355,17 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* length, start, stop, increment = map(int, one_line_chann_values)
* self.channels.append(list(range(start, stop + 1, increment)))
*/
- __pyx_t_4 = __pyx_v_all_chann_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
+ __pyx_t_1 = __pyx_v_all_chann_values; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
for (;;) {
- if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
#endif
- __Pyx_XDECREF_SET(__pyx_v_one_line_chann_values, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_one_line_chann_values, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/io/specfile.pyx":244
* all_chann_values = [chann_line.split() for chann_line in chann_lines]
@@ -3298,19 +3374,19 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* self.channels.append(list(range(start, stop + 1, increment)))
* elif len(self):
*/
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 244, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)(&PyInt_Type)));
__Pyx_GIVEREF(((PyObject *)(&PyInt_Type)));
- PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&PyInt_Type)));
+ PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)(&PyInt_Type)));
__Pyx_INCREF(__pyx_v_one_line_chann_values);
__Pyx_GIVEREF(__pyx_v_one_line_chann_values);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_one_line_chann_values);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 244, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
- PyObject* sequence = __pyx_t_7;
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_one_line_chann_values);
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 244, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
+ PyObject* sequence = __pyx_t_5;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 4)) {
if (size > 4) __Pyx_RaiseTooManyValuesError(4);
@@ -3319,24 +3395,24 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 2);
__pyx_t_10 = PyTuple_GET_ITEM(sequence, 3);
} else {
- __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
__pyx_t_8 = PyList_GET_ITEM(sequence, 1);
__pyx_t_9 = PyList_GET_ITEM(sequence, 2);
__pyx_t_10 = PyList_GET_ITEM(sequence, 3);
}
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_10);
#else
{
Py_ssize_t i;
- PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10};
+ PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10};
for (i=0; i < 4; i++) {
PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 244, __pyx_L1_error)
__Pyx_GOTREF(item);
@@ -3344,13 +3420,13 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
}
}
#endif
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- PyObject** temps[4] = {&__pyx_t_1,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10};
- __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 244, __pyx_L1_error)
+ PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10};
+ __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 244, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
for (index=0; index < 4; index++) {
PyObject* item = __pyx_t_12(__pyx_t_11); if (unlikely(!item)) goto __pyx_L8_unpacking_failed;
@@ -3368,8 +3444,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
__PYX_ERR(0, 244, __pyx_L1_error)
__pyx_L9_unpacking_done:;
}
- __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_4);
+ __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_start, __pyx_t_8);
__pyx_t_8 = 0;
__Pyx_XDECREF_SET(__pyx_v_stop, __pyx_t_9);
@@ -3384,8 +3460,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* elif len(self):
* # in the absence of #@CHANN, use shape of first MCA
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_channels); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 245, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 245, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_10 = __Pyx_PyInt_AddObjC(__pyx_v_stop, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 245, __pyx_L1_error)
@@ -3405,8 +3481,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
__pyx_t_9 = PySequence_List(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_t_9); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 245, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_9); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 245, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/io/specfile.pyx":243
@@ -3417,7 +3493,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* self.channels.append(list(range(start, stop + 1, increment)))
*/
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":240
* """Fill :attr:`channels`"""
@@ -3436,8 +3512,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* # in the absence of #@CHANN, use shape of first MCA
* length = self[0].shape[0]
*/
- __pyx_t_5 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 246, __pyx_L1_error)
- __pyx_t_3 = (__pyx_t_5 != 0);
+ __pyx_t_6 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 246, __pyx_L1_error)
+ __pyx_t_3 = (__pyx_t_6 != 0);
if (__pyx_t_3) {
/* "silx/io/specfile.pyx":248
@@ -3447,16 +3523,16 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* start, stop, increment = (0, length - 1, 1)
* self.channels.append(list(range(start, stop + 1, increment)))
*/
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_self, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 248, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 248, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_length = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_v_length = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":249
* # in the absence of #@CHANN, use shape of first MCA
@@ -3465,18 +3541,18 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
* self.channels.append(list(range(start, stop + 1, increment)))
*
*/
- __pyx_t_4 = __pyx_int_0;
- __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_1 = __pyx_int_0;
+ __Pyx_INCREF(__pyx_t_1);
__pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_v_length, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __pyx_int_1;
- __Pyx_INCREF(__pyx_t_7);
- __pyx_v_start = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_t_5 = __pyx_int_1;
+ __Pyx_INCREF(__pyx_t_5);
+ __pyx_v_start = __pyx_t_1;
+ __pyx_t_1 = 0;
__pyx_v_stop = __pyx_t_9;
__pyx_t_9 = 0;
- __pyx_v_increment = __pyx_t_7;
- __pyx_t_7 = 0;
+ __pyx_v_increment = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/io/specfile.pyx":250
* length = self[0].shape[0]
@@ -3485,30 +3561,30 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
*
* def _parse_calibration(self):
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_channels); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 250, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_stop, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 250, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_start);
__Pyx_GIVEREF(__pyx_v_start);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_start);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_start);
__Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_9);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9);
__Pyx_INCREF(__pyx_v_increment);
__Pyx_GIVEREF(__pyx_v_increment);
- PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_increment);
+ PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_increment);
__pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 250, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 250, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PySequence_List(__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PySequence_List(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 250, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_1); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":246
* length, start, stop, increment = map(int, one_line_chann_values)
@@ -3534,7 +3610,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_2_parse_channels(CYTHON_UNUSE
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
@@ -3589,9 +3665,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
int __pyx_t_2;
int __pyx_t_3;
PyObject *__pyx_t_4 = NULL;
- Py_ssize_t __pyx_t_5;
- PyObject *(*__pyx_t_6)(PyObject *);
- PyObject *__pyx_t_7 = NULL;
+ PyObject *__pyx_t_5 = NULL;
+ Py_ssize_t __pyx_t_6;
+ PyObject *(*__pyx_t_7)(PyObject *);
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
int __pyx_t_10;
@@ -3618,19 +3694,31 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* all_calib_values = [calib_line.split() for calib_line in calib_lines]
* for one_line_calib_values in all_calib_values:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_header); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_s_CALIB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_header); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_s_CALIB); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_calib_lines = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_calib_lines = __pyx_t_1;
+ __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":257
* if "CALIB" in self._header:
@@ -3639,38 +3727,38 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* for one_line_calib_values in all_calib_values:
* self.calibration.append(list(map(float, one_line_calib_values)))
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_v_calib_lines)) || PyTuple_CheckExact(__pyx_v_calib_lines)) {
- __pyx_t_1 = __pyx_v_calib_lines; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
- __pyx_t_6 = NULL;
+ __pyx_t_4 = __pyx_v_calib_lines; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_calib_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_calib_lines); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
}
for (;;) {
- if (likely(!__pyx_t_6)) {
- if (likely(PyList_CheckExact(__pyx_t_1))) {
- if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
+ if (likely(!__pyx_t_7)) {
+ if (likely(PyList_CheckExact(__pyx_t_4))) {
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 257, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
} else {
- if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 257, __pyx_L1_error)
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
}
} else {
- __pyx_t_7 = __pyx_t_6(__pyx_t_1);
- if (unlikely(!__pyx_t_7)) {
+ __pyx_t_5 = __pyx_t_7(__pyx_t_4);
+ if (unlikely(!__pyx_t_5)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
@@ -3678,10 +3766,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
}
break;
}
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GOTREF(__pyx_t_5);
}
- __Pyx_XDECREF_SET(__pyx_v_calib_line, __pyx_t_7);
- __pyx_t_7 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_calib_line, __pyx_t_5);
+ __pyx_t_5 = 0;
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_calib_line, __pyx_n_s_split); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = NULL;
@@ -3694,20 +3782,17 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (__pyx_t_9) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else {
- __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
- }
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_all_calib_values = ((PyObject*)__pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_all_calib_values = ((PyObject*)__pyx_t_1);
+ __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":258
* calib_lines = self._header["CALIB"].split("\n")
@@ -3716,17 +3801,17 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* self.calibration.append(list(map(float, one_line_calib_values)))
* else:
*/
- __pyx_t_4 = __pyx_v_all_calib_values; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
+ __pyx_t_1 = __pyx_v_all_calib_values; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
for (;;) {
- if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 258, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
#endif
- __Pyx_XDECREF_SET(__pyx_v_one_line_calib_values, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_one_line_calib_values, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/io/specfile.pyx":259
* all_calib_values = [calib_line.split() for calib_line in calib_lines]
@@ -3735,25 +3820,25 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* else:
* # in the absence of #@calib, use default
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calibration); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calibration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
__Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
- PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)(&PyFloat_Type)));
+ PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)(&PyFloat_Type)));
__Pyx_INCREF(__pyx_v_one_line_calib_values);
__Pyx_GIVEREF(__pyx_v_one_line_calib_values);
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_one_line_calib_values);
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 259, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_one_line_calib_values);
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PySequence_List(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = PySequence_List(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_10 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_7); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_5); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "silx/io/specfile.pyx":258
* calib_lines = self._header["CALIB"].split("\n")
@@ -3763,7 +3848,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* else:
*/
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":255
* """Fill :attr:`calibration`"""
@@ -3783,22 +3868,22 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
* def __len__(self):
*/
/*else*/ {
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calibration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calibration); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_float_0_);
__Pyx_GIVEREF(__pyx_float_0_);
- PyList_SET_ITEM(__pyx_t_7, 0, __pyx_float_0_);
+ PyList_SET_ITEM(__pyx_t_5, 0, __pyx_float_0_);
__Pyx_INCREF(__pyx_float_1_);
__Pyx_GIVEREF(__pyx_float_1_);
- PyList_SET_ITEM(__pyx_t_7, 1, __pyx_float_1_);
+ PyList_SET_ITEM(__pyx_t_5, 1, __pyx_float_1_);
__Pyx_INCREF(__pyx_float_0_);
__Pyx_GIVEREF(__pyx_float_0_);
- PyList_SET_ITEM(__pyx_t_7, 2, __pyx_float_0_);
- __pyx_t_10 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_7); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyList_SET_ITEM(__pyx_t_5, 2, __pyx_float_0_);
+ __pyx_t_10 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_5); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L3:;
@@ -3816,7 +3901,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_4_parse_calibration(CYTHON_UN
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("silx.io.specfile.MCA._parse_calibration", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -3861,7 +3946,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_6__len__(CYTHON_UNUSED PyObje
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
__Pyx_RefNannySetupContext("__len__", 0);
/* "silx/io/specfile.pyx":270
@@ -3895,41 +3979,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_6__len__(CYTHON_UNUSED PyObje
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
@@ -3949,7 +4003,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_6__len__(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("silx.io.specfile.MCA.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3969,7 +4022,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_6__len__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_3MCA_9__getitem__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_3MCA_8__getitem__[] = "MCA.__getitem__(self, key)\nReturn a single MCA data line\n\n :param key: 0-based index of MCA within Scan\n :type key: int\n\n :return: Single MCA\n :rtype: 1D numpy array\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_3MCA_9__getitem__ = {"__getitem__", (PyCFunction)__pyx_pw_4silx_2io_8specfile_3MCA_9__getitem__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_3MCA_8__getitem__};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_3MCA_9__getitem__ = {"__getitem__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_3MCA_9__getitem__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_3MCA_8__getitem__};
static PyObject *__pyx_pw_4silx_2io_8specfile_3MCA_9__getitem__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_key = 0;
@@ -4064,7 +4117,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_8__getitem__(CYTHON_UNUSED Py
*
* if isinstance(key, (int, long)):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4173,7 +4226,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_8__getitem__(CYTHON_UNUSED Py
*
* if not 0 <= mca_index < len(self):
*/
- __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_MCA_index_should_be_an_integer_s, ((PyObject *)Py_TYPE(__pyx_v_key))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 290, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_MCA_index_should_be_an_integer_s, ((PyObject *)Py_TYPE(__pyx_v_key))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
/* "silx/io/specfile.pyx":290
@@ -4397,7 +4450,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_3MCA_10__iter__(CYTHON_UNUSED PyOb
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
{
- __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4silx_2io_8specfile_3MCA_12generator, __pyx_codeobj__5, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_MCA___iter, __pyx_n_s_silx_io_specfile); if (unlikely(!gen)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4silx_2io_8specfile_3MCA_12generator, __pyx_codeobj__3, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_MCA___iter, __pyx_n_s_silx_io_specfile); if (unlikely(!gen)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
@@ -4562,7 +4615,9 @@ static PyObject *__pyx_gb_4silx_2io_8specfile_3MCA_12generator(__pyx_CoroutineOb
__Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+ #if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+ #endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
@@ -4580,7 +4635,7 @@ static PyObject *__pyx_gb_4silx_2io_8specfile_3MCA_12generator(__pyx_CoroutineOb
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_1_add_or_concatenate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile__add_or_concatenate[] = "_add_or_concatenate(dictionary, key, value)\nIf key doesn't exist in dictionary, create a new ``key: value`` pair.\n Else append/concatenate the new value to the existing one\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_1_add_or_concatenate = {"_add_or_concatenate", (PyCFunction)__pyx_pw_4silx_2io_8specfile_1_add_or_concatenate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile__add_or_concatenate};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_1_add_or_concatenate = {"_add_or_concatenate", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_1_add_or_concatenate, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile__add_or_concatenate};
static PyObject *__pyx_pw_4silx_2io_8specfile_1_add_or_concatenate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_dictionary = 0;
PyObject *__pyx_v_key = 0;
@@ -4776,7 +4831,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile__add_or_concatenate(CYTHON_UNUSED
*
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L5_except_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 320, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -4835,7 +4890,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile__add_or_concatenate(CYTHON_UNUSED
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_4Scan___init__[] = "Scan.__init__(self, specfile, scan_index)";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_1__init__ = {"__init__", (PyCFunction)__pyx_pw_4silx_2io_8specfile_4Scan_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan___init__};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_4Scan_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan___init__};
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_specfile = 0;
@@ -4919,11 +4974,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- int __pyx_t_6;
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
- int __pyx_t_9;
+ int __pyx_t_5;
+ Py_ssize_t __pyx_t_6;
+ PyObject *(*__pyx_t_7)(PyObject *);
+ int __pyx_t_8;
+ PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
PyObject *__pyx_t_12 = NULL;
@@ -4969,38 +5024,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_scan_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_scan_index};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_scan_index};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_scan_index);
- __Pyx_GIVEREF(__pyx_v_scan_index);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_scan_index);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_scan_index) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_scan_index);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_number_2, __pyx_t_1) < 0) __PYX_ERR(0, 352, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5014,48 +5041,20 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_specfile, __pyx_n_s_order); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 353, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = NULL;
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_scan_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_scan_index};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_scan_index};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_scan_index);
- __Pyx_GIVEREF(__pyx_v_scan_index);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_scan_index);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_scan_index) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_scan_index);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_order_2, __pyx_t_1) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5084,41 +5083,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines, __pyx_t_1) < 0) __PYX_ERR(0, 355, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5132,57 +5101,27 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*/
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_file_header); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_file_header); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_2);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines, __pyx_t_1) < 0) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5195,14 +5134,14 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 358, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 358, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_6) {
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 358, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":359
*
@@ -5211,10 +5150,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* self._header = self._file_header_lines + self._scan_header_lines
*
*/
- __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines, __pyx_t_4) < 0) __PYX_ERR(0, 359, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines, __pyx_t_3) < 0) __PYX_ERR(0, 359, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/io/specfile.pyx":358
* self._file_header_lines = self._specfile.file_header(self._index)
@@ -5232,14 +5171,14 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*
* self._scan_header_dict = {}
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 360, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 360, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_header, __pyx_t_1) < 0) __PYX_ERR(0, 360, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5277,35 +5216,35 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
+ __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 364, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 364, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
for (;;) {
- if (likely(!__pyx_t_8)) {
- if (likely(PyList_CheckExact(__pyx_t_5))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
+ if (likely(!__pyx_t_7)) {
+ if (likely(PyList_CheckExact(__pyx_t_2))) {
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
} else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
}
} else {
- __pyx_t_1 = __pyx_t_8(__pyx_t_5);
+ __pyx_t_1 = __pyx_t_7(__pyx_t_2);
if (unlikely(!__pyx_t_1)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -5326,56 +5265,56 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* match_mca = re.search(r"#@(\w+) *(.*)", line)
* if match:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_search); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_search); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s_w, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyFunction_Check(__pyx_t_4)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_w, __pyx_v_line};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s_w, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_w, __pyx_v_line};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
- __pyx_t_2 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
+ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_kp_s_w);
__Pyx_GIVEREF(__pyx_kp_s_w);
- PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_kp_s_w);
+ PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_w);
__Pyx_INCREF(__pyx_v_line);
__Pyx_GIVEREF(__pyx_v_line);
- PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_v_line);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_line);
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5386,56 +5325,56 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* if match:
* hkey = match.group(1).lstrip("#").strip()
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_search); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_search); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_w_2, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s_w_2, __pyx_v_line};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_kp_s_w_2, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_kp_s_w_2, __pyx_v_line};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
- __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+ __pyx_t_3 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_kp_s_w_2);
__Pyx_GIVEREF(__pyx_kp_s_w_2);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_kp_s_w_2);
+ PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_kp_s_w_2);
__Pyx_INCREF(__pyx_v_line);
__Pyx_GIVEREF(__pyx_v_line);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_v_line);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_line);
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF_SET(__pyx_v_match_mca, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5446,8 +5385,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* hkey = match.group(1).lstrip("#").strip()
* hvalue = match.group(2).strip()
*/
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 367, __pyx_L1_error)
- if (__pyx_t_6) {
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 367, __pyx_L1_error)
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":368
* match_mca = re.search(r"#@(\w+) *(.*)", line)
@@ -5456,38 +5395,59 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* hvalue = match.group(2).strip()
* _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_10, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_s__5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__5);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
}
+ __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_hkey, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5498,32 +5458,41 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
* elif match_mca:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_3, __pyx_int_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF_SET(__pyx_v_hvalue, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5534,60 +5503,60 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* elif match_mca:
* hkey = match_mca.group(1).lstrip("#").strip()
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_scan_header_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
+ if (PyFunction_Check(__pyx_t_9)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
- __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_8, __pyx_t_4);
__Pyx_INCREF(__pyx_v_hkey);
__Pyx_GIVEREF(__pyx_v_hkey);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_hkey);
+ PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_8, __pyx_v_hkey);
__Pyx_INCREF(__pyx_v_hvalue);
__Pyx_GIVEREF(__pyx_v_hvalue);
- PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_v_hvalue);
+ PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_8, __pyx_v_hvalue);
__pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":367
@@ -5607,8 +5576,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* hkey = match_mca.group(1).lstrip("#").strip()
* hvalue = match_mca.group(2).strip()
*/
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_match_mca); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 371, __pyx_L1_error)
- if (__pyx_t_6) {
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_match_mca); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 371, __pyx_L1_error)
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":372
* _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
@@ -5617,38 +5586,59 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* hvalue = match_mca.group(2).strip()
* _add_or_concatenate(self._mca_header_dict, hkey, hvalue)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_match_mca, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_match_mca, __pyx_n_s_group); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_10 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (__pyx_t_10) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_10, __pyx_kp_s__5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__5);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
}
+ __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_hkey, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5659,32 +5649,41 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* _add_or_concatenate(self._mca_header_dict, hkey, hvalue)
* else:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_match_mca, __pyx_n_s_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 373, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_match_mca, __pyx_n_s_group); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 373, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- if (__pyx_t_10) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
+ __pyx_t_4 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_int_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_2);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 373, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ }
}
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 373, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF_SET(__pyx_v_hvalue, __pyx_t_1);
__pyx_t_1 = 0;
@@ -5695,60 +5694,60 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* else:
* # this shouldn't happen
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mca_header_dict_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 374, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 374, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mca_header_dict_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 374, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = NULL;
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_10, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_4, __pyx_v_hkey, __pyx_v_hvalue};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_10, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_4, __pyx_v_hkey, __pyx_v_hvalue};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
- __pyx_t_3 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
+ if (__pyx_t_10) {
+ __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10); __pyx_t_10 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_t_4);
__Pyx_INCREF(__pyx_v_hkey);
__Pyx_GIVEREF(__pyx_v_hkey);
- PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_v_hkey);
+ PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_hkey);
__Pyx_INCREF(__pyx_v_hvalue);
__Pyx_GIVEREF(__pyx_v_hvalue);
- PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_9, __pyx_v_hvalue);
- __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_8, __pyx_v_hvalue);
+ __pyx_t_4 = 0;
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":371
@@ -5769,58 +5768,28 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* self._labels = []
*/
/*else*/ {
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_logger); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 377, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 377, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Unable_to_parse_scan_header_line, __pyx_v_line); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = PyNumber_Add(__pyx_kp_s_Unable_to_parse_scan_header_line, __pyx_v_line); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 377, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_10)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_10) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -5834,7 +5803,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* match_mca = re.search(r"#@(\w+) *(.*)", line)
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":379
* _logger.warning("Unable to parse scan header line " + line)
@@ -5843,10 +5812,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* if self.record_exists_in_hdr('L'):
* try:
*/
- __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_5) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_2) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":380
*
@@ -5855,14 +5824,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* try:
* self._labels = self._specfile.labels(self._index)
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_record_exists_in_hdr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_record_exists_in_hdr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_n_s_L) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_n_s_L);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":381
* self._labels = []
@@ -5887,61 +5868,31 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* except SfErrLineNotFound:
* # SpecFile.labels raises an IndexError when encountering
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_labels_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_labels_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = NULL;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_1) < 0) __PYX_ERR(0, 382, __pyx_L8_error)
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_2) < 0) __PYX_ERR(0, 382, __pyx_L8_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":381
* self._labels = []
@@ -5958,10 +5909,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":383
* try:
@@ -5970,19 +5921,19 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* # SpecFile.labels raises an IndexError when encountering
* # a Scan with no data, even if the header exists.
*/
- __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 383, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_ErrRestore(__pyx_t_1, __pyx_t_3, __pyx_t_2);
- __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0;
- if (__pyx_t_9) {
+ __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 383, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_9);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_ErrRestore(__pyx_t_2, __pyx_t_3, __pyx_t_1);
+ __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0;
+ if (__pyx_t_8) {
__Pyx_AddTraceback("silx.io.specfile.Scan.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 383, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_3);
+ if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(0, 383, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":386
* # SpecFile.labels raises an IndexError when encountering
@@ -5991,7 +5942,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* self._scan_header_dict["L"])
* self._labels = L_header.split(" ")
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 386, __pyx_L10_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 386, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sub); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 386, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_10);
@@ -6010,7 +5961,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
- __pyx_t_9 = 0;
+ __pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_4)) {
@@ -6018,49 +5969,49 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_10, function);
- __pyx_t_9 = 1;
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_kp_s_2, __pyx_kp_s__15, __pyx_t_14};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 386, __pyx_L10_except_error)
+ PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_kp_s_2, __pyx_kp_s__6, __pyx_t_14};
+ __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 386, __pyx_L10_except_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_kp_s_2, __pyx_kp_s__15, __pyx_t_14};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 386, __pyx_L10_except_error)
+ PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_kp_s_2, __pyx_kp_s__6, __pyx_t_14};
+ __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 386, __pyx_L10_except_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
} else
#endif
{
- __pyx_t_15 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 386, __pyx_L10_except_error)
+ __pyx_t_15 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 386, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_15);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_kp_s_2);
__Pyx_GIVEREF(__pyx_kp_s_2);
- PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_9, __pyx_kp_s_2);
- __Pyx_INCREF(__pyx_kp_s__15);
- __Pyx_GIVEREF(__pyx_kp_s__15);
- PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_9, __pyx_kp_s__15);
+ PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_8, __pyx_kp_s_2);
+ __Pyx_INCREF(__pyx_kp_s__6);
+ __Pyx_GIVEREF(__pyx_kp_s__6);
+ PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_8, __pyx_kp_s__6);
__Pyx_GIVEREF(__pyx_t_14);
- PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_9, __pyx_t_14);
+ PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_8, __pyx_t_14);
__pyx_t_14 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 386, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_15, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 386, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_v_L_header = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_v_L_header = __pyx_t_9;
+ __pyx_t_9 = 0;
/* "silx/io/specfile.pyx":388
* L_header = re.sub(r" {2,}", " ", # max. 2 spaces
@@ -6069,16 +6020,28 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*
* self._file_header_dict = {}
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_L_header, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 388, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 388, __pyx_L10_except_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_L_header, __pyx_n_s_split); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 388, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_10) < 0) __PYX_ERR(0, 388, __pyx_L10_except_error)
+ __pyx_t_15 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
+ }
+ }
+ __pyx_t_9 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_15, __pyx_kp_s__6) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s__6);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 388, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_labels, __pyx_t_9) < 0) __PYX_ERR(0, 388, __pyx_L10_except_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L9_exception_handled;
}
goto __pyx_L10_except_error;
@@ -6120,10 +6083,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* for line in self._file_header_lines:
* match = re.search(r"#(\w+) *(.*)", line)
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 390, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_header_dict, __pyx_t_1) < 0) __PYX_ERR(0, 390, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 390, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_header_dict, __pyx_t_2) < 0) __PYX_ERR(0, 390, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":391
*
@@ -6132,39 +6095,39 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* match = re.search(r"#(\w+) *(.*)", line)
* if match:
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
- __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_lines); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+ __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 391, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 391, __pyx_L1_error)
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
for (;;) {
- if (likely(!__pyx_t_8)) {
+ if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 391, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
#endif
} else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 391, __pyx_L1_error)
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
#endif
}
} else {
- __pyx_t_1 = __pyx_t_8(__pyx_t_3);
- if (unlikely(!__pyx_t_1)) {
+ __pyx_t_2 = __pyx_t_7(__pyx_t_3);
+ if (unlikely(!__pyx_t_2)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
@@ -6172,10 +6135,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
}
break;
}
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_t_2);
}
- __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_2);
+ __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":392
* self._file_header_dict = {}
@@ -6184,58 +6147,58 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* if match:
* # header type
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_search); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_re); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_search); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_kp_s_w, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (PyFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_kp_s_w, __pyx_v_line};
+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_2);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_kp_s_w, __pyx_v_line};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_kp_s_w, __pyx_v_line};
+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_2);
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
+ __pyx_t_10 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ if (__pyx_t_1) {
+ __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
}
__Pyx_INCREF(__pyx_kp_s_w);
__Pyx_GIVEREF(__pyx_kp_s_w);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_kp_s_w);
+ PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_8, __pyx_kp_s_w);
__Pyx_INCREF(__pyx_v_line);
__Pyx_GIVEREF(__pyx_v_line);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_v_line);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_8, __pyx_v_line);
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_match, __pyx_t_2);
+ __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":393
* for line in self._file_header_lines:
@@ -6244,8 +6207,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* # header type
* hkey = match.group(1).lstrip("#").strip()
*/
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 393, __pyx_L1_error)
- if (__pyx_t_6) {
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 393, __pyx_L1_error)
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":395
* if match:
@@ -6254,40 +6217,61 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* hvalue = match.group(2).strip()
* _add_or_concatenate(self._file_header_dict, hkey, hvalue)
*/
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 395, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_15 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_15)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_15);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_10 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_15, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_1);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 395, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
- }
+ __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_10, __pyx_kp_s__5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s__5);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 395, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF_SET(__pyx_v_hkey, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_hkey, __pyx_t_2);
+ __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":396
* # header type
@@ -6296,34 +6280,43 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* _add_or_concatenate(self._file_header_dict, hkey, hvalue)
* else:
*/
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 396, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 396, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 396, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_match, __pyx_n_s_group); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 396, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_int_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_int_2);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF_SET(__pyx_v_hvalue, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strip); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 396, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_hvalue, __pyx_t_2);
+ __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":397
* hkey = match.group(1).lstrip("#").strip()
@@ -6332,61 +6325,61 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* else:
* _logger.warning("Unable to parse file header line " + line)
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = NULL;
- __pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_add_or_concatenate); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_header_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = NULL;
+ __pyx_t_8 = 0;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- __pyx_t_9 = 1;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ __pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_5, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_1, __pyx_v_hkey, __pyx_v_hvalue};
+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_5, __pyx_v_hkey, __pyx_v_hvalue};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_t_1, __pyx_v_hkey, __pyx_v_hvalue};
+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
#endif
{
- __pyx_t_15 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __pyx_t_15 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- if (__pyx_t_2) {
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_2); __pyx_t_2 = NULL;
+ if (__pyx_t_10) {
+ __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10); __pyx_t_10 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_9, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_8, __pyx_t_1);
__Pyx_INCREF(__pyx_v_hkey);
__Pyx_GIVEREF(__pyx_v_hkey);
- PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_9, __pyx_v_hkey);
+ PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_8, __pyx_v_hkey);
__Pyx_INCREF(__pyx_v_hvalue);
__Pyx_GIVEREF(__pyx_v_hvalue);
- PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_9, __pyx_v_hvalue);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 397, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_8, __pyx_v_hvalue);
+ __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":393
* for line in self._file_header_lines:
@@ -6406,60 +6399,30 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* self._motor_names = self._specfile.motor_names(self._index)
*/
/*else*/ {
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_warning); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_logger); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_warning); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyNumber_Add(__pyx_kp_s_Unable_to_parse_file_header_line, __pyx_v_line); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = PyNumber_Add(__pyx_kp_s_Unable_to_parse_file_header_line, __pyx_v_line); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_15);
- if (likely(__pyx_t_5)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_15);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_15, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_10};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_10};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L18:;
@@ -6480,58 +6443,28 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
* self._motor_positions = self._specfile.motor_positions(self._index)
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_motor_names); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_motor_names); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = NULL;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_15);
- if (likely(__pyx_t_2)) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_15);
+ if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_15, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_1};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_9, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_motor_names_2, __pyx_t_3) < 0) __PYX_ERR(0, 401, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6545,57 +6478,27 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
*/
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_specfile); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_motor_positions); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_motor_positions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_15};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_15};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_15);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_15);
- __pyx_t_15 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_t_15) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_motor_positions_2, __pyx_t_3) < 0) __PYX_ERR(0, 402, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6633,7 +6536,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan___init__(CYTHON_UNUSED PyObj
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
@@ -7305,7 +7208,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_22data(CYTHON_UNUSED PyObjec
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("data", 0);
/* "silx/io/specfile.pyx":497
@@ -7329,7 +7231,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_22data(CYTHON_UNUSED PyObjec
*
* return self._data
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_transpose); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 498, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -7351,41 +7253,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_22data(CYTHON_UNUSED PyObjec
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -7397,41 +7269,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_22data(CYTHON_UNUSED PyObjec
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data, __pyx_t_1) < 0) __PYX_ERR(0, 498, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7475,7 +7317,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_22data(CYTHON_UNUSED PyObjec
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("silx.io.specfile.Scan.data", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -7515,7 +7356,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_24mca(CYTHON_UNUSED PyObject
int __pyx_t_3;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("mca", 0);
/* "silx/io/specfile.pyx":512
@@ -7539,7 +7379,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_24mca(CYTHON_UNUSED PyObject
* return self._mca
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_MCA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MCA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -7551,38 +7391,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_24mca(CYTHON_UNUSED PyObject
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_self};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_self};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_INCREF(__pyx_v_self);
- __Pyx_GIVEREF(__pyx_v_self);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_self) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_self);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mca, __pyx_t_1) < 0) __PYX_ERR(0, 513, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7623,7 +7435,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_24mca(CYTHON_UNUSED PyObject
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("silx.io.specfile.Scan.mca", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -7767,7 +7578,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_28motor_positions(CYTHON_UNU
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_31record_exists_in_hdr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_4Scan_30record_exists_in_hdr[] = "Scan.record_exists_in_hdr(self, record)\nCheck whether a scan header line exists.\n\n This should be used before attempting to retrieve header information\n using a C function that may crash with a *segmentation fault* if the\n header isn't defined in the SpecFile.\n\n :param record: single upper case letter corresponding to the\n header you want to test (e.g. ``L`` for labels)\n :type record: str\n\n :return: True or False\n :rtype: boolean\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_31record_exists_in_hdr = {"record_exists_in_hdr", (PyCFunction)__pyx_pw_4silx_2io_8specfile_4Scan_31record_exists_in_hdr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_30record_exists_in_hdr};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_31record_exists_in_hdr = {"record_exists_in_hdr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_4Scan_31record_exists_in_hdr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_30record_exists_in_hdr};
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_31record_exists_in_hdr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_record = 0;
@@ -7838,8 +7649,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_30record_exists_in_hdr(CYTHO
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
+ int __pyx_t_8;
__Pyx_RefNannySetupContext("record_exists_in_hdr", 0);
/* "silx/io/specfile.pyx":544
@@ -7903,7 +7713,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_30record_exists_in_hdr(CYTHO
*/
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyNumber_Add(__pyx_kp_s__8, __pyx_v_record); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error)
+ __pyx_t_6 = PyNumber_Add(__pyx_kp_s__5, __pyx_v_record); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -7915,45 +7725,15 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_30record_exists_in_hdr(CYTHO
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 545, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 545, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 545, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_9) {
+ if (__pyx_t_8) {
/* "silx/io/specfile.pyx":546
* for line in self._header:
@@ -8014,7 +7794,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_30record_exists_in_hdr(CYTHO
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("silx.io.specfile.Scan.record_exists_in_hdr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -8035,7 +7814,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_30record_exists_in_hdr(CYTHO
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_33data_line(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_4Scan_32data_line[] = "Scan.data_line(self, line_index)\nReturns data for a given line of this scan.\n\n .. note::\n\n A data line returned by this method, corresponds to a data line\n in the original specfile (a series of data points, one per\n detector). In the :attr:`data` array, this line index corresponds\n to the index in the second dimension (~ column) of the array.\n\n :param line_index: Index of data line to retrieve (starting with 0)\n :type line_index: int\n\n :return: Line data as a 1D array of doubles\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_33data_line = {"data_line", (PyCFunction)__pyx_pw_4silx_2io_8specfile_4Scan_33data_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_32data_line};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_33data_line = {"data_line", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_4Scan_33data_line, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_32data_line};
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_33data_line(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_line_index = 0;
@@ -8115,9 +7894,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_32data_line(CYTHON_UNUSED Py
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_INCREF(__pyx_slice__20);
- __Pyx_GIVEREF(__pyx_slice__20);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__20);
+ __Pyx_INCREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__7);
__Pyx_INCREF(__pyx_v_line_index);
__Pyx_GIVEREF(__pyx_v_line_index);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_line_index);
@@ -8161,7 +7940,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_32data_line(CYTHON_UNUSED Py
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_35data_column_by_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_4Scan_34data_column_by_name[] = "Scan.data_column_by_name(self, label)\nReturns a data column\n\n :param label: Label of data column to retrieve, as defined on the\n ``#L`` line of the scan header.\n :type label: str\n\n :return: Line data as a 1D array of doubles\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_35data_column_by_name = {"data_column_by_name", (PyCFunction)__pyx_pw_4silx_2io_8specfile_4Scan_35data_column_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_34data_column_by_name};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_35data_column_by_name = {"data_column_by_name", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_4Scan_35data_column_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_34data_column_by_name};
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_35data_column_by_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_label = 0;
@@ -8347,7 +8126,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
* _logger.warning("Cannot get data column %s in scan %d.%d",
*/
__Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_9);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L5_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -8367,7 +8146,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
* label, self.number, self.order)
* ret = numpy.empty((0, ), numpy.double)
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 583, __pyx_L5_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_logger); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 583, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warning); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 583, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_10);
@@ -8448,12 +8227,12 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
* return ret
*
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L5_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_empty); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L5_except_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_double); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -8472,7 +8251,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_13)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_tuple__21, __pyx_t_11};
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_tuple__8, __pyx_t_11};
__pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_5);
@@ -8481,7 +8260,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_tuple__21, __pyx_t_11};
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_tuple__8, __pyx_t_11};
__pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 585, __pyx_L5_except_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_GOTREF(__pyx_t_5);
@@ -8494,9 +8273,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
if (__pyx_t_10) {
__Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __pyx_t_10 = NULL;
}
- __Pyx_INCREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
- PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_tuple__21);
+ __Pyx_INCREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_tuple__8);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_11);
__pyx_t_11 = 0;
@@ -8507,9 +8286,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF_SET(__pyx_v_ret, __pyx_t_5);
__pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L4_exception_handled;
}
goto __pyx_L5_except_error;
@@ -8586,7 +8365,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4Scan_34data_column_by_name(CYTHON
/* Python wrapper */
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_37motor_position_by_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_2io_8specfile_4Scan_36motor_position_by_name[] = "Scan.motor_position_by_name(self, name)\nReturns the position for a given motor\n\n :param name: Name of motor, as defined on the ``#O`` line of the\n file header.\n :type name: str\n\n :return: Motor position\n :rtype: float\n ";
-static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_37motor_position_by_name = {"motor_position_by_name", (PyCFunction)__pyx_pw_4silx_2io_8specfile_4Scan_37motor_position_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_36motor_position_by_name};
+static PyMethodDef __pyx_mdef_4silx_2io_8specfile_4Scan_37motor_position_by_name = {"motor_position_by_name", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_4Scan_37motor_position_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_4Scan_36motor_position_by_name};
static PyObject *__pyx_pw_4silx_2io_8specfile_4Scan_37motor_position_by_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_name = 0;
@@ -8786,7 +8565,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_2_string_to_char_star(CYTHON_UNUSE
* return bytes(string_, "ascii")
* return string_
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_version_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -8906,9 +8685,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_4;
int __pyx_t_5;
- int __pyx_t_6;
+ PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
@@ -8916,6 +8695,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
PyObject *__pyx_t_11 = NULL;
Py_ssize_t __pyx_t_12;
PyObject *(*__pyx_t_13)(PyObject *);
+ PyObject *__pyx_t_14 = NULL;
__Pyx_RefNannySetupContext("is_specfile", 0);
/* "silx/io/specfile.pyx":616
@@ -8925,7 +8705,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
* return False
* # test for presence of #S or #F in first 10 lines
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -8943,43 +8723,15 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_filename);
- __Pyx_GIVEREF(__pyx_v_filename);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_filename);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 616, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 616, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = ((!__pyx_t_5) != 0);
- if (__pyx_t_6) {
+ __pyx_t_5 = ((!__pyx_t_4) != 0);
+ if (__pyx_t_5) {
/* "silx/io/specfile.pyx":617
* """
@@ -9021,29 +8773,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 619, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 619, __pyx_L4_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 619, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L4_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L4_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L4_error)
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 619, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_t_1;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_t_1;
__pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
@@ -9055,8 +8804,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
/*try:*/ {
- __pyx_v_f = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_v_f = __pyx_t_3;
+ __pyx_t_3 = 0;
/* "silx/io/specfile.pyx":620
* # test for presence of #S or #F in first 10 lines
@@ -9065,13 +8814,25 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
* for i, line in enumerate(chunk.split(b"\n")):
* if line.startswith(b"#S ") or line.startswith(b"#F "):
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 620, __pyx_L8_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L8_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_chunk = __pyx_t_2;
- __pyx_t_2 = 0;
+ __pyx_t_1 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_2, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_int_2500) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_2500);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L8_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_chunk = __pyx_t_3;
+ __pyx_t_3 = 0;
/* "silx/io/specfile.pyx":619
* return False
@@ -9086,38 +8847,38 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L13_try_end;
__pyx_L8_error:;
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/*except:*/ {
__Pyx_AddTraceback("silx.io.specfile.is_specfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(0, 619, __pyx_L10_except_error)
+ if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 619, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L10_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL);
+ __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 619, __pyx_L10_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 619, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- if (__pyx_t_6 < 0) __PYX_ERR(0, 619, __pyx_L10_except_error)
- __pyx_t_5 = ((!(__pyx_t_6 != 0)) != 0);
- if (__pyx_t_5) {
+ if (__pyx_t_5 < 0) __PYX_ERR(0, 619, __pyx_L10_except_error)
+ __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_1);
- __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_1);
- __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0;
+ __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1);
+ __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
__PYX_ERR(0, 619, __pyx_L10_except_error)
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
@@ -9136,9 +8897,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
}
/*finally:*/ {
/*normal exit:*/{
- if (__pyx_t_7) {
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__23, NULL);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (__pyx_t_6) {
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__9, NULL);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 619, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -9149,7 +8910,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
}
goto __pyx_L17;
__pyx_L4_error:;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
@@ -9164,41 +8925,53 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_INCREF(__pyx_int_0);
__pyx_t_1 = __pyx_int_0;
if (unlikely(!__pyx_v_chunk)) { __Pyx_RaiseUnboundLocalError("chunk"); __PYX_ERR(0, 621, __pyx_L1_error) }
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 621, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_kp_b_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_b_);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
- __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_12 = 0;
+ __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_12 = 0;
__pyx_t_13 = NULL;
} else {
- __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 621, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_12 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 621, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
for (;;) {
if (likely(!__pyx_t_13)) {
- if (likely(PyList_CheckExact(__pyx_t_4))) {
- if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_4)) break;
+ if (likely(PyList_CheckExact(__pyx_t_3))) {
+ if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
#else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
} else {
- if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+ if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_2); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
#else
- __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
+ __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
}
} else {
- __pyx_t_2 = __pyx_t_13(__pyx_t_4);
+ __pyx_t_2 = __pyx_t_13(__pyx_t_3);
if (unlikely(!__pyx_t_2)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -9226,28 +8999,52 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
* return True
* if i >= 10:
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_kp_b_S) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_b_S);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 622, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 622, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (!__pyx_t_6) {
+ if (!__pyx_t_5) {
} else {
- __pyx_t_5 = __pyx_t_6;
+ __pyx_t_4 = __pyx_t_5;
goto __pyx_L21_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_14, __pyx_kp_b_F) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_b_F);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 622, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 622, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __pyx_t_6;
+ __pyx_t_4 = __pyx_t_5;
__pyx_L21_bool_binop_done:;
- if (__pyx_t_5) {
+ if (__pyx_t_4) {
/* "silx/io/specfile.pyx":623
* for i, line in enumerate(chunk.split(b"\n")):
@@ -9260,7 +9057,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_INCREF(Py_True);
__pyx_r = Py_True;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L0;
/* "silx/io/specfile.pyx":622
@@ -9280,9 +9077,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
* return False
*/
__pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_int_10, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 624, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (__pyx_t_5) {
+ if (__pyx_t_4) {
/* "silx/io/specfile.pyx":625
* return True
@@ -9311,7 +9108,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
*/
}
__pyx_L19_break:;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":626
@@ -9339,7 +9136,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_4is_specfile(CYTHON_UNUSED PyObjec
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.io.specfile.is_specfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -9417,10 +9215,9 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
- int __pyx_t_5;
- char *__pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_4;
+ char *__pyx_t_5;
+ PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("__cinit__", 0);
__Pyx_INCREF(__pyx_v_filename);
@@ -9449,7 +9246,7 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
* filename = _string_to_char_star(filename)
* self.handle = specfile_wrapper.SfOpen(filename, &error)
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_specfile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_specfile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -9461,42 +9258,14 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_filename);
- __Pyx_GIVEREF(__pyx_v_filename);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_filename);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 646, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_5) {
+ if (__pyx_t_4) {
/* "silx/io/specfile.pyx":647
*
@@ -9505,50 +9274,22 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
* self.handle = specfile_wrapper.SfOpen(filename, &error)
* if error:
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = NULL;
+ __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_filename);
- __Pyx_GIVEREF(__pyx_v_filename);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_filename);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1);
__pyx_t_1 = 0;
@@ -9560,8 +9301,8 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
* if error:
* self._handle_error(error)
*/
- __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_filename); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 648, __pyx_L1_error)
- __pyx_v_self->handle = SfOpen(__pyx_t_6, (&__pyx_v_error));
+ __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_filename); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 648, __pyx_L1_error)
+ __pyx_v_self->handle = SfOpen(__pyx_t_5, (&__pyx_v_error));
/* "silx/io/specfile.pyx":649
* filename = _string_to_char_star(filename)
@@ -9570,8 +9311,8 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
* self._handle_error(error)
* else:
*/
- __pyx_t_5 = (__pyx_v_error != 0);
- if (__pyx_t_5) {
+ __pyx_t_4 = (__pyx_v_error != 0);
+ if (__pyx_t_4) {
/* "silx/io/specfile.pyx":650
* self.handle = specfile_wrapper.SfOpen(filename, &error)
@@ -9584,51 +9325,21 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 650, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
+ __pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_4)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9661,53 +9372,23 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_FILE_OPEN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_3 = NULL;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SF_ERR_FILE_OPEN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 654, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_3)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -9728,8 +9409,7 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile___cinit__(struct __pyx_obj_4si
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
@@ -9824,7 +9504,7 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile_2__init__(struct __pyx_obj_4si
* self.filename = filename.encode()
* # decode bytes to str in python 3
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_version_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -9857,12 +9537,9 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile_2__init__(struct __pyx_obj_4si
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
- }
+ __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 660, __pyx_L1_error)
@@ -9889,7 +9566,7 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile_2__init__(struct __pyx_obj_4si
* self.filename = filename.decode()
* else:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 662, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_version_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 662, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -9922,12 +9599,9 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile_2__init__(struct __pyx_obj_4si
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error)
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 663, __pyx_L1_error)
@@ -10043,12 +9717,9 @@ static void __pyx_pf_4silx_2io_8specfile_8SpecFile_4__dealloc__(struct __pyx_obj
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -10100,6 +9771,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_6close(struct __pyx_obj_
int __pyx_t_1;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
__Pyx_RefNannySetupContext("close", 0);
/* "silx/io/specfile.pyx":674
@@ -10129,14 +9801,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_6close(struct __pyx_obj_
* self.handle = NULL
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 676, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_warning); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 676, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_s_Error_while_closing_SpecFile) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Error_while_closing_SpecFile);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/io/specfile.pyx":675
@@ -10180,6 +9864,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_6close(struct __pyx_obj_
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -10345,7 +10030,7 @@ static PyObject *__pyx_gb_4silx_2io_8specfile_8SpecFile_12generator1(__pyx_Corou
*
* def __getitem__(self, key):
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Scan); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Scan); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_scan_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -10435,7 +10120,9 @@ static PyObject *__pyx_gb_4silx_2io_8specfile_8SpecFile_12generator1(__pyx_Corou
__Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+ #if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+ #endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
@@ -10617,24 +10304,36 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* scan_index = self.index(number, order)
* except (ValueError, SfErrScanNotFound, KeyError):
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L5_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_kp_s__10) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s__10);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)(&PyInt_Type)));
__Pyx_GIVEREF(((PyObject *)(&PyInt_Type)));
- PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)(&PyInt_Type)));
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L5_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
- PyObject* sequence = __pyx_t_1;
+ PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&PyInt_Type)));
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
+ PyObject* sequence = __pyx_t_5;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
@@ -10643,29 +10342,29 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
- __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
+ __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
} else {
- __pyx_t_5 = PyList_GET_ITEM(sequence, 0);
+ __pyx_t_1 = PyList_GET_ITEM(sequence, 0);
__pyx_t_9 = PyList_GET_ITEM(sequence, 1);
}
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_9);
#else
- __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 720, __pyx_L5_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 720, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_9);
#endif
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 720, __pyx_L5_error)
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 720, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
- index = 0; __pyx_t_5 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_5)) goto __pyx_L11_unpacking_failed;
- __Pyx_GOTREF(__pyx_t_5);
+ index = 0; __pyx_t_1 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L11_unpacking_failed;
+ __Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L11_unpacking_failed;
__Pyx_GOTREF(__pyx_t_9);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 720, __pyx_L5_error)
@@ -10679,8 +10378,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
__PYX_ERR(0, 720, __pyx_L5_error)
__pyx_L12_unpacking_done:;
}
- __pyx_v_number = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_v_number = __pyx_t_1;
+ __pyx_t_1 = 0;
__pyx_v_order = __pyx_t_9;
__pyx_t_9 = 0;
@@ -10693,13 +10392,13 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
*/
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_index); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 721, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = NULL;
+ __pyx_t_1 = NULL;
__pyx_t_12 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_5)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_9, function);
__pyx_t_12 = 1;
@@ -10707,25 +10406,25 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_number, __pyx_v_order};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L5_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_number, __pyx_v_order};
+ __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 721, __pyx_L5_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_5);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_number, __pyx_v_order};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L5_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_number, __pyx_v_order};
+ __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 721, __pyx_L5_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_5);
} else
#endif
{
__pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 721, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
+ if (__pyx_t_1) {
+ __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
}
__Pyx_INCREF(__pyx_v_number);
__Pyx_GIVEREF(__pyx_v_number);
@@ -10733,13 +10432,13 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
__Pyx_INCREF(__pyx_v_order);
__Pyx_GIVEREF(__pyx_v_order);
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_12, __pyx_v_order);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L5_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 721, __pyx_L5_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_scan_index = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_v_scan_index = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/io/specfile.pyx":719
* scan_index = len(self) + scan_index
@@ -10754,10 +10453,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L10_try_end;
__pyx_L5_error:;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "silx/io/specfile.pyx":722
* (number, order) = map(int, key.split("."))
@@ -10766,19 +10465,19 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* # int() can raise a value error
* raise KeyError(msg + "\nValid keys: '" +
*/
- __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrScanNotFound); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L7_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_builtin_ValueError) || __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5) || __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_builtin_KeyError);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_ErrRestore(__pyx_t_1, __pyx_t_9, __pyx_t_10);
- __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
+ __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfErrScanNotFound); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L7_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_builtin_ValueError) || __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_1) || __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_builtin_KeyError);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_ErrRestore(__pyx_t_5, __pyx_t_9, __pyx_t_10);
+ __pyx_t_5 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
if (__pyx_t_12) {
__Pyx_AddTraceback("silx.io.specfile.SpecFile.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_1) < 0) __PYX_ERR(0, 722, __pyx_L7_except_error)
+ if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_5) < 0) __PYX_ERR(0, 722, __pyx_L7_except_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GOTREF(__pyx_t_5);
/* "silx/io/specfile.pyx":724
* except (ValueError, SfErrScanNotFound, KeyError):
@@ -10787,8 +10486,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* "', '".join(self.keys()) + "'")
* except AttributeError:
*/
- __pyx_t_5 = PyNumber_Add(__pyx_v_msg, __pyx_kp_s_Valid_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L7_except_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = PyNumber_Add(__pyx_v_msg, __pyx_kp_s_Valid_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L7_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
/* "silx/io/specfile.pyx":725
* # int() can raise a value error
@@ -10809,15 +10508,12 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
__Pyx_DECREF_SET(__pyx_t_14, function);
}
}
- if (__pyx_t_15) {
- __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 725, __pyx_L7_except_error)
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- } else {
- __pyx_t_13 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 725, __pyx_L7_except_error)
- }
+ __pyx_t_13 = (__pyx_t_15) ? __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_15) : __Pyx_PyObject_CallNoArg(__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 725, __pyx_L7_except_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- __pyx_t_14 = __Pyx_PyString_Join(__pyx_kp_s__30, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 725, __pyx_L7_except_error)
+ __pyx_t_14 = __Pyx_PyString_Join(__pyx_kp_s__11, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 725, __pyx_L7_except_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -10828,9 +10524,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* "', '".join(self.keys()) + "'")
* except AttributeError:
*/
- __pyx_t_13 = PyNumber_Add(__pyx_t_5, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 724, __pyx_L7_except_error)
+ __pyx_t_13 = PyNumber_Add(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 724, __pyx_L7_except_error)
__Pyx_GOTREF(__pyx_t_13);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
/* "silx/io/specfile.pyx":725
@@ -10840,7 +10536,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* except AttributeError:
* # e.g. "AttrErr: 'float' object has no attribute 'split'"
*/
- __pyx_t_14 = PyNumber_Add(__pyx_t_13, __pyx_kp_s__31); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 725, __pyx_L7_except_error)
+ __pyx_t_14 = PyNumber_Add(__pyx_t_13, __pyx_kp_s__12); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 725, __pyx_L7_except_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -10869,8 +10565,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_12) {
__Pyx_AddTraceback("silx.io.specfile.SpecFile.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 726, __pyx_L7_except_error)
- __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 726, __pyx_L7_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GOTREF(__pyx_t_10);
@@ -10974,15 +10670,15 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
* def keys(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_Scan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 734, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Scan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 734, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = NULL;
+ __pyx_t_5 = NULL;
__pyx_t_12 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_1)) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_10, function);
__pyx_t_12 = 1;
@@ -10990,25 +10686,25 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_13__getitem__(struct __p
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_self), __pyx_v_scan_index};
+ PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_scan_index};
__pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 734, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_1, ((PyObject *)__pyx_v_self), __pyx_v_scan_index};
+ PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_scan_index};
__pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 734, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_9);
} else
#endif
{
__pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 734, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
- if (__pyx_t_1) {
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
+ if (__pyx_t_5) {
+ __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5); __pyx_t_5 = NULL;
}
__Pyx_INCREF(((PyObject *)__pyx_v_self));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -11127,12 +10823,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_15keys(struct __pyx_obj_
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_list_of_numbers = __pyx_t_1;
@@ -11268,10 +10961,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_15keys(struct __pyx_obj_
__Pyx_GIVEREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
__pyx_t_8 = 0;
- __Pyx_INCREF(__pyx_kp_u__28);
+ __Pyx_INCREF(__pyx_kp_u__10);
__pyx_t_9 += 1;
- __Pyx_GIVEREF(__pyx_kp_u__28);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u__28);
+ __Pyx_GIVEREF(__pyx_kp_u__10);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_kp_u__10);
__pyx_t_8 = __Pyx_PyDict_GetItem(__pyx_v_count, __pyx_v_number); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_8, __pyx_n_u_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 751, __pyx_L1_error)
@@ -11390,12 +11083,9 @@ static int __pyx_pf_4silx_2io_8specfile_8SpecFile_17__contains__(struct __pyx_ob
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 759, __pyx_L1_error)
@@ -11537,9 +11227,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_21_handle_error(struct _
PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
- PyObject *__pyx_t_4 = NULL;
+ int __pyx_t_4;
int __pyx_t_5;
- int __pyx_t_6;
__Pyx_RefNannySetupContext("_handle_error", 0);
/* "silx/io/specfile.pyx":777
@@ -11561,38 +11250,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_21_handle_error(struct _
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_error_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_error_code};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_error_code};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 777, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_error_code);
- __Pyx_GIVEREF(__pyx_v_error_code);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_error_code);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_error_code) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_error_code);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_error_message = __pyx_t_1;
__pyx_t_1 = 0;
@@ -11604,12 +11265,12 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_21_handle_error(struct _
* raise ERRORS[error_code](error_message)
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 778, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_v_error_code, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 778, __pyx_L1_error)
+ __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_error_code, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 778, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = (__pyx_t_5 != 0);
- if (unlikely(__pyx_t_6)) {
+ __pyx_t_5 = (__pyx_t_4 != 0);
+ if (unlikely(__pyx_t_5)) {
/* "silx/io/specfile.pyx":779
* error_message = self._get_error_string(error_code)
@@ -11618,54 +11279,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_21_handle_error(struct _
*
* def index(self, scan_number, scan_order=1):
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ERRORS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ERRORS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_error_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_error_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_error_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_error_message};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_error_message};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_INCREF(__pyx_v_error_message);
- __Pyx_GIVEREF(__pyx_v_error_message);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_error_message);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_error_message) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_error_message);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 779, __pyx_L1_error)
@@ -11694,7 +11327,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_21_handle_error(struct _
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("silx.io.specfile.SpecFile._handle_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -11789,7 +11421,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_23index(struct __pyx_obj
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("index", 0);
/* "silx/io/specfile.pyx":799
@@ -11828,7 +11459,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_23index(struct __pyx_obj
*/
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 801, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -11840,41 +11471,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_23index(struct __pyx_obj
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 801, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11915,7 +11516,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_23index(struct __pyx_obj
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.index", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -11957,7 +11557,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_25number(struct __pyx_ob
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("number", 0);
/* "silx/io/specfile.pyx":814
@@ -11992,7 +11591,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_25number(struct __pyx_ob
*/
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 816, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 816, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 816, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -12004,41 +11603,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_25number(struct __pyx_ob
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 816, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12079,7 +11648,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_25number(struct __pyx_ob
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.number", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -12120,7 +11688,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_27order(struct __pyx_obj
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("order", 0);
/* "silx/io/specfile.pyx":830
@@ -12155,7 +11722,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_27order(struct __pyx_obj
*/
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SF_ERR_SCAN_NOT_FOUND); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -12167,41 +11734,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_27order(struct __pyx_obj
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12242,7 +11779,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_27order(struct __pyx_obj
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.order", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -12285,11 +11821,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
+ Py_ssize_t __pyx_t_6;
Py_ssize_t __pyx_t_7;
Py_ssize_t __pyx_t_8;
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
+ int __pyx_t_9;
__Pyx_RefNannySetupContext("_list", 0);
/* "silx/io/specfile.pyx":840
@@ -12299,7 +11834,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
*
* scan_numbers = specfile_wrapper.SfList(self.handle, &error)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 840, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 840, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 840, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12335,41 +11870,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12392,10 +11897,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
* ret_list.append(scan_numbers[i])
*
*/
- __pyx_t_7 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 846, __pyx_L1_error)
- __pyx_t_8 = __pyx_t_7;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 846, __pyx_L1_error)
+ __pyx_t_7 = __pyx_t_6;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":847
* ret_list = []
@@ -12406,7 +11911,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
*/
__pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_scan_numbers[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_ret_list, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 847, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_ret_list, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 847, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -12445,7 +11950,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_29_list(struct __pyx_obj
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("silx.io.specfile.SpecFile._list", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -12505,12 +12009,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_31list(struct __pyx_obj_
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_1;
@@ -12599,7 +12100,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_33data(struct __pyx_obj_
* long nlines, ncolumns, regular
* double[:, :] ret_array
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12651,14 +12152,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_33data(struct __pyx_obj_
* " Assuming aborted scan.")
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 888, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_warning); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 888, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_kp_s_SfData_returned_1_without_an_err) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_s_SfData_returned_1_without_an_err);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":886
@@ -12677,56 +12190,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_33data(struct __pyx_obj_
*
* if <long>data_info != 0:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 891, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_8)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF_SET(__pyx_t_7, function);
}
}
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":893
@@ -12813,44 +12296,44 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_33data(struct __pyx_obj_
*
* for i in range(nlines):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_nlines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyInt_From_long(__pyx_v_ncolumns); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_6 = __Pyx_PyInt_From_long(__pyx_v_ncolumns); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
__pyx_t_1 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
+ __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 902, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 902, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_ret_array = __pyx_t_10;
__pyx_t_10.memview = NULL;
__pyx_t_10.data = NULL;
@@ -12931,61 +12414,31 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_33data(struct __pyx_obj_
* def data_column_by_name(self, scan_index, label):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 910, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- }
- }
- if (!__pyx_t_6) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_7};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_7};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 910, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_r = __pyx_t_8;
- __pyx_t_8 = 0;
+ __pyx_t_9 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 910, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_9;
+ __pyx_t_9 = 0;
goto __pyx_L0;
/* "silx/io/specfile.pyx":863
@@ -13095,11 +12548,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
int __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- long __pyx_t_6;
- char *__pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
- int __pyx_t_9;
+ long __pyx_t_5;
+ char *__pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
+ int __pyx_t_8;
+ PyObject *__pyx_t_9 = NULL;
__Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
long __pyx_t_11;
long __pyx_t_12;
@@ -13114,7 +12567,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* double[:] ret_array
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 928, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 928, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13127,7 +12580,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
*
* nlines = specfile_wrapper.SfDataColByName(self.handle,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -13139,38 +12592,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_label};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_label};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_label);
- __Pyx_GIVEREF(__pyx_v_label);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_label);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_label) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_label);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 931, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_label, __pyx_t_1);
__pyx_t_1 = 0;
@@ -13184,7 +12609,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
*/
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_scan_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 934, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_6 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 934, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 934, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":935
@@ -13194,7 +12619,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* &data_column,
* &error)
*/
- __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_label); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 935, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_label); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 935, __pyx_L1_error)
/* "silx/io/specfile.pyx":933
* label = _string_to_char_star(label)
@@ -13203,7 +12628,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* scan_index + 1,
* label,
*/
- __pyx_v_nlines = SfDataColByName(__pyx_v_self->handle, __pyx_t_6, __pyx_t_7, (&__pyx_v_data_column), (&__pyx_v_error));
+ __pyx_v_nlines = SfDataColByName(__pyx_v_self->handle, __pyx_t_5, __pyx_t_6, (&__pyx_v_data_column), (&__pyx_v_error));
/* "silx/io/specfile.pyx":938
* &data_column,
@@ -13214,53 +12639,23 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
*/
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = NULL;
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13271,8 +12666,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* # this can happen on empty scans in some situations (see #1759)
* _logger.warning("SfDataColByName returned -1 without an error."
*/
- __pyx_t_9 = ((__pyx_v_nlines == -1L) != 0);
- if (__pyx_t_9) {
+ __pyx_t_8 = ((__pyx_v_nlines == -1L) != 0);
+ if (__pyx_t_8) {
/* "silx/io/specfile.pyx":942
* if nlines == -1:
@@ -13281,14 +12676,26 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* " Assuming aborted scan.")
* nlines = 0
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 942, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_logger); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 942, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_warning); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 942, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_s_SfDataColByName_returned_1_witho) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_SfDataColByName_returned_1_witho);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":944
@@ -13316,39 +12723,39 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
*
* for i in range(nlines):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_nlines); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_double); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 946, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 946, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_ret_array = __pyx_t_10;
__pyx_t_10.memview = NULL;
__pyx_t_10.data = NULL;
@@ -13360,8 +12767,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* ret_array[i] = data_column[i]
*
*/
- __pyx_t_6 = __pyx_v_nlines;
- __pyx_t_11 = __pyx_t_6;
+ __pyx_t_5 = __pyx_v_nlines;
+ __pyx_t_11 = __pyx_t_5;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
@@ -13402,61 +12809,31 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
* def scan_header(self, scan_index):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 952, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_3 = NULL;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 952, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_3)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_8};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_8};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 952, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 952, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_r = __pyx_t_9;
+ __pyx_t_9 = 0;
goto __pyx_L0;
/* "silx/io/specfile.pyx":912
@@ -13472,8 +12849,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_35data_column_by_name(st
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.data_column_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
@@ -13522,11 +12899,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
+ long __pyx_t_7;
long __pyx_t_8;
- long __pyx_t_9;
- char *__pyx_t_10;
- int __pyx_t_11;
+ char *__pyx_t_9;
+ int __pyx_t_10;
__Pyx_RefNannySetupContext("scan_header", 0);
/* "silx/io/specfile.pyx":966
@@ -13536,7 +12912,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
*
* nlines = specfile_wrapper.SfHeader(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 966, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 966, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 966, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13584,41 +12960,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 974, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13642,9 +12988,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
* lines_list.append(line)
*/
__pyx_t_3 = __pyx_v_nlines;
- __pyx_t_8 = __pyx_t_3;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_3;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":978
* lines_list = []
@@ -13653,8 +12999,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
* lines_list.append(line)
*
*/
- __pyx_t_10 = (__pyx_v_lines[__pyx_v_i]);
- __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_v_lines[__pyx_v_i]);
+ __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_4);
@@ -13669,7 +13015,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
*
* specfile_wrapper.freeArrNZ(<void***>&lines, nlines)
*/
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_lines_list, __pyx_v_line); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 979, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_lines_list, __pyx_v_line); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 979, __pyx_L1_error)
}
/* "silx/io/specfile.pyx":981
@@ -13707,7 +13053,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_37scan_header(struct __p
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.scan_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -13798,11 +13143,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
+ long __pyx_t_7;
long __pyx_t_8;
- long __pyx_t_9;
- char *__pyx_t_10;
- int __pyx_t_11;
+ char *__pyx_t_9;
+ int __pyx_t_10;
__Pyx_RefNannySetupContext("file_header", 0);
/* "silx/io/specfile.pyx":1002
@@ -13812,7 +13156,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
*
* nlines = specfile_wrapper.SfFileHeader(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1002, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1002, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1002, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13860,41 +13204,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1009, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13918,9 +13232,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
* lines_list.append(line)
*/
__pyx_t_3 = __pyx_v_nlines;
- __pyx_t_8 = __pyx_t_3;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_3;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":1013
* lines_list = []
@@ -13929,8 +13243,8 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
* lines_list.append(line)
*
*/
- __pyx_t_10 = (__pyx_v_lines[__pyx_v_i]);
- __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_v_lines[__pyx_v_i]);
+ __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_4);
@@ -13945,7 +13259,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
*
* specfile_wrapper.freeArrNZ(<void***>&lines, nlines)
*/
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_lines_list, __pyx_v_line); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 1014, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_lines_list, __pyx_v_line); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1014, __pyx_L1_error)
}
/* "silx/io/specfile.pyx":1016
@@ -13983,7 +13297,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_39file_header(struct __p
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.file_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14027,7 +13340,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_41columns(struct __pyx_o
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("columns", 0);
/* "silx/io/specfile.pyx":1031
@@ -14037,7 +13349,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_41columns(struct __pyx_o
*
* ncolumns = specfile_wrapper.SfNoColumns(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1031, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14085,41 +13397,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_41columns(struct __pyx_o
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1036, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14151,7 +13433,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_41columns(struct __pyx_o
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.columns", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14193,7 +13474,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_43command(struct __pyx_o
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("command", 0);
/* "silx/io/specfile.pyx":1051
@@ -14203,7 +13483,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_43command(struct __pyx_o
*
* s_record = <bytes> specfile_wrapper.SfCommand(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14257,41 +13537,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_43command(struct __pyx_o
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1056, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1056, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -14327,7 +13577,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_43command(struct __pyx_o
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.command", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14413,7 +13662,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_45date(struct __pyx_obj_
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("date", 0);
/* "silx/io/specfile.pyx":1071
@@ -14423,7 +13671,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_45date(struct __pyx_obj_
*
* d_line = <bytes> specfile_wrapper.SfDate(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1071, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14477,41 +13725,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_45date(struct __pyx_obj_
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1076, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1076, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -14547,7 +13765,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_45date(struct __pyx_obj_
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.date", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14593,11 +13810,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
+ long __pyx_t_7;
long __pyx_t_8;
- long __pyx_t_9;
- char *__pyx_t_10;
- int __pyx_t_11;
+ char *__pyx_t_9;
+ int __pyx_t_10;
__Pyx_RefNannySetupContext("labels", 0);
/* "silx/io/specfile.pyx":1092
@@ -14607,7 +13823,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
*
* nlabels = specfile_wrapper.SfAllLabels(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1092, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1092, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1092, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14655,41 +13871,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1098, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1098, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14713,9 +13899,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
*
*/
__pyx_t_3 = __pyx_v_nlabels;
- __pyx_t_8 = __pyx_t_3;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_3;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":1102
* labels_list = []
@@ -14724,10 +13910,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
*
* specfile_wrapper.freeArrNZ(<void***>&all_labels, nlabels)
*/
- __pyx_t_10 = (__pyx_v_all_labels[__pyx_v_i]);
- __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_v_all_labels[__pyx_v_i]);
+ __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1102, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_labels_list, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 1102, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_labels_list, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1102, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -14766,7 +13952,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_47labels(struct __pyx_ob
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.labels", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14855,11 +14040,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
+ long __pyx_t_7;
long __pyx_t_8;
- long __pyx_t_9;
- char *__pyx_t_10;
- int __pyx_t_11;
+ char *__pyx_t_9;
+ int __pyx_t_10;
__Pyx_RefNannySetupContext("motor_names", 0);
/* "silx/io/specfile.pyx":1123
@@ -14869,7 +14053,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
*
* nmotors = specfile_wrapper.SfAllMotors(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1123, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1123, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1123, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14917,41 +14101,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14975,9 +14129,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
*
*/
__pyx_t_3 = __pyx_v_nmotors;
- __pyx_t_8 = __pyx_t_3;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_3;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":1133
* motors_list = []
@@ -14986,10 +14140,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
*
* specfile_wrapper.freeArrNZ(<void***>&all_motors, nmotors)
*/
- __pyx_t_10 = (__pyx_v_all_motors[__pyx_v_i]);
- __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error)
+ __pyx_t_9 = (__pyx_v_all_motors[__pyx_v_i]);
+ __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_motors_list, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 1133, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_motors_list, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1133, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -15028,7 +14182,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_49motor_names(struct __p
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.motor_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -15074,10 +14227,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
+ long __pyx_t_7;
long __pyx_t_8;
- long __pyx_t_9;
- int __pyx_t_10;
+ int __pyx_t_9;
__Pyx_RefNannySetupContext("motor_positions", 0);
/* "silx/io/specfile.pyx":1150
@@ -15087,7 +14239,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
*
* nmotors = specfile_wrapper.SfAllMotorPos(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1150, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15135,41 +14287,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15193,9 +14315,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
*
*/
__pyx_t_3 = __pyx_v_nmotors;
- __pyx_t_8 = __pyx_t_3;
- for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
- __pyx_v_i = __pyx_t_9;
+ __pyx_t_7 = __pyx_t_3;
+ for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
+ __pyx_v_i = __pyx_t_8;
/* "silx/io/specfile.pyx":1160
* motor_positions_list = []
@@ -15206,7 +14328,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
*/
__pyx_t_1 = PyFloat_FromDouble((__pyx_v_motor_positions[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_motor_positions_list, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1160, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_motor_positions_list, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 1160, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
@@ -15245,7 +14367,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_51motor_positions(struct
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.motor_positions", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -15334,10 +14455,9 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
int __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- long __pyx_t_6;
- char *__pyx_t_7;
- PyObject *__pyx_t_8 = NULL;
+ long __pyx_t_5;
+ char *__pyx_t_6;
+ PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("motor_position_by_name", 0);
__Pyx_INCREF(__pyx_v_name);
@@ -15348,7 +14468,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
*
* name = _string_to_char_star(name)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1176, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15361,7 +14481,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
*
* motor_position = specfile_wrapper.SfMotorPosByName(self.handle,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_string_to_char_star); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -15373,38 +14493,10 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_name};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_name};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1178, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_name);
- __Pyx_GIVEREF(__pyx_v_name);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_name) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_name);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_1);
__pyx_t_1 = 0;
@@ -15418,7 +14510,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
*/
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_scan_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_6 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1181, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_5 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1181, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/io/specfile.pyx":1182
@@ -15428,7 +14520,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
* &error)
* self._handle_error(error)
*/
- __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_name); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 1182, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1182, __pyx_L1_error)
/* "silx/io/specfile.pyx":1180
* name = _string_to_char_star(name)
@@ -15437,7 +14529,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
* scan_index + 1,
* name,
*/
- __pyx_v_motor_position = SfMotorPosByName(__pyx_v_self->handle, __pyx_t_6, __pyx_t_7, (&__pyx_v_error));
+ __pyx_v_motor_position = SfMotorPosByName(__pyx_v_self->handle, __pyx_t_5, __pyx_t_6, (&__pyx_v_error));
/* "silx/io/specfile.pyx":1184
* name,
@@ -15448,53 +14540,23 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
*/
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = NULL;
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15525,8 +14587,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_53motor_position_by_name
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.motor_position_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -15570,7 +14631,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_55number_of_mca(struct _
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("number_of_mca", 0);
/* "silx/io/specfile.pyx":1199
@@ -15580,7 +14640,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_55number_of_mca(struct _
*
* num_mca = specfile_wrapper.SfNoMca(self.handle,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1199, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15624,7 +14684,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_55number_of_mca(struct _
* "(SfNoMca returned -1)")
* return num_mca
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfNoMcaError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1206, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SfNoMcaError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = PyNumber_Add(__pyx_kp_s_Failed_to_retrieve_number_of_MCA, __pyx_kp_s_SfNoMca_returned_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -15638,41 +14698,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_55number_of_mca(struct _
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15715,7 +14745,6 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_55number_of_mca(struct _
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("silx.io.specfile.SpecFile.number_of_mca", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -15768,7 +14797,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_57mca_calibration(struct
* double* mca_calib
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1223, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1223, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1223, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15812,7 +14841,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_57mca_calibration(struct
*
* mca_calib_list = []
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1233, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16001,7 +15030,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_59get_mca(struct __pyx_o
* double* mca_data
* long len_mca
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SF_ERR_NO_ERRORS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16061,41 +15090,11 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_59get_mca(struct __pyx_o
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16106,39 +15105,39 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_59get_mca(struct __pyx_o
*
* for i in range(len_mca):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_len_mca); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 1266, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 1266, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_v_ret_array = __pyx_t_9;
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
@@ -16189,13 +15188,13 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_59get_mca(struct __pyx_o
* return numpy.asarray(ret_array) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_ret_array, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
@@ -16206,44 +15205,14 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_59get_mca(struct __pyx_o
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_8};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_8};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8);
- __pyx_t_8 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_7;
- __pyx_t_7 = 0;
+ __pyx_r = __pyx_t_8;
+ __pyx_t_8 = 0;
goto __pyx_L0;
/* "silx/io/specfile.pyx":1242
@@ -16303,7 +15272,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_61__reduce_cython__(CYTH
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16357,7 +15326,7 @@ static PyObject *__pyx_pf_4silx_2io_8specfile_8SpecFile_63__setstate_cython__(CY
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16528,10 +15497,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -16577,7 +15546,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -16609,7 +15578,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -16642,13 +15611,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -16667,13 +15648,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -16686,8 +15667,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -16724,10 +15705,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -16746,21 +15727,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -16779,24 +15760,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -16827,7 +15808,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -16921,11 +15902,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -16998,7 +15979,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -17048,8 +16029,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -17103,7 +16084,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -17239,7 +16220,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -17955,7 +16936,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18008,7 +16989,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18484,7 +17465,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -18530,7 +17511,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -19652,7 +18633,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -20679,7 +19660,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -21035,7 +20016,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -21575,7 +20556,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -21689,7 +20670,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__49, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__27, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -22690,7 +21671,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22743,7 +21724,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -23094,9 +22075,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__52);
- __Pyx_GIVEREF(__pyx_slice__52);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__52);
+ __Pyx_INCREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__7);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -23129,7 +22110,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__53); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -23179,7 +22160,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -23269,9 +22250,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__54);
- __Pyx_GIVEREF(__pyx_slice__54);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__54);
+ __Pyx_INCREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__7);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -23395,7 +22376,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -25558,7 +24539,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -25611,7 +24592,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -27492,7 +26473,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -27525,41 +26505,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -27579,7 +26529,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -27606,7 +26555,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -27643,41 +26591,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -27718,7 +26636,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -28826,7 +27743,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -28907,8 +27824,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -28965,41 +27881,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -29022,48 +27908,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -29076,8 +27934,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -29124,7 +27982,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -29154,7 +28011,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -29225,41 +28081,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -29287,7 +28113,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -29345,25 +28170,25 @@ static PyMethodDef __pyx_methods_4silx_2io_8specfile_SpecFile[] = {
{"keys", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_16keys, METH_NOARGS, __pyx_doc_4silx_2io_8specfile_8SpecFile_15keys},
{"_get_error_string", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_20_get_error_string, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_19_get_error_string},
{"_handle_error", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_22_handle_error, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_21_handle_error},
- {"index", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_24index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_23index},
+ {"index", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_24index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_23index},
{"number", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_26number, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_25number},
{"order", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_28order, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_27order},
{"_list", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_30_list, METH_NOARGS, __pyx_doc_4silx_2io_8specfile_8SpecFile_29_list},
{"list", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_32list, METH_NOARGS, __pyx_doc_4silx_2io_8specfile_8SpecFile_31list},
{"data", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_34data, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_33data},
- {"data_column_by_name", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_36data_column_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_35data_column_by_name},
+ {"data_column_by_name", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_36data_column_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_35data_column_by_name},
{"scan_header", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_38scan_header, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_37scan_header},
- {"file_header", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_40file_header, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_39file_header},
+ {"file_header", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_40file_header, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_39file_header},
{"columns", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_42columns, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_41columns},
{"command", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_44command, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_43command},
- {"date", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_46date, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_45date},
+ {"date", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_46date, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_45date},
{"labels", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_48labels, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_47labels},
- {"motor_names", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_50motor_names, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_49motor_names},
+ {"motor_names", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_50motor_names, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_49motor_names},
{"motor_positions", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_52motor_positions, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_51motor_positions},
- {"motor_position_by_name", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_54motor_position_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_53motor_position_by_name},
+ {"motor_position_by_name", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_54motor_position_by_name, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_53motor_position_by_name},
{"number_of_mca", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_56number_of_mca, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_55number_of_mca},
{"mca_calibration", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_58mca_calibration, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_57mca_calibration},
- {"get_mca", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_60get_mca, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_59get_mca},
+ {"get_mca", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_2io_8specfile_8SpecFile_60get_mca, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_2io_8specfile_8SpecFile_59get_mca},
{"__reduce_cython__", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_62__reduce_cython__, METH_NOARGS, __pyx_doc_4silx_2io_8specfile_8SpecFile_61__reduce_cython__},
{"__setstate_cython__", (PyCFunction)__pyx_pw_4silx_2io_8specfile_8SpecFile_64__setstate_cython__, METH_O, __pyx_doc_4silx_2io_8specfile_8SpecFile_63__setstate_cython__},
{0, 0, 0, 0}
@@ -30342,6 +29167,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_b_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 0, 0},
@@ -30440,6 +29274,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_SfError, __pyx_k_SfError, sizeof(__pyx_k_SfError), 0, 0, 1, 1},
{&__pyx_n_s_SfNoMcaError, __pyx_k_SfNoMcaError, sizeof(__pyx_k_SfNoMcaError), 0, 0, 1, 1},
{&__pyx_kp_s_SfNoMca_returned_1, __pyx_k_SfNoMca_returned_1, sizeof(__pyx_k_SfNoMca_returned_1), 0, 0, 1, 0},
+ {&__pyx_n_s_SpecFile, __pyx_k_SpecFile, sizeof(__pyx_k_SpecFile), 0, 0, 1, 1},
{&__pyx_n_s_SpecFile___iter, __pyx_k_SpecFile___iter, sizeof(__pyx_k_SpecFile___iter), 0, 0, 1, 1},
{&__pyx_kp_s_The_scan_identification_key_can, __pyx_k_The_scan_identification_key_can, sizeof(__pyx_k_The_scan_identification_key_can), 0, 0, 1, 0},
{&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
@@ -30449,12 +29284,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Valid_keys, __pyx_k_Valid_keys, sizeof(__pyx_k_Valid_keys), 0, 0, 1, 0},
{&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
{&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
- {&__pyx_kp_s__15, __pyx_k__15, sizeof(__pyx_k__15), 0, 0, 1, 0},
- {&__pyx_kp_s__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 0, 1, 0},
- {&__pyx_kp_u__28, __pyx_k__28, sizeof(__pyx_k__28), 0, 1, 0, 0},
- {&__pyx_kp_s__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 0, 1, 0},
- {&__pyx_kp_s__31, __pyx_k__31, sizeof(__pyx_k__31), 0, 0, 1, 0},
- {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0},
+ {&__pyx_kp_s__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 0, 1, 0},
+ {&__pyx_kp_u__10, __pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0, 0},
+ {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
+ {&__pyx_kp_s__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 0, 1, 0},
+ {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
+ {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0},
{&__pyx_n_s_add_or_concatenate, __pyx_k_add_or_concatenate, sizeof(__pyx_k_add_or_concatenate), 0, 0, 1, 1},
{&__pyx_n_s_all_calib_values, __pyx_k_all_calib_values, sizeof(__pyx_k_all_calib_values), 0, 0, 1, 1},
{&__pyx_n_s_all_chann_values, __pyx_k_all_chann_values, sizeof(__pyx_k_all_chann_values), 0, 0, 1, 1},
@@ -30663,7 +29498,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 137, __pyx_L1_error)
__pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(0, 138, __pyx_L1_error)
__pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 142, __pyx_L1_error)
@@ -30684,32 +29519,10 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/io/specfile.pyx":241
- * # Channels list
- * if "CHANN" in self._header:
- * chann_lines = self._header["CHANN"].split("\n") # <<<<<<<<<<<<<<
- * all_chann_values = [chann_line.split() for chann_line in chann_lines]
- * for one_line_chann_values in all_chann_values:
- */
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
- /* "silx/io/specfile.pyx":256
- * # Channels list
- * if "CALIB" in self._header:
- * calib_lines = self._header["CALIB"].split("\n") # <<<<<<<<<<<<<<
- * all_calib_values = [calib_line.split() for calib_line in calib_lines]
- * for one_line_calib_values in all_calib_values:
- */
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
-
/* "silx/io/specfile.pyx":282
* """
* if not len(self):
@@ -30717,9 +29530,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if isinstance(key, (int, long)):
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_No_MCA_spectrum_found_in_this_sc); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_No_MCA_spectrum_found_in_this_sc); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "silx/io/specfile.pyx":320
* dictionary[key] += "\n" + value
@@ -30728,106 +29541,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Parameter_value_must_be_a_string); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
-
- /* "silx/io/specfile.pyx":368
- * match_mca = re.search(r"#@(\w+) *(.*)", line)
- * if match:
- * hkey = match.group(1).lstrip("#").strip() # <<<<<<<<<<<<<<
- * hvalue = match.group(2).strip()
- * _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
- */
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s__8); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 368, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
-
- /* "silx/io/specfile.pyx":369
- * if match:
- * hkey = match.group(1).lstrip("#").strip()
- * hvalue = match.group(2).strip() # <<<<<<<<<<<<<<
- * _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
- * elif match_mca:
- */
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
-
- /* "silx/io/specfile.pyx":372
- * _add_or_concatenate(self._scan_header_dict, hkey, hvalue)
- * elif match_mca:
- * hkey = match_mca.group(1).lstrip("#").strip() # <<<<<<<<<<<<<<
- * hvalue = match_mca.group(2).strip()
- * _add_or_concatenate(self._mca_header_dict, hkey, hvalue)
- */
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s__8); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
-
- /* "silx/io/specfile.pyx":373
- * elif match_mca:
- * hkey = match_mca.group(1).lstrip("#").strip()
- * hvalue = match_mca.group(2).strip() # <<<<<<<<<<<<<<
- * _add_or_concatenate(self._mca_header_dict, hkey, hvalue)
- * else:
- */
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 373, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
-
- /* "silx/io/specfile.pyx":380
- *
- * self._labels = []
- * if self.record_exists_in_hdr('L'): # <<<<<<<<<<<<<<
- * try:
- * self._labels = self._specfile.labels(self._index)
- */
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_L); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
-
- /* "silx/io/specfile.pyx":388
- * L_header = re.sub(r" {2,}", " ", # max. 2 spaces
- * self._scan_header_dict["L"])
- * self._labels = L_header.split(" ") # <<<<<<<<<<<<<<
- *
- * self._file_header_dict = {}
- */
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s__15); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 388, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
-
- /* "silx/io/specfile.pyx":395
- * if match:
- * # header type
- * hkey = match.group(1).lstrip("#").strip() # <<<<<<<<<<<<<<
- * hvalue = match.group(2).strip()
- * _add_or_concatenate(self._file_header_dict, hkey, hvalue)
- */
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s__8); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 395, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
-
- /* "silx/io/specfile.pyx":396
- * # header type
- * hkey = match.group(1).lstrip("#").strip()
- * hvalue = match.group(2).strip() # <<<<<<<<<<<<<<
- * _add_or_concatenate(self._file_header_dict, hkey, hvalue)
- * else:
- */
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 396, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Parameter_value_must_be_a_string); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "silx/io/specfile.pyx":567
* # attribute data corresponds to a transposed version of the original
@@ -30836,9 +29552,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* def data_column_by_name(self, label):
*/
- __pyx_slice__20 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__20);
- __Pyx_GIVEREF(__pyx_slice__20);
+ __pyx_slice__7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
/* "silx/io/specfile.pyx":585
* _logger.warning("Cannot get data column %s in scan %d.%d",
@@ -30847,20 +29563,9 @@ static int __Pyx_InitCachedConstants(void) {
* return ret
*
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 585, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
-
- /* "silx/io/specfile.pyx":620
- * # test for presence of #S or #F in first 10 lines
- * with open(filename, "rb") as f:
- * chunk = f.read(2500) # <<<<<<<<<<<<<<
- * for i, line in enumerate(chunk.split(b"\n")):
- * if line.startswith(b"#S ") or line.startswith(b"#F "):
- */
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_int_2500); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 620, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 585, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "silx/io/specfile.pyx":619
* return False
@@ -30869,78 +29574,9 @@ static int __Pyx_InitCachedConstants(void) {
* chunk = f.read(2500)
* for i, line in enumerate(chunk.split(b"\n")):
*/
- __pyx_tuple__23 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 619, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
-
- /* "silx/io/specfile.pyx":621
- * with open(filename, "rb") as f:
- * chunk = f.read(2500)
- * for i, line in enumerate(chunk.split(b"\n")): # <<<<<<<<<<<<<<
- * if line.startswith(b"#S ") or line.startswith(b"#F "):
- * return True
- */
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_b_); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 621, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
-
- /* "silx/io/specfile.pyx":622
- * chunk = f.read(2500)
- * for i, line in enumerate(chunk.split(b"\n")):
- * if line.startswith(b"#S ") or line.startswith(b"#F "): # <<<<<<<<<<<<<<
- * return True
- * if i >= 10:
- */
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_b_S); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 622, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_b_F); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 622, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
-
- /* "silx/io/specfile.pyx":676
- * if self.handle:
- * if specfile_wrapper.SfClose(self.handle):
- * _logger.warning("Error while closing SpecFile") # <<<<<<<<<<<<<<
- * self.handle = NULL
- *
- */
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Error_while_closing_SpecFile); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 676, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
-
- /* "silx/io/specfile.pyx":720
- * else:
- * try:
- * (number, order) = map(int, key.split(".")) # <<<<<<<<<<<<<<
- * scan_index = self.index(number, order)
- * except (ValueError, SfErrScanNotFound, KeyError):
- */
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s__28); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 720, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
-
- /* "silx/io/specfile.pyx":888
- * if sfdata_error == -1 and not error:
- * # this has happened in some situations with empty scans (#1759)
- * _logger.warning("SfData returned -1 without an error." # <<<<<<<<<<<<<<
- * " Assuming aborted scan.")
- *
- */
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_SfData_returned_1_without_an_err); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 888, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
-
- /* "silx/io/specfile.pyx":942
- * if nlines == -1:
- * # this can happen on empty scans in some situations (see #1759)
- * _logger.warning("SfDataColByName returned -1 without an error." # <<<<<<<<<<<<<<
- * " Assuming aborted scan.")
- * nlines = 0
- */
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_SfDataColByName_returned_1_witho); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 942, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__9 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 619, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "silx/io/specfile.pyx":1233
* # error code updating isn't implemented in SfMcaCalib
@@ -30949,9 +29585,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* mca_calib_list = []
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_MCA_calibration_line_CALIB_not_f); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_MCA_calibration_line_CALIB_not_f); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1233, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -30959,18 +29595,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "View.MemoryView":132
*
@@ -30979,9 +29615,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":135
*
@@ -30990,20 +29626,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "View.MemoryView":147
*
@@ -31012,9 +29637,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -31023,9 +29648,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -31034,9 +29659,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -31044,18 +29669,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -31064,9 +29689,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -31075,9 +29700,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -31086,9 +29711,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -31097,9 +29722,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -31108,12 +29733,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__49 = PyTuple_New(1); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
+ __pyx_tuple__27 = PyTuple_New(1); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__49, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ PyTuple_SET_ITEM(__pyx_tuple__27, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -31121,18 +29746,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -31141,9 +29766,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__52 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__52)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__52);
- __Pyx_GIVEREF(__pyx_slice__52);
+ __pyx_slice__7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -31152,9 +29777,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__53 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__53)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__53);
- __Pyx_GIVEREF(__pyx_slice__53);
+ __pyx_slice__7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -31163,9 +29788,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__54 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__54)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__54);
- __Pyx_GIVEREF(__pyx_slice__54);
+ __pyx_slice__7 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__7);
+ __Pyx_GIVEREF(__pyx_slice__7);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -31174,9 +29799,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__55);
- __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -31184,18 +29809,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__57);
- __Pyx_GIVEREF(__pyx_tuple__57);
+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
/* "silx/io/specfile.pyx":179
*
@@ -31204,9 +29829,9 @@ static int __Pyx_InitCachedConstants(void) {
* """
*
*/
- __pyx_tuple__58 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
+ __pyx_tuple__33 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
/* "silx/io/specfile.pyx":219
*
@@ -31215,10 +29840,10 @@ static int __Pyx_InitCachedConstants(void) {
* self._scan = scan
*
*/
- __pyx_tuple__59 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_scan); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 219, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__59);
- __Pyx_GIVEREF(__pyx_tuple__59);
- __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_init, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __pyx_tuple__34 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_scan); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_init, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 219, __pyx_L1_error)
/* "silx/io/specfile.pyx":237
* self._parse_channels()
@@ -31227,10 +29852,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Fill :attr:`channels`"""
* # Channels list
*/
- __pyx_tuple__61 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_chann_lines, __pyx_n_s_all_chann_values, __pyx_n_s_one_line_chann_values, __pyx_n_s_length, __pyx_n_s_start, __pyx_n_s_stop, __pyx_n_s_increment, __pyx_n_s_chann_line); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__61);
- __Pyx_GIVEREF(__pyx_tuple__61);
- __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_parse_channels, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_tuple__36 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_chann_lines, __pyx_n_s_all_chann_values, __pyx_n_s_one_line_chann_values, __pyx_n_s_length, __pyx_n_s_start, __pyx_n_s_stop, __pyx_n_s_increment, __pyx_n_s_chann_line); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_parse_channels, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 237, __pyx_L1_error)
/* "silx/io/specfile.pyx":252
* self.channels.append(list(range(start, stop + 1, increment)))
@@ -31239,10 +29864,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Fill :attr:`calibration`"""
* # Channels list
*/
- __pyx_tuple__63 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_calib_lines, __pyx_n_s_all_calib_values, __pyx_n_s_one_line_calib_values, __pyx_n_s_calib_line); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 252, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__63);
- __Pyx_GIVEREF(__pyx_tuple__63);
- __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_parse_calibration, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __pyx_tuple__38 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_calib_lines, __pyx_n_s_all_calib_values, __pyx_n_s_one_line_calib_values, __pyx_n_s_calib_line); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_parse_calibration, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 252, __pyx_L1_error)
/* "silx/io/specfile.pyx":264
* self.calibration.append([0., 1., 0.])
@@ -31251,10 +29876,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
*
*/
- __pyx_tuple__65 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__65);
- __Pyx_GIVEREF(__pyx_tuple__65);
- __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_len, 264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_len, 264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 264, __pyx_L1_error)
/* "silx/io/specfile.pyx":272
* return self._scan._specfile.number_of_mca(self._scan.index)
@@ -31263,10 +29888,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a single MCA data line
*
*/
- __pyx_tuple__67 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_mca_index, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 272, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__67);
- __Pyx_GIVEREF(__pyx_tuple__67);
- __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_getitem, 272, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __pyx_tuple__42 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_mca_index, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_getitem, 272, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 272, __pyx_L1_error)
/* "silx/io/specfile.pyx":300
* mca_index)
@@ -31275,10 +29900,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return the next MCA data line each time this method is called.
*
*/
- __pyx_tuple__69 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_mca_index); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 300, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__69);
- __Pyx_GIVEREF(__pyx_tuple__69);
- __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_iter, 300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __pyx_tuple__44 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_mca_index); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__44);
+ __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_iter, 300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 300, __pyx_L1_error)
/* "silx/io/specfile.pyx":310
*
@@ -31287,10 +29912,10 @@ static int __Pyx_InitCachedConstants(void) {
* """If key doesn't exist in dictionary, create a new ``key: value`` pair.
* Else append/concatenate the new value to the existing one
*/
- __pyx_tuple__70 = PyTuple_Pack(3, __pyx_n_s_dictionary, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 310, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
- __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_add_or_concatenate, 310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_dictionary, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 310, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__45);
+ __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_add_or_concatenate, 310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 310, __pyx_L1_error)
/* "silx/io/specfile.pyx":323
*
@@ -31299,9 +29924,9 @@ static int __Pyx_InitCachedConstants(void) {
* """
*
*/
- __pyx_tuple__72 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 323, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__72);
- __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_tuple__47 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 323, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__47);
+ __Pyx_GIVEREF(__pyx_tuple__47);
/* "silx/io/specfile.pyx":348
* scan2 = sf["3.1"]
@@ -31310,10 +29935,10 @@ static int __Pyx_InitCachedConstants(void) {
* self._specfile = specfile
*
*/
- __pyx_tuple__73 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_specfile_2, __pyx_n_s_scan_index, __pyx_n_s_line, __pyx_n_s_match, __pyx_n_s_match_mca, __pyx_n_s_hkey, __pyx_n_s_hvalue, __pyx_n_s_L_header); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__73);
- __Pyx_GIVEREF(__pyx_tuple__73);
- __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_init, 348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __pyx_tuple__48 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_specfile_2, __pyx_n_s_scan_index, __pyx_n_s_line, __pyx_n_s_match, __pyx_n_s_match_mca, __pyx_n_s_hkey, __pyx_n_s_hvalue, __pyx_n_s_L_header); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__48);
+ __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(3, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_init, 348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 348, __pyx_L1_error)
/* "silx/io/specfile.pyx":409
* @cython.embedsignature(False)
@@ -31322,10 +29947,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Unique scan index 0 - len(specfile)-1
*
*/
- __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 409, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__75);
- __Pyx_GIVEREF(__pyx_tuple__75);
- __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_index, 409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 409, __pyx_L1_error)
+ __pyx_tuple__50 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 409, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__50);
+ __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_index, 409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 409, __pyx_L1_error)
/* "silx/io/specfile.pyx":419
* @cython.embedsignature(False)
@@ -31334,10 +29959,10 @@ static int __Pyx_InitCachedConstants(void) {
* """First value on #S line (as int)"""
* return self._number
*/
- __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 419, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__77);
- __Pyx_GIVEREF(__pyx_tuple__77);
- __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_number, 419, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 419, __pyx_L1_error)
+ __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 419, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__52);
+ __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_number, 419, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 419, __pyx_L1_error)
/* "silx/io/specfile.pyx":425
* @cython.embedsignature(False)
@@ -31346,10 +29971,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Order can be > 1 if the same number is repeated in a specfile"""
* return self._order
*/
- __pyx_tuple__79 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 425, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__79);
- __Pyx_GIVEREF(__pyx_tuple__79);
- __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_order, 425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__54);
+ __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_order, 425, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 425, __pyx_L1_error)
/* "silx/io/specfile.pyx":431
* @cython.embedsignature(False)
@@ -31358,10 +29983,10 @@ static int __Pyx_InitCachedConstants(void) {
* """List of raw header lines (as a list of strings).
*
*/
- __pyx_tuple__81 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 431, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__81);
- __Pyx_GIVEREF(__pyx_tuple__81);
- __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_header_2, 431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 431, __pyx_L1_error)
+ __pyx_tuple__56 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 431, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__56);
+ __Pyx_GIVEREF(__pyx_tuple__56);
+ __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_header_2, 431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 431, __pyx_L1_error)
/* "silx/io/specfile.pyx":441
* @cython.embedsignature(False)
@@ -31370,10 +29995,10 @@ static int __Pyx_InitCachedConstants(void) {
* """List of raw scan header lines (as a list of strings).
* """
*/
- __pyx_tuple__83 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 441, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__83);
- __Pyx_GIVEREF(__pyx_tuple__83);
- __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_scan_header, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 441, __pyx_L1_error)
+ __pyx_tuple__58 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 441, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__58);
+ __Pyx_GIVEREF(__pyx_tuple__58);
+ __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_scan_header, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 441, __pyx_L1_error)
/* "silx/io/specfile.pyx":448
* @cython.embedsignature(False)
@@ -31382,10 +30007,10 @@ static int __Pyx_InitCachedConstants(void) {
* """List of raw file header lines (as a list of strings).
* """
*/
- __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 448, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__85);
- __Pyx_GIVEREF(__pyx_tuple__85);
- __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_file_header, 448, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 448, __pyx_L1_error)
+ __pyx_tuple__60 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 448, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__60);
+ __Pyx_GIVEREF(__pyx_tuple__60);
+ __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_file_header, 448, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 448, __pyx_L1_error)
/* "silx/io/specfile.pyx":455
* @cython.embedsignature(False)
@@ -31394,10 +30019,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* Dictionary of scan header strings, keys without the leading``#``
*/
- __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 455, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__87);
- __Pyx_GIVEREF(__pyx_tuple__87);
- __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_scan_header_dict_2, 455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 455, __pyx_L1_error)
+ __pyx_tuple__62 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 455, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__62);
+ __Pyx_GIVEREF(__pyx_tuple__62);
+ __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_scan_header_dict_2, 455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 455, __pyx_L1_error)
/* "silx/io/specfile.pyx":465
* @cython.embedsignature(False)
@@ -31406,10 +30031,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* Dictionary of MCA header strings, keys without the leading ``#@``
*/
- __pyx_tuple__89 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 465, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__89);
- __Pyx_GIVEREF(__pyx_tuple__89);
- __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_mca_header_dict, 465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__64);
+ __Pyx_GIVEREF(__pyx_tuple__64);
+ __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_mca_header_dict, 465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 465, __pyx_L1_error)
/* "silx/io/specfile.pyx":474
* @cython.embedsignature(False)
@@ -31418,10 +30043,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* Dictionary of file header strings, keys without the leading ``#``
*/
- __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 474, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__91);
- __Pyx_GIVEREF(__pyx_tuple__91);
- __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_file_header_dict_2, 474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 474, __pyx_L1_error)
+ __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 474, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__66);
+ __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_file_header_dict_2, 474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 474, __pyx_L1_error)
/* "silx/io/specfile.pyx":483
* @cython.embedsignature(False)
@@ -31430,10 +30055,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* List of data column headers from ``#L`` scan header
*/
- __pyx_tuple__93 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 483, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__93);
- __Pyx_GIVEREF(__pyx_tuple__93);
- __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_labels_2, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 483, __pyx_L1_error)
+ __pyx_tuple__68 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 483, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__68);
+ __Pyx_GIVEREF(__pyx_tuple__68);
+ __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_labels_2, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 483, __pyx_L1_error)
/* "silx/io/specfile.pyx":491
* @cython.embedsignature(False)
@@ -31442,10 +30067,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Scan data as a 2D numpy.ndarray with the usual attributes
* (e.g. data.shape).
*/
- __pyx_tuple__95 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 491, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__95);
- __Pyx_GIVEREF(__pyx_tuple__95);
- __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_2, 491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 491, __pyx_L1_error)
+ __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 491, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__70);
+ __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_2, 491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 491, __pyx_L1_error)
/* "silx/io/specfile.pyx":504
* @cython.embedsignature(False)
@@ -31454,10 +30079,10 @@ static int __Pyx_InitCachedConstants(void) {
* """MCA data in this scan.
*
*/
- __pyx_tuple__97 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 504, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__97);
- __Pyx_GIVEREF(__pyx_tuple__97);
- __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_mca_2, 504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __pyx_tuple__72 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__72);
+ __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_mca_2, 504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(0, 504, __pyx_L1_error)
/* "silx/io/specfile.pyx":518
* @cython.embedsignature(False)
@@ -31466,10 +30091,10 @@ static int __Pyx_InitCachedConstants(void) {
* """List of motor names from the ``#O`` file header line.
* """
*/
- __pyx_tuple__99 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 518, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__99);
- __Pyx_GIVEREF(__pyx_tuple__99);
- __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_names, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 518, __pyx_L1_error)
+ __pyx_tuple__74 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 518, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__74);
+ __Pyx_GIVEREF(__pyx_tuple__74);
+ __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_names, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(0, 518, __pyx_L1_error)
/* "silx/io/specfile.pyx":525
* @cython.embedsignature(False)
@@ -31478,10 +30103,10 @@ static int __Pyx_InitCachedConstants(void) {
* """List of motor positions as floats from the ``#P`` scan header line.
* """
*/
- __pyx_tuple__101 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 525, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__101);
- __Pyx_GIVEREF(__pyx_tuple__101);
- __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_positions, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 525, __pyx_L1_error)
+ __pyx_tuple__76 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 525, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__76);
+ __Pyx_GIVEREF(__pyx_tuple__76);
+ __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_positions, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(0, 525, __pyx_L1_error)
/* "silx/io/specfile.pyx":530
* return self._motor_positions
@@ -31490,10 +30115,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Check whether a scan header line exists.
*
*/
- __pyx_tuple__103 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_record, __pyx_n_s_line); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 530, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__103);
- __Pyx_GIVEREF(__pyx_tuple__103);
- __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__103, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_record_exists_in_hdr, 530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __pyx_tuple__78 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_record, __pyx_n_s_line); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__78);
+ __Pyx_GIVEREF(__pyx_tuple__78);
+ __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_record_exists_in_hdr, 530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 530, __pyx_L1_error)
/* "silx/io/specfile.pyx":549
* return False
@@ -31502,10 +30127,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Returns data for a given line of this scan.
*
*/
- __pyx_tuple__105 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_line_index); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 549, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__105);
- __Pyx_GIVEREF(__pyx_tuple__105);
- __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_line, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __pyx_tuple__80 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_line_index); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__80);
+ __Pyx_GIVEREF(__pyx_tuple__80);
+ __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_line, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 549, __pyx_L1_error)
/* "silx/io/specfile.pyx":569
* return self.data[:, line_index]
@@ -31514,10 +30139,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Returns a data column
*
*/
- __pyx_tuple__107 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_label, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 569, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__107);
- __Pyx_GIVEREF(__pyx_tuple__107);
- __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_column_by_name, 569, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 569, __pyx_L1_error)
+ __pyx_tuple__82 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_label, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 569, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__82);
+ __Pyx_GIVEREF(__pyx_tuple__82);
+ __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_data_column_by_name, 569, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 569, __pyx_L1_error)
/* "silx/io/specfile.pyx":588
* return ret
@@ -31526,10 +30151,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Returns the position for a given motor
*
*/
- __pyx_tuple__109 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 588, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__109);
- __Pyx_GIVEREF(__pyx_tuple__109);
- __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_position_by_name, 588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(0, 588, __pyx_L1_error)
+ __pyx_tuple__84 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 588, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__84);
+ __Pyx_GIVEREF(__pyx_tuple__84);
+ __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__84, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_motor_position_by_name, 588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(0, 588, __pyx_L1_error)
/* "silx/io/specfile.pyx":601
*
@@ -31538,10 +30163,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Convert a string to ASCII encoded bytes when using python3"""
* if sys.version_info[0] >= 3 and not isinstance(string_, bytes):
*/
- __pyx_tuple__111 = PyTuple_Pack(1, __pyx_n_s_string); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 601, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__111);
- __Pyx_GIVEREF(__pyx_tuple__111);
- __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__111, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_string_to_char_star, 601, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __pyx_tuple__86 = PyTuple_Pack(1, __pyx_n_s_string); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__86);
+ __Pyx_GIVEREF(__pyx_tuple__86);
+ __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_string_to_char_star, 601, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(0, 601, __pyx_L1_error)
/* "silx/io/specfile.pyx":608
*
@@ -31550,10 +30175,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Test if a file is a SPEC file, by checking if one of the first two
* lines starts with *#F* (SPEC file header) or *#S* (scan header).
*/
- __pyx_tuple__113 = PyTuple_Pack(5, __pyx_n_s_filename, __pyx_n_s_f, __pyx_n_s_chunk, __pyx_n_s_i, __pyx_n_s_line); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(0, 608, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__113);
- __Pyx_GIVEREF(__pyx_tuple__113);
- __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__113, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_is_specfile, 608, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(0, 608, __pyx_L1_error)
+ __pyx_tuple__88 = PyTuple_Pack(5, __pyx_n_s_filename, __pyx_n_s_f, __pyx_n_s_chunk, __pyx_n_s_i, __pyx_n_s_line); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 608, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__88);
+ __Pyx_GIVEREF(__pyx_tuple__88);
+ __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__88, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_io_specfile_pyx, __pyx_n_s_is_specfile, 608, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(0, 608, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -31562,9 +30187,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__115);
- __Pyx_GIVEREF(__pyx_tuple__115);
+ __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__90);
+ __Pyx_GIVEREF(__pyx_tuple__90);
/* "View.MemoryView":286
*
@@ -31573,9 +30198,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__116 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__116);
- __Pyx_GIVEREF(__pyx_tuple__116);
+ __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__91);
+ __Pyx_GIVEREF(__pyx_tuple__91);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -31584,9 +30209,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__117);
- __Pyx_GIVEREF(__pyx_tuple__117);
+ __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__92);
+ __Pyx_GIVEREF(__pyx_tuple__92);
/* "View.MemoryView":290
*
@@ -31595,9 +30220,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__118 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__118);
- __Pyx_GIVEREF(__pyx_tuple__118);
+ __pyx_tuple__93 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__93);
+ __Pyx_GIVEREF(__pyx_tuple__93);
/* "View.MemoryView":291
*
@@ -31606,19 +30231,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__119);
- __Pyx_GIVEREF(__pyx_tuple__119);
+ __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__94);
+ __Pyx_GIVEREF(__pyx_tuple__94);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__120 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__120);
- __Pyx_GIVEREF(__pyx_tuple__120);
- __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__95 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__95);
+ __Pyx_GIVEREF(__pyx_tuple__95);
+ __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -31626,7 +30251,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_float_0_ = PyFloat_FromDouble(0.); if (unlikely(!__pyx_float_0_)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -31654,13 +30279,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -31740,7 +30365,7 @@ static int __Pyx_modinit_type_init_code(void) {
}
}
#endif
- if (PyObject_SetAttrString(__pyx_m, "SpecFile", (PyObject *)&__pyx_type_4silx_2io_8specfile_SpecFile) < 0) __PYX_ERR(0, 629, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SpecFile, (PyObject *)&__pyx_type_4silx_2io_8specfile_SpecFile) < 0) __PYX_ERR(0, 629, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_2io_8specfile_SpecFile) < 0) __PYX_ERR(0, 629, __pyx_L1_error)
__pyx_ptype_4silx_2io_8specfile_SpecFile = &__pyx_type_4silx_2io_8specfile_SpecFile;
if (PyType_Ready(&__pyx_type_4silx_2io_8specfile___pyx_scope_struct____iter__) < 0) __PYX_ERR(0, 300, __pyx_L1_error)
@@ -31843,15 +30468,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -31864,7 +30480,30 @@ __Pyx_PyMODINIT_FUNC PyInit_specfile(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -31877,8 +30516,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -31899,7 +30540,7 @@ bad:
}
-static int __pyx_pymod_exec_specfile(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_specfile(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -31910,7 +30551,11 @@ static int __pyx_pymod_exec_specfile(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_5[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'specfile' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -31925,6 +30570,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_specfile(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -31979,7 +30627,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__io__specfile) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -32106,12 +30754,12 @@ if (!__Pyx_RefNanny) {
*
* cimport cython
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32178,7 +30826,7 @@ if (!__Pyx_RefNanny) {
* class SfErrFileOpen(SfError, IOError): pass
* class SfErrFileClose(SfError, IOError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32207,7 +30855,7 @@ if (!__Pyx_RefNanny) {
* class SfErrFileClose(SfError, IOError): pass
* class SfErrFileRead(SfError, IOError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32236,7 +30884,7 @@ if (!__Pyx_RefNanny) {
* class SfErrFileRead(SfError, IOError): pass
* class SfErrFileWrite(SfError, IOError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32265,7 +30913,7 @@ if (!__Pyx_RefNanny) {
* class SfErrFileWrite(SfError, IOError): pass
* class SfErrLineNotFound(SfError, KeyError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32294,7 +30942,7 @@ if (!__Pyx_RefNanny) {
* class SfErrLineNotFound(SfError, KeyError): pass
* class SfErrScanNotFound(SfError, IndexError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32323,7 +30971,7 @@ if (!__Pyx_RefNanny) {
* class SfErrScanNotFound(SfError, IndexError): pass
* class SfErrHeaderNotFound(SfError, KeyError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32352,7 +31000,7 @@ if (!__Pyx_RefNanny) {
* class SfErrHeaderNotFound(SfError, KeyError): pass
* class SfErrLabelNotFound(SfError, KeyError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32381,7 +31029,7 @@ if (!__Pyx_RefNanny) {
* class SfErrLabelNotFound(SfError, KeyError): pass
* class SfErrMotorNotFound(SfError, KeyError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32410,7 +31058,7 @@ if (!__Pyx_RefNanny) {
* class SfErrMotorNotFound(SfError, KeyError): pass
* class SfErrPositionNotFound(SfError, KeyError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32439,7 +31087,7 @@ if (!__Pyx_RefNanny) {
* class SfErrPositionNotFound(SfError, KeyError): pass
* class SfErrLineEmpty(SfError, IOError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 146, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32468,7 +31116,7 @@ if (!__Pyx_RefNanny) {
* class SfErrLineEmpty(SfError, IOError): pass
* class SfErrUserNotFound(SfError, KeyError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32497,7 +31145,7 @@ if (!__Pyx_RefNanny) {
* class SfErrUserNotFound(SfError, KeyError): pass
* class SfErrColNotFound(SfError, KeyError): pass
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32526,7 +31174,7 @@ if (!__Pyx_RefNanny) {
* class SfErrColNotFound(SfError, KeyError): pass
* class SfErrMcaNotFound(SfError, IndexError): pass
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32555,7 +31203,7 @@ if (!__Pyx_RefNanny) {
* class SfErrMcaNotFound(SfError, IndexError): pass
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32584,7 +31232,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -32615,7 +31263,7 @@ if (!__Pyx_RefNanny) {
*/
__pyx_t_1 = __Pyx_PyDict_NewPresized(15); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrMemoryAlloc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrMemoryAlloc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_1, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32627,7 +31275,7 @@ if (!__Pyx_RefNanny) {
* 3: SfErrFileClose,
* 4: SfErrFileRead,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrFileOpen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrFileOpen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_2, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32639,7 +31287,7 @@ if (!__Pyx_RefNanny) {
* 4: SfErrFileRead,
* 5: SfErrFileWrite,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrFileClose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrFileClose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_3, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32651,7 +31299,7 @@ if (!__Pyx_RefNanny) {
* 5: SfErrFileWrite,
* 6: SfErrLineNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrFileRead); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrFileRead); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_4, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32663,7 +31311,7 @@ if (!__Pyx_RefNanny) {
* 6: SfErrLineNotFound,
* 7: SfErrScanNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrFileWrite); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrFileWrite); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_5, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32675,7 +31323,7 @@ if (!__Pyx_RefNanny) {
* 7: SfErrScanNotFound,
* 8: SfErrHeaderNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrLineNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_6, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32687,7 +31335,7 @@ if (!__Pyx_RefNanny) {
* 8: SfErrHeaderNotFound,
* 9: SfErrLabelNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrScanNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrScanNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_7, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32699,7 +31347,7 @@ if (!__Pyx_RefNanny) {
* 9: SfErrLabelNotFound,
* 10: SfErrMotorNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrHeaderNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrHeaderNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 162, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_8, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32711,7 +31359,7 @@ if (!__Pyx_RefNanny) {
* 10: SfErrMotorNotFound,
* 11: SfErrPositionNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrLabelNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrLabelNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_9, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32723,7 +31371,7 @@ if (!__Pyx_RefNanny) {
* 11: SfErrPositionNotFound,
* 12: SfErrLineEmpty,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrMotorNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrMotorNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_10, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32735,7 +31383,7 @@ if (!__Pyx_RefNanny) {
* 12: SfErrLineEmpty,
* 13: SfErrUserNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrPositionNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrPositionNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_11, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32747,7 +31395,7 @@ if (!__Pyx_RefNanny) {
* 13: SfErrUserNotFound,
* 14: SfErrColNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrLineEmpty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrLineEmpty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 166, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_12, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32759,7 +31407,7 @@ if (!__Pyx_RefNanny) {
* 14: SfErrColNotFound,
* 15: SfErrMcaNotFound,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrUserNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrUserNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_13, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32771,7 +31419,7 @@ if (!__Pyx_RefNanny) {
* 15: SfErrMcaNotFound,
* }
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrColNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrColNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_14, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32783,7 +31431,7 @@ if (!__Pyx_RefNanny) {
* }
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfErrMcaNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SfErrMcaNotFound); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_1, __pyx_int_15, __pyx_t_3) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32797,7 +31445,7 @@ if (!__Pyx_RefNanny) {
* """Custom exception raised when ``SfNoMca()`` returns ``-1``
* """
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SfError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -32823,9 +31471,9 @@ if (!__Pyx_RefNanny) {
* """
*
*/
- __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__58); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__33); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_tuple__58, __pyx_n_s_MCA, __pyx_n_s_MCA, (PyObject *) NULL, __pyx_n_s_silx_io_specfile, __pyx_kp_s_param_scan_Parent_Scan_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_tuple__33, __pyx_n_s_MCA, __pyx_n_s_MCA, (PyObject *) NULL, __pyx_n_s_silx_io_specfile, __pyx_kp_s_param_scan_Parent_Scan_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
/* "silx/io/specfile.pyx":219
@@ -32835,7 +31483,7 @@ if (!__Pyx_RefNanny) {
* self._scan = scan
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_1__init__, 0, __pyx_n_s_MCA___init, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_1__init__, 0, __pyx_n_s_MCA___init, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) __PYX_ERR(0, 219, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32847,7 +31495,7 @@ if (!__Pyx_RefNanny) {
* """Fill :attr:`channels`"""
* # Channels list
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_3_parse_channels, 0, __pyx_n_s_MCA__parse_channels, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_3_parse_channels, 0, __pyx_n_s_MCA__parse_channels, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_parse_channels, __pyx_t_2) < 0) __PYX_ERR(0, 237, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32859,7 +31507,7 @@ if (!__Pyx_RefNanny) {
* """Fill :attr:`calibration`"""
* # Channels list
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_5_parse_calibration, 0, __pyx_n_s_MCA__parse_calibration, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_5_parse_calibration, 0, __pyx_n_s_MCA__parse_calibration, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_parse_calibration, __pyx_t_2) < 0) __PYX_ERR(0, 252, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32871,7 +31519,7 @@ if (!__Pyx_RefNanny) {
* """
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_7__len__, 0, __pyx_n_s_MCA___len, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_7__len__, 0, __pyx_n_s_MCA___len, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_len, __pyx_t_2) < 0) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32883,7 +31531,7 @@ if (!__Pyx_RefNanny) {
* """Return a single MCA data line
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_9__getitem__, 0, __pyx_n_s_MCA___getitem, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_9__getitem__, 0, __pyx_n_s_MCA___getitem, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_getitem, __pyx_t_2) < 0) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32895,7 +31543,7 @@ if (!__Pyx_RefNanny) {
* """Return the next MCA data line each time this method is called.
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_11__iter__, 0, __pyx_n_s_MCA___iter, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_3MCA_11__iter__, 0, __pyx_n_s_MCA___iter, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_iter, __pyx_t_2) < 0) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32907,7 +31555,7 @@ if (!__Pyx_RefNanny) {
* """
*
*/
- __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_MCA, __pyx_tuple__58, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_MCA, __pyx_tuple__33, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_MCA, __pyx_t_2) < 0) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32933,9 +31581,9 @@ if (!__Pyx_RefNanny) {
* """
*
*/
- __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__72); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__47); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 323, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_tuple__72, __pyx_n_s_Scan, __pyx_n_s_Scan, (PyObject *) NULL, __pyx_n_s_silx_io_specfile, __pyx_kp_s_param_specfile_Parent_SpecFile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_tuple__47, __pyx_n_s_Scan, __pyx_n_s_Scan, (PyObject *) NULL, __pyx_n_s_silx_io_specfile, __pyx_kp_s_param_specfile_Parent_SpecFile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
/* "silx/io/specfile.pyx":348
@@ -32945,7 +31593,7 @@ if (!__Pyx_RefNanny) {
* self._specfile = specfile
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_1__init__, 0, __pyx_n_s_Scan___init, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_1__init__, 0, __pyx_n_s_Scan___init, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) __PYX_ERR(0, 348, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32957,7 +31605,7 @@ if (!__Pyx_RefNanny) {
* """Unique scan index 0 - len(specfile)-1
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_3index, 0, __pyx_n_s_Scan_index, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_3index, 0, __pyx_n_s_Scan_index, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":408
@@ -32980,7 +31628,7 @@ if (!__Pyx_RefNanny) {
* """First value on #S line (as int)"""
* return self._number
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_5number, 0, __pyx_n_s_Scan_number, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_5number, 0, __pyx_n_s_Scan_number, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":418
@@ -33003,7 +31651,7 @@ if (!__Pyx_RefNanny) {
* """Order can be > 1 if the same number is repeated in a specfile"""
* return self._order
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_7order, 0, __pyx_n_s_Scan_order, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 425, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_7order, 0, __pyx_n_s_Scan_order, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 425, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":424
@@ -33026,7 +31674,7 @@ if (!__Pyx_RefNanny) {
* """List of raw header lines (as a list of strings).
*
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_9header, 0, __pyx_n_s_Scan_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_9header, 0, __pyx_n_s_Scan_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":430
@@ -33049,7 +31697,7 @@ if (!__Pyx_RefNanny) {
* """List of raw scan header lines (as a list of strings).
* """
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_11scan_header, 0, __pyx_n_s_Scan_scan_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_11scan_header, 0, __pyx_n_s_Scan_scan_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 441, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":440
@@ -33072,7 +31720,7 @@ if (!__Pyx_RefNanny) {
* """List of raw file header lines (as a list of strings).
* """
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_13file_header, 0, __pyx_n_s_Scan_file_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 448, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_13file_header, 0, __pyx_n_s_Scan_file_header, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 448, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":447
@@ -33095,7 +31743,7 @@ if (!__Pyx_RefNanny) {
* """
* Dictionary of scan header strings, keys without the leading``#``
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_15scan_header_dict, 0, __pyx_n_s_Scan_scan_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_15scan_header_dict, 0, __pyx_n_s_Scan_scan_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":454
@@ -33118,7 +31766,7 @@ if (!__Pyx_RefNanny) {
* """
* Dictionary of MCA header strings, keys without the leading ``#@``
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_17mca_header_dict, 0, __pyx_n_s_Scan_mca_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_17mca_header_dict, 0, __pyx_n_s_Scan_mca_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":464
@@ -33141,7 +31789,7 @@ if (!__Pyx_RefNanny) {
* """
* Dictionary of file header strings, keys without the leading ``#``
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_19file_header_dict, 0, __pyx_n_s_Scan_file_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_19file_header_dict, 0, __pyx_n_s_Scan_file_header_dict, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":473
@@ -33164,7 +31812,7 @@ if (!__Pyx_RefNanny) {
* """
* List of data column headers from ``#L`` scan header
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_21labels, 0, __pyx_n_s_Scan_labels, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_21labels, 0, __pyx_n_s_Scan_labels, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 483, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":482
@@ -33187,7 +31835,7 @@ if (!__Pyx_RefNanny) {
* """Scan data as a 2D numpy.ndarray with the usual attributes
* (e.g. data.shape).
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_23data, 0, __pyx_n_s_Scan_data, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_23data, 0, __pyx_n_s_Scan_data, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 491, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":490
@@ -33210,7 +31858,7 @@ if (!__Pyx_RefNanny) {
* """MCA data in this scan.
*
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_25mca, 0, __pyx_n_s_Scan_mca, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_25mca, 0, __pyx_n_s_Scan_mca, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":503
@@ -33233,7 +31881,7 @@ if (!__Pyx_RefNanny) {
* """List of motor names from the ``#O`` file header line.
* """
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_27motor_names, 0, __pyx_n_s_Scan_motor_names, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_27motor_names, 0, __pyx_n_s_Scan_motor_names, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/io/specfile.pyx":517
@@ -33256,7 +31904,7 @@ if (!__Pyx_RefNanny) {
* """List of motor positions as floats from the ``#P`` scan header line.
* """
*/
- __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_29motor_positions, 0, __pyx_n_s_Scan_motor_positions, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_29motor_positions, 0, __pyx_n_s_Scan_motor_positions, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
/* "silx/io/specfile.pyx":524
@@ -33279,7 +31927,7 @@ if (!__Pyx_RefNanny) {
* """Check whether a scan header line exists.
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_31record_exists_in_hdr, 0, __pyx_n_s_Scan_record_exists_in_hdr, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_31record_exists_in_hdr, 0, __pyx_n_s_Scan_record_exists_in_hdr, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 530, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_record_exists_in_hdr, __pyx_t_2) < 0) __PYX_ERR(0, 530, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33291,7 +31939,7 @@ if (!__Pyx_RefNanny) {
* """Returns data for a given line of this scan.
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_33data_line, 0, __pyx_n_s_Scan_data_line, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_33data_line, 0, __pyx_n_s_Scan_data_line, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_data_line, __pyx_t_2) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33303,7 +31951,7 @@ if (!__Pyx_RefNanny) {
* """Returns a data column
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_35data_column_by_name, 0, __pyx_n_s_Scan_data_column_by_name, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_35data_column_by_name, 0, __pyx_n_s_Scan_data_column_by_name, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_data_column_by_name, __pyx_t_2) < 0) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33315,7 +31963,7 @@ if (!__Pyx_RefNanny) {
* """Returns the position for a given motor
*
*/
- __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_37motor_position_by_name, 0, __pyx_n_s_Scan_motor_position_by_name, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_2io_8specfile_4Scan_37motor_position_by_name, 0, __pyx_n_s_Scan_motor_position_by_name, NULL, __pyx_n_s_silx_io_specfile, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_motor_position_by_name, __pyx_t_2) < 0) __PYX_ERR(0, 588, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33327,7 +31975,7 @@ if (!__Pyx_RefNanny) {
* """
*
*/
- __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_Scan, __pyx_tuple__72, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_Scan, __pyx_tuple__47, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 323, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_Scan, __pyx_t_2) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33388,7 +32036,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -33402,7 +32050,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -33416,7 +32064,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -33430,7 +32078,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -33444,7 +32092,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -33531,9 +32179,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_4);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.io.specfile", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.io.specfile", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.io.specfile");
}
@@ -33554,9 +32202,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -33750,32 +32398,8 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
}
#endif
-/* PyCFunctionFastCall */
-#if CYTHON_FAST_PYCCALL
-static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
- PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
- PyCFunction meth = PyCFunction_GET_FUNCTION(func);
- PyObject *self = PyCFunction_GET_SELF(func);
- int flags = PyCFunction_GET_FLAGS(func);
- assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
- assert(nargs >= 0);
- assert(nargs == 0 || args != NULL);
- /* _PyCFunction_FastCallDict() must not be called with an exception set,
- because it may clear it (directly or indirectly) and so the
- caller loses its exception */
- assert(!PyErr_Occurred());
- if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
- } else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
- }
-}
-#endif
-
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -33793,7 +32417,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -33933,6 +32557,51 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
}
#endif
+/* PyObjectCallNoArg */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
+#if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(func)) {
+ return __Pyx_PyFunction_FastCall(func, NULL, 0);
+ }
+#endif
+#ifdef __Pyx_CyFunction_USED
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
+#else
+ if (likely(PyCFunction_Check(func)))
+#endif
+ {
+ if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
+ return __Pyx_PyObject_CallMethO(func, NULL);
+ }
+ }
+ return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
+}
+#endif
+
+/* PyCFunctionFastCall */
+#if CYTHON_FAST_PYCCALL
+static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
+ PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
+ PyCFunction meth = PyCFunction_GET_FUNCTION(func);
+ PyObject *self = PyCFunction_GET_SELF(func);
+ int flags = PyCFunction_GET_FLAGS(func);
+ assert(PyCFunction_Check(func));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
+ assert(nargs >= 0);
+ assert(nargs == 0 || args != NULL);
+ /* _PyCFunction_FastCallDict() must not be called with an exception set,
+ because it may clear it (directly or indirectly) and so the
+ caller loses its exception */
+ assert(!PyErr_Occurred());
+ if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
+ } else {
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
+ }
+}
+#endif
+
/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
@@ -33973,38 +32642,22 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
-/* PyObjectCallNoArg */
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
-#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(func)) {
- return __Pyx_PyFunction_FastCall(func, NULL, 0);
- }
-#endif
-#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
- if (likely(PyCFunction_Check(func))) {
-#endif
- if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
- return __Pyx_PyObject_CallMethO(func, NULL);
- }
- }
- return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
-}
-#endif
-
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -34013,21 +32666,50 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -34062,7 +32744,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -34073,59 +32755,122 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
return 0;
}
-/* PyObjectCallMethod1 */
- static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
- PyObject *result = NULL;
-#if CYTHON_UNPACK_METHODS
- if (likely(PyMethod_Check(method))) {
- PyObject *self = PyMethod_GET_SELF(method);
- if (likely(self)) {
- PyObject *args;
- PyObject *function = PyMethod_GET_FUNCTION(method);
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(function)) {
- PyObject *args[2] = {self, arg};
- result = __Pyx_PyFunction_FastCall(function, args, 2);
- goto done;
- }
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(function)) {
- PyObject *args[2] = {self, arg};
- result = __Pyx_PyCFunction_FastCall(function, args, 2);
- goto done;
+/* PyObjectGetMethod */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
+ PyObject *attr;
+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyObject *descr;
+ descrgetfunc f = NULL;
+ PyObject **dictptr, *dict;
+ int meth_found = 0;
+ assert (*method == NULL);
+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+ }
+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
+ return 0;
+ }
+ descr = _PyType_Lookup(tp, name);
+ if (likely(descr != NULL)) {
+ Py_INCREF(descr);
+#if PY_MAJOR_VERSION >= 3
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
+ #endif
+#else
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr)))
+ #endif
+#endif
+ {
+ meth_found = 1;
+ } else {
+ f = Py_TYPE(descr)->tp_descr_get;
+ if (f != NULL && PyDescr_IsData(descr)) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
}
- #endif
- args = PyTuple_New(2);
- if (unlikely(!args)) goto done;
- Py_INCREF(self);
- PyTuple_SET_ITEM(args, 0, self);
- Py_INCREF(arg);
- PyTuple_SET_ITEM(args, 1, arg);
- Py_INCREF(function);
- result = __Pyx_PyObject_Call(function, args, NULL);
- Py_DECREF(args);
- Py_DECREF(function);
- return result;
}
}
+ dictptr = _PyObject_GetDictPtr(obj);
+ if (dictptr != NULL && (dict = *dictptr) != NULL) {
+ Py_INCREF(dict);
+ attr = __Pyx_PyDict_GetItemStr(dict, name);
+ if (attr != NULL) {
+ Py_INCREF(attr);
+ Py_DECREF(dict);
+ Py_XDECREF(descr);
+ goto try_unpack;
+ }
+ Py_DECREF(dict);
+ }
+ if (meth_found) {
+ *method = descr;
+ return 1;
+ }
+ if (f != NULL) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ if (descr != NULL) {
+ *method = descr;
+ return 0;
+ }
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'%.50s' object has no attribute '%U'",
+ tp->tp_name, name);
+#else
+ "'%.50s' object has no attribute '%.400s'",
+ tp->tp_name, PyString_AS_STRING(name));
#endif
- result = __Pyx_PyObject_CallOneArg(method, arg);
- goto done;
-done:
+ return 0;
+#else
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+#endif
+try_unpack:
+#if CYTHON_UNPACK_METHODS
+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
+ PyObject *function = PyMethod_GET_FUNCTION(attr);
+ Py_INCREF(function);
+ Py_DECREF(attr);
+ *method = function;
+ return 1;
+ }
+#endif
+ *method = attr;
+ return 0;
+}
+
+/* PyObjectCallMethod1 */
+static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
+ PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
+ Py_DECREF(method);
return result;
}
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
- PyObject *method, *result;
- method = __Pyx_PyObject_GetAttrStr(obj, method_name);
+ PyObject *method = NULL, *result;
+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+ if (likely(is_method)) {
+ result = __Pyx_PyObject_Call2Args(method, obj, arg);
+ Py_DECREF(method);
+ return result;
+ }
if (unlikely(!method)) return NULL;
- result = __Pyx__PyObject_CallMethod1(method, arg);
- Py_DECREF(method);
- return result;
+ return __Pyx__PyObject_CallMethod1(method, arg);
}
/* append */
- static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
if (likely(PyList_CheckExact(L))) {
if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
} else {
@@ -34138,7 +32883,7 @@ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name
}
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -34260,7 +33005,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -34275,7 +33020,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -34293,7 +33038,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -34309,7 +33054,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -34317,7 +33062,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -34347,7 +33092,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -34469,7 +33214,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U
#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -34493,7 +33238,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -34652,7 +33397,7 @@ bad:
#endif
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -34680,13 +33425,29 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
#endif
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -34698,13 +33459,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -34720,7 +33482,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -34745,11 +33507,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -34782,13 +33545,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -34815,34 +33581,42 @@ bad:
}
/* GetModuleGlobalName */
- static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -34897,14 +33671,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -34914,12 +33716,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -34961,14 +33763,14 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* StringJoin */
- #if !CYTHON_COMPILING_IN_CPYTHON
+#if !CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL);
}
#endif
/* PyObjectFormat */
- #if CYTHON_USE_UNICODE_WRITER
+#if CYTHON_USE_UNICODE_WRITER
static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) {
int ret;
_PyUnicodeWriter writer;
@@ -35004,7 +33806,7 @@ static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) {
#endif
/* JoinPyUnicode */
- static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
+static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
CYTHON_UNUSED Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
PyObject *result_uval;
@@ -35066,7 +33868,7 @@ bad:
}
/* decode_c_bytes */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -35092,9 +33894,8 @@ bad:
}
}
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -35102,95 +33903,72 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -35328,7 +34106,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -35361,7 +34139,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -35382,7 +34160,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -35429,7 +34207,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -35508,6 +34286,9 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -35528,7 +34309,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -35536,7 +34317,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -35549,7 +34330,7 @@ return_ne:
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -35564,12 +34345,12 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -35582,16 +34363,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -35616,7 +34398,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -35663,7 +34445,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -35681,7 +34463,7 @@ bad:
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -35689,7 +34471,7 @@ bad:
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -35703,7 +34485,7 @@ bad:
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -35721,7 +34503,7 @@ bad:
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -35761,7 +34543,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -35771,7 +34553,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -35847,7 +34629,7 @@ GOOD:
}
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -35865,7 +34647,7 @@ bad:
}
/* CalculateMetaclass */
- static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
for (i=0; i < nbases; i++) {
PyTypeObject *tmptype;
@@ -35904,7 +34686,7 @@ bad:
}
/* Py3ClassCreate */
- static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
PyObject *ns;
if (metaclass) {
@@ -35971,7 +34753,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj
}
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -36010,7 +34792,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -36032,7 +34814,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -36044,7 +34826,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -36059,14 +34841,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -36078,20 +34861,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -36113,7 +34897,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -36124,7 +34908,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -36144,19 +34928,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -36185,7 +34969,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -36201,7 +34985,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -36215,7 +34999,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -36231,7 +35015,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -36245,7 +35029,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -36261,7 +35045,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -36441,7 +35225,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -36604,8 +35388,8 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -36618,7 +35402,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -36635,7 +35421,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -36644,7 +35430,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -36724,7 +35510,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -36830,8 +35616,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -36853,7 +35639,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -36889,7 +35675,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -36902,8 +35688,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -36933,8 +35719,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -36964,7 +35750,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -36986,7 +35772,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -36998,7 +35784,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -37065,8 +35851,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -37254,8 +36040,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -37443,8 +36229,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -37632,7 +36418,7 @@ raise_neg_overflow:
}
/* CoroutineBase */
- #include <structmember.h>
+#include <structmember.h>
#include <frameobject.h>
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
@@ -37715,16 +36501,17 @@ static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__p
return 0;
}
static CYTHON_INLINE
-void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) {
- PyObject *exc_type = self->exc_type;
- PyObject *exc_value = self->exc_value;
- PyObject *exc_traceback = self->exc_traceback;
- self->exc_type = NULL;
- self->exc_value = NULL;
- self->exc_traceback = NULL;
- Py_XDECREF(exc_type);
- Py_XDECREF(exc_value);
- Py_XDECREF(exc_traceback);
+void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
+ PyObject *t, *v, *tb;
+ t = exc_state->exc_type;
+ v = exc_state->exc_value;
+ tb = exc_state->exc_traceback;
+ exc_state->exc_type = NULL;
+ exc_state->exc_value = NULL;
+ exc_state->exc_traceback = NULL;
+ Py_XDECREF(t);
+ Py_XDECREF(v);
+ Py_XDECREF(tb);
}
#define __Pyx_Coroutine_AlreadyRunningError(gen) (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
@@ -37780,6 +36567,7 @@ static
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
__Pyx_PyThreadState_declare
PyThreadState *tstate;
+ __Pyx_ExcInfoStruct *exc_state;
PyObject *retval;
assert(!self->is_running);
if (unlikely(self->resume_label == 0)) {
@@ -37796,33 +36584,47 @@ PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, i
#else
tstate = __Pyx_PyThreadState_Current;
#endif
- if (self->exc_type) {
-#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
-#else
- if (self->exc_traceback) {
- PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
+ exc_state = &self->gi_exc_state;
+ if (exc_state->exc_type) {
+ #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
+ #else
+ if (exc_state->exc_traceback) {
+ PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
PyFrameObject *f = tb->tb_frame;
Py_XINCREF(tstate->frame);
assert(f->f_back == NULL);
f->f_back = tstate->frame;
}
-#endif
- __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
- &self->exc_traceback);
+ #endif
+ }
+#if CYTHON_USE_EXC_INFO_STACK
+ exc_state->previous_item = tstate->exc_info;
+ tstate->exc_info = exc_state;
+#else
+ if (exc_state->exc_type) {
+ __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
} else {
- __Pyx_Coroutine_ExceptionClear(self);
- __Pyx_ExceptionSave(&self->exc_type, &self->exc_value, &self->exc_traceback);
+ __Pyx_Coroutine_ExceptionClear(exc_state);
+ __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
}
+#endif
self->is_running = 1;
retval = self->body((PyObject *) self, tstate, value);
self->is_running = 0;
+#if CYTHON_USE_EXC_INFO_STACK
+ exc_state = &self->gi_exc_state;
+ tstate->exc_info = exc_state->previous_item;
+ exc_state->previous_item = NULL;
+ __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
+#endif
return retval;
}
-static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__pyx_CoroutineObject *self) {
- if (likely(self->exc_traceback)) {
+static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
+ PyObject *exc_tb = exc_state->exc_traceback;
+ if (likely(exc_tb)) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
#else
- PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
+ PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
PyFrameObject *f = tb->tb_frame;
Py_CLEAR(f->f_back);
#endif
@@ -37921,7 +36723,7 @@ static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
return -1;
} else
if (__Pyx_CoroutineAwait_CheckExact(yf)) {
- retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
+ retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
if (!retval)
return -1;
} else
@@ -37986,6 +36788,9 @@ static PyObject *__Pyx_Generator_Next(PyObject *self) {
}
return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
}
+static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, CYTHON_UNUSED PyObject *arg) {
+ return __Pyx_Coroutine_Close(self);
+}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
__pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
PyObject *retval, *raised_exception;
@@ -38102,23 +36907,24 @@ static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
return NULL;
return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
+static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
+ Py_VISIT(exc_state->exc_type);
+ Py_VISIT(exc_state->exc_value);
+ Py_VISIT(exc_state->exc_traceback);
+ return 0;
+}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
Py_VISIT(gen->closure);
Py_VISIT(gen->classobj);
Py_VISIT(gen->yieldfrom);
- Py_VISIT(gen->exc_type);
- Py_VISIT(gen->exc_value);
- Py_VISIT(gen->exc_traceback);
- return 0;
+ return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
__pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
Py_CLEAR(gen->closure);
Py_CLEAR(gen->classobj);
Py_CLEAR(gen->yieldfrom);
- Py_CLEAR(gen->exc_type);
- Py_CLEAR(gen->exc_value);
- Py_CLEAR(gen->exc_traceback);
+ __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
if (__Pyx_AsyncGen_CheckExact(self)) {
Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
@@ -38256,7 +37062,7 @@ static void __Pyx_Coroutine_del(PyObject *self) {
#endif
}
static PyObject *
-__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
+__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
PyObject *name = self->gi_name;
if (unlikely(!name)) name = Py_None;
@@ -38264,14 +37070,15 @@ __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self)
return name;
}
static int
-__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
+__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -38283,7 +37090,7 @@ __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
+__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
PyObject *name = self->gi_qualname;
if (unlikely(!name)) name = Py_None;
@@ -38291,14 +37098,15 @@ __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
return name;
}
static int
-__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value)
+__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -38327,9 +37135,12 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
gen->resume_label = 0;
gen->classobj = NULL;
gen->yieldfrom = NULL;
- gen->exc_type = NULL;
- gen->exc_value = NULL;
- gen->exc_traceback = NULL;
+ gen->gi_exc_state.exc_type = NULL;
+ gen->gi_exc_state.exc_value = NULL;
+ gen->gi_exc_state.exc_traceback = NULL;
+#if CYTHON_USE_EXC_INFO_STACK
+ gen->gi_exc_state.previous_item = NULL;
+#endif
gen->gi_weakreflist = NULL;
Py_XINCREF(qualname);
gen->gi_qualname = qualname;
@@ -38344,7 +37155,7 @@ static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
}
/* PatchModuleWithCoroutine */
- static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
+static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
int result;
PyObject *globals, *result_obj;
@@ -38384,7 +37195,7 @@ ignore:
}
/* PatchGeneratorABC */
- #ifndef CYTHON_REGISTER_ABCS
+#ifndef CYTHON_REGISTER_ABCS
#define CYTHON_REGISTER_ABCS 1
#endif
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
@@ -38441,12 +37252,12 @@ static int __Pyx_patch_abc(void) {
}
/* Generator */
- static PyMethodDef __pyx_Generator_methods[] = {
+static PyMethodDef __pyx_Generator_methods[] = {
{"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
(char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
{"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
(char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
- {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS,
+ {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
(char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
{0, 0, 0, 0}
};
@@ -38533,7 +37344,7 @@ static int __pyx_Generator_init(void) {
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -38544,7 +37355,7 @@ static int __pyx_Generator_init(void) {
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -39046,7 +37857,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -39087,7 +37898,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -39269,7 +38080,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dsds_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -39292,7 +38103,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -39315,7 +38126,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -39331,7 +38142,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -39440,6 +38251,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -39517,7 +38335,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/io/specfile/src/sfinit.c b/silx/io/specfile/src/sfinit.c
index 7291427..ca2fa7f 100644
--- a/silx/io/specfile/src/sfinit.c
+++ b/silx/io/specfile/src/sfinit.c
@@ -1,5 +1,5 @@
# /*##########################################################################
-# Copyright (C) 1995-2017 European Synchrotron Radiation Facility
+# Copyright (C) 1995-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -521,11 +521,12 @@ sfReadFile(SpecFile *sf,SfCursor *cursor,int *error) {
free(buffer);
sf->no_scans = cursor->scanno;
- /*
- * Save last
- */
- sfSaveScan(sf,cursor,error);
-
+ if (sf->no_scans > 0) {
+ /*
+ * Save last
+ */
+ sfSaveScan(sf,cursor,error);
+ }
return;
}
@@ -790,24 +791,21 @@ sfSaveScan(SpecFile *sf, SfCursor *cursor,int *error) {
static void
sfAssignScanNumbers(SpecFile *sf) {
- int size,i;
- char *buffer,*ptr;
-
- char buffer2[50];
+ int i;
+ char *ptr;
+ char buffer[50];
+ char buffer2[50];
register ObjectList *object,
*object2;
SpecScan *scan,
*scan2;
- size = 50;
- buffer = (char *) malloc(size);
-
for ( object = (sf->list).first; object; object=object->next) {
scan = (SpecScan *) object->contents;
lseek(sf->fd,scan->offset,SEEK_SET);
- read(sf->fd,buffer,size);
+ read(sf->fd,buffer,sizeof(buffer));
buffer[49] = '\0';
for ( ptr = buffer+3,i=0; *ptr != ' ';ptr++,i++) buffer2[i] = *ptr;
diff --git a/silx/io/spech5.py b/silx/io/spech5.py
index 1b32efd..50d3928 100644
--- a/silx/io/spech5.py
+++ b/silx/io/spech5.py
@@ -198,7 +198,7 @@ from silx.third_party import six
__authors__ = ["P. Knobel", "D. Naudet"]
__license__ = "MIT"
-__date__ = "01/03/2018"
+__date__ = "17/07/2018"
logger1 = logging.getLogger(__name__)
@@ -312,7 +312,7 @@ def _parse_ctime(ctime_lines, analyser_index=0):
"""
:param ctime_lines: e.g ``@CTIME %f %f %f``, first word ``@CTIME`` optional
When multiple CTIME lines are present in a scan header, this argument
- is a concatenation of them separated by a ``\n`` character.
+ is a concatenation of them separated by a ``\\n`` character.
:param analyser_index: MCA device/analyser index, when multiple devices
are in a scan.
:return: (preset_time, live_time, elapsed_time)
@@ -362,13 +362,13 @@ def spec_date_to_iso8601(date, zone=None):
days_rx = '(?P<day>' + '|'.join(days) + ')'
months_rx = '(?P<month>' + '|'.join(months) + ')'
- year_rx = '(?P<year>\d{4})'
- day_nb_rx = '(?P<day_nb>[0-3 ]\d)'
- month_nb_rx = '(?P<month_nb>[0-1]\d)'
- hh_rx = '(?P<hh>[0-2]\d)'
- mm_rx = '(?P<mm>[0-5]\d)'
- ss_rx = '(?P<ss>[0-5]\d)'
- tz_rx = '(?P<tz>[+-]\d\d:\d\d){0,1}'
+ year_rx = r'(?P<year>\d{4})'
+ day_nb_rx = r'(?P<day_nb>[0-3 ]\d)'
+ month_nb_rx = r'(?P<month_nb>[0-1]\d)'
+ hh_rx = r'(?P<hh>[0-2]\d)'
+ mm_rx = r'(?P<mm>[0-5]\d)'
+ ss_rx = r'(?P<ss>[0-5]\d)'
+ tz_rx = r'(?P<tz>[+-]\d\d:\d\d){0,1}'
# date formats must have either month_nb (1..12) or month (Jan, Feb, ...)
re_tpls = ['{days} {months} {day_nb} {hh}:{mm}:{ss}{tz} {year}',
@@ -600,24 +600,24 @@ class ScanGroup(commonh5.Group, SpecH5Group):
try:
start_time_str = spec_date_to_iso8601(scan.scan_header_dict["D"])
except (IndexError, ValueError):
- logger1.warn("Could not parse date format in scan %s header." +
- " Using original date not converted to ISO-8601",
- scan_key)
+ logger1.warning("Could not parse date format in scan %s header." +
+ " Using original date not converted to ISO-8601",
+ scan_key)
start_time_str = scan.scan_header_dict["D"]
elif "D" in scan.file_header_dict:
- logger1.warn("No #D line in scan %s header. " +
- "Using file header for start_time.",
- scan_key)
+ logger1.warning("No #D line in scan %s header. " +
+ "Using file header for start_time.",
+ scan_key)
try:
start_time_str = spec_date_to_iso8601(scan.file_header_dict["D"])
except (IndexError, ValueError):
- logger1.warn("Could not parse date format in scan %s header. " +
- "Using original date not converted to ISO-8601",
- scan_key)
+ logger1.warning("Could not parse date format in scan %s header. " +
+ "Using original date not converted to ISO-8601",
+ scan_key)
start_time_str = scan.file_header_dict["D"]
else:
- logger1.warn("No #D line in %s header. Setting date to empty string.",
- scan_key)
+ logger1.warning("No #D line in %s header. Setting date to empty string.",
+ scan_key)
start_time_str = ""
self.add_node(SpecH5NodeDataset(name="start_time",
data=to_h5py_utf8(start_time_str),
diff --git a/silx/io/test/test_fabioh5.py b/silx/io/test/test_fabioh5.py
index 235a6e3..0eb0949 100644
--- a/silx/io/test/test_fabioh5.py
+++ b/silx/io/test/test_fabioh5.py
@@ -73,11 +73,11 @@ class TestFabioH5(unittest.TestCase):
self.h5_image = fabioh5.File(fabio_image=self.fabio_image)
def test_main_groups(self):
- self.assertEquals(self.h5_image.h5py_class, h5py.File)
- self.assertEquals(self.h5_image["/"].h5py_class, h5py.File)
- self.assertEquals(self.h5_image["/scan_0"].h5py_class, h5py.Group)
- self.assertEquals(self.h5_image["/scan_0/instrument"].h5py_class, h5py.Group)
- self.assertEquals(self.h5_image["/scan_0/measurement"].h5py_class, h5py.Group)
+ self.assertEqual(self.h5_image.h5py_class, h5py.File)
+ self.assertEqual(self.h5_image["/"].h5py_class, h5py.File)
+ self.assertEqual(self.h5_image["/scan_0"].h5py_class, h5py.Group)
+ self.assertEqual(self.h5_image["/scan_0/instrument"].h5py_class, h5py.Group)
+ self.assertEqual(self.h5_image["/scan_0/measurement"].h5py_class, h5py.Group)
def test_wrong_path_syntax(self):
# result tested with a default h5py file
@@ -106,12 +106,12 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
self.assertTrue(isinstance(dataset[()], numpy.ndarray))
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (2, 3))
- self.assertEquals(dataset[...][0, 0], 0)
- self.assertEquals(dataset.attrs["interpretation"], "image")
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (2, 3))
+ self.assertEqual(dataset[...][0, 0], 0)
+ self.assertEqual(dataset.attrs["interpretation"], "image")
def test_multi_frames(self):
data = numpy.arange(2 * 3)
@@ -121,12 +121,12 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
self.assertTrue(isinstance(dataset[()], numpy.ndarray))
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (2, 2, 3))
- self.assertEquals(dataset[...][0, 0, 0], 0)
- self.assertEquals(dataset.attrs["interpretation"], "image")
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (2, 2, 3))
+ self.assertEqual(dataset[...][0, 0, 0], 0)
+ self.assertEqual(dataset.attrs["interpretation"], "image")
def test_heterogeneous_frames(self):
"""Frames containing 2 images with different sizes and a cube"""
@@ -142,12 +142,12 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
self.assertTrue(isinstance(dataset[()], numpy.ndarray))
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (3, 2, 5, 1))
- self.assertEquals(dataset[...][0, 0, 0], 0)
- self.assertEquals(dataset.attrs["interpretation"], "image")
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (3, 2, 5, 1))
+ self.assertEqual(dataset[...][0, 0, 0], 0)
+ self.assertEqual(dataset.attrs["interpretation"], "image")
def test_single_3d_frame(self):
"""Image source contains a cube"""
@@ -160,56 +160,56 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
self.assertTrue(isinstance(dataset[()], numpy.ndarray))
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (2, 3, 4))
- self.assertEquals(dataset[...][0, 0, 0], 0)
- self.assertEquals(dataset.attrs["interpretation"], "image")
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (2, 3, 4))
+ self.assertEqual(dataset[...][0, 0, 0], 0)
+ self.assertEqual(dataset.attrs["interpretation"], "image")
def test_metadata_int(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/integer"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset[()], -100)
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (1,))
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset[()], -100)
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (1,))
def test_metadata_float(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/float"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset[()], 1.0)
- self.assertEquals(dataset.dtype.kind, "f")
- self.assertEquals(dataset.shape, (1,))
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset[()], 1.0)
+ self.assertEqual(dataset.dtype.kind, "f")
+ self.assertEqual(dataset.shape, (1,))
def test_metadata_string(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/string"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset[()], numpy.string_("hi!"))
- self.assertEquals(dataset.dtype.type, numpy.string_)
- self.assertEquals(dataset.shape, (1,))
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset[()], numpy.string_("hi!"))
+ self.assertEqual(dataset.dtype.type, numpy.string_)
+ self.assertEqual(dataset.shape, (1,))
def test_metadata_list_integer(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/list_integer"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset.dtype.kind, "u")
- self.assertEquals(dataset.shape, (1, 3))
- self.assertEquals(dataset[0, 0], 100)
- self.assertEquals(dataset[0, 1], 50)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.dtype.kind, "u")
+ self.assertEqual(dataset.shape, (1, 3))
+ self.assertEqual(dataset[0, 0], 100)
+ self.assertEqual(dataset[0, 1], 50)
def test_metadata_list_float(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/list_float"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset.dtype.kind, "f")
- self.assertEquals(dataset.shape, (1, 3))
- self.assertEquals(dataset[0, 0], 1.0)
- self.assertEquals(dataset[0, 1], 2.0)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.dtype.kind, "f")
+ self.assertEqual(dataset.shape, (1, 3))
+ self.assertEqual(dataset[0, 0], 1.0)
+ self.assertEqual(dataset[0, 1], 2.0)
def test_metadata_list_looks_like_list(self):
dataset = self.h5_image["/scan_0/instrument/detector_0/others/string_looks_like_list"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
- self.assertEquals(dataset[()], numpy.string_("2000 hi!"))
- self.assertEquals(dataset.dtype.type, numpy.string_)
- self.assertEquals(dataset.shape, (1,))
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset[()], numpy.string_("2000 hi!"))
+ self.assertEqual(dataset.dtype.type, numpy.string_)
+ self.assertEqual(dataset.shape, (1,))
def test_float_32(self):
float_list = [u'1.2', u'1.3', u'1.4']
@@ -263,19 +263,19 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
sample = h5_image["/scan_0/sample"]
self.assertIsNotNone(sample)
- self.assertEquals(sample.attrs["NXclass"], "NXsample")
+ self.assertEqual(sample.attrs["NXclass"], "NXsample")
d = sample['unit_cell_abc']
expected = numpy.array([4.08, 4.08, 4.08])
self.assertIsNotNone(d)
- self.assertEquals(d.shape, (3, ))
+ self.assertEqual(d.shape, (3, ))
self.assertIn(d.dtype.kind, ['d', 'f'])
numpy.testing.assert_array_almost_equal(d[...], expected)
d = sample['unit_cell_alphabetagamma']
expected = numpy.array([90.0, 90.0, 90.0])
self.assertIsNotNone(d)
- self.assertEquals(d.shape, (3, ))
+ self.assertEqual(d.shape, (3, ))
self.assertIn(d.dtype.kind, ['d', 'f'])
numpy.testing.assert_array_almost_equal(d[...], expected)
@@ -284,7 +284,7 @@ class TestFabioH5(unittest.TestCase):
[-1.08894, 1.08894, 1.6083e-16],
[1.08894, 1.08894, 9.28619e-17]]])
self.assertIsNotNone(d)
- self.assertEquals(d.shape, (1, 3, 3))
+ self.assertEqual(d.shape, (1, 3, 3))
self.assertIn(d.dtype.kind, ['d', 'f'])
numpy.testing.assert_array_almost_equal(d[...], expected)
@@ -302,13 +302,13 @@ class TestFabioH5(unittest.TestCase):
h5_image = fabioh5.File(fabio_image=fabio_image)
data_dataset = h5_image["/scan_0/measurement/image_0/data"]
- self.assertEquals(data_dataset.attrs["interpretation"], "spectrum")
+ self.assertEqual(data_dataset.attrs["interpretation"], "spectrum")
data_dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(data_dataset.attrs["interpretation"], "spectrum")
+ self.assertEqual(data_dataset.attrs["interpretation"], "spectrum")
data_dataset = h5_image["/scan_0/measurement/image_0/info/data"]
- self.assertEquals(data_dataset.attrs["interpretation"], "spectrum")
+ self.assertEqual(data_dataset.attrs["interpretation"], "spectrum")
def test_get_api(self):
result = self.h5_image.get("scan_0", getclass=True, getlink=True)
@@ -554,15 +554,15 @@ class TestFabioH5WithFileSeries(unittest.TestCase):
def _testH5Image(self, h5_image):
# test data
dataset = h5_image["/scan_0/instrument/detector_0/data"]
- self.assertEquals(dataset.h5py_class, h5py.Dataset)
+ self.assertEqual(dataset.h5py_class, h5py.Dataset)
self.assertTrue(isinstance(dataset[()], numpy.ndarray))
- self.assertEquals(dataset.dtype.kind, "i")
- self.assertEquals(dataset.shape, (10, 3, 2))
- self.assertEquals(list(dataset[:, 0, 0]), list(range(10)))
- self.assertEquals(dataset.attrs["interpretation"], "image")
+ self.assertEqual(dataset.dtype.kind, "i")
+ self.assertEqual(dataset.shape, (10, 3, 2))
+ self.assertEqual(list(dataset[:, 0, 0]), list(range(10)))
+ self.assertEqual(dataset.attrs["interpretation"], "image")
# test metatdata
dataset = h5_image["/scan_0/instrument/detector_0/others/image_id"]
- self.assertEquals(list(dataset[...]), list(range(10)))
+ self.assertEqual(list(dataset[...]), list(range(10)))
def testFileList(self):
h5_image = fabioh5.File(file_series=self.edf_filenames)
diff --git a/silx/io/test/test_specfile.py b/silx/io/test/test_specfile.py
index 9236fee..55850f1 100644
--- a/silx/io/test/test_specfile.py
+++ b/silx/io/test/test_specfile.py
@@ -184,7 +184,7 @@ class TestSpecFile(unittest.TestCase):
def test_open(self):
self.assertIsInstance(self.sf, SpecFile)
with self.assertRaises(specfile.SfErrFileOpen):
- sf2 = SpecFile("doesnt_exist.dat")
+ SpecFile("doesnt_exist.dat")
# test filename types unicode and bytes
if sys.version_info[0] < 3:
@@ -208,7 +208,7 @@ class TestSpecFile(unittest.TestCase):
def test_number_of_scans(self):
self.assertEqual(4, len(self.sf))
-
+
def test_list_of_scan_indices(self):
self.assertEqual(self.sf.list(),
[1, 25, 26, 1])
@@ -216,14 +216,14 @@ class TestSpecFile(unittest.TestCase):
["1.1", "25.1", "26.1", "1.2"])
def test_index_number_order(self):
- self.assertEqual(self.sf.index(1, 2), 3) #sf["1.2"]==sf[3]
- self.assertEqual(self.sf.number(1), 25) #sf[1]==sf["25"]
- self.assertEqual(self.sf.order(3), 2) #sf[3]==sf["1.2"]
+ self.assertEqual(self.sf.index(1, 2), 3) # sf["1.2"]==sf[3]
+ self.assertEqual(self.sf.number(1), 25) # sf[1]==sf["25"]
+ self.assertEqual(self.sf.order(3), 2) # sf[3]==sf["1.2"]
with self.assertRaises(specfile.SfErrScanNotFound):
self.sf.index(3, 2)
with self.assertRaises(specfile.SfErrScanNotFound):
self.sf.index(99)
-
+
def test_getitem(self):
self.assertIsInstance(self.sf[2], Scan)
self.assertIsInstance(self.sf["1.2"], Scan)
@@ -233,12 +233,12 @@ class TestSpecFile(unittest.TestCase):
# float indexing not allowed
with self.assertRaisesRegexp(TypeError, 'The scan identification k'):
self.sf[1.2]
- # non existant scan with "N.M" indexing
+ # non existant scan with "N.M" indexing
with self.assertRaises(KeyError):
self.sf["3.2"]
def test_specfile_iterator(self):
- i=0
+ i = 0
for scan in self.sf:
if i == 1:
self.assertEqual(scan.motor_positions,
@@ -277,7 +277,7 @@ class TestSpecFile(unittest.TestCase):
Epoch"""
self.assertEqual(self.scan1_2.header[1],
'#E 1455180876')
-
+
def test_scan_labels(self):
self.assertEqual(self.scan1.labels,
['first column', 'second column', '3rd_col'])
@@ -343,7 +343,7 @@ class TestSpecFile(unittest.TestCase):
self.assertEqual(sum(self.scan1_2.mca[2]), 21.7)
# Negative indexing
- self.assertEqual(sum(self.scan1_2.mca[len(self.scan1_2.mca)-1]),
+ self.assertEqual(sum(self.scan1_2.mca[len(self.scan1_2.mca) - 1]),
sum(self.scan1_2.mca[-1]))
# Test iterator
diff --git a/silx/io/test/test_utils.py b/silx/io/test/test_utils.py
index 53e001c..23b1124 100644
--- a/silx/io/test/test_utils.py
+++ b/silx/io/test/test_utils.py
@@ -1,6 +1,6 @@
# coding: utf-8
# /*##########################################################################
-# Copyright (C) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -63,7 +63,7 @@ expected_spec1 = r"""#F .*
3 6\.00
"""
-expected_spec2 = expected_spec1 + """
+expected_spec2 = expected_spec1 + r"""
#S 2 Ordinate2
#D .*
#N 2
@@ -362,14 +362,14 @@ class TestOpen(unittest.TestCase):
f = utils.open(self.spec_filename)
self.assertIsNotNone(f)
if h5py is not None:
- self.assertEquals(f.h5py_class, h5py.File)
+ self.assertEqual(f.h5py_class, h5py.File)
f.close()
def testSpecWith(self):
with utils.open(self.spec_filename) as f:
self.assertIsNotNone(f)
if h5py is not None:
- self.assertEquals(f.h5py_class, h5py.File)
+ self.assertEqual(f.h5py_class, h5py.File)
def testEdf(self):
if h5py is None:
@@ -379,7 +379,7 @@ class TestOpen(unittest.TestCase):
f = utils.open(self.edf_filename)
self.assertIsNotNone(f)
- self.assertEquals(f.h5py_class, h5py.File)
+ self.assertEqual(f.h5py_class, h5py.File)
f.close()
def testEdfWith(self):
@@ -390,7 +390,7 @@ class TestOpen(unittest.TestCase):
with utils.open(self.edf_filename) as f:
self.assertIsNotNone(f)
- self.assertEquals(f.h5py_class, h5py.File)
+ self.assertEqual(f.h5py_class, h5py.File)
def testUnsupported(self):
self.assertRaises(IOError, utils.open, self.txt_filename)
diff --git a/silx/io/utils.py b/silx/io/utils.py
index 5b0de54..654bfe3 100644
--- a/silx/io/utils.py
+++ b/silx/io/utils.py
@@ -55,6 +55,10 @@ except ImportError as e:
logger = logging.getLogger(__name__)
+NEXUS_HDF5_EXT = [".h5", ".nx5", ".nxs", ".hdf", ".hdf5", ".cxi"]
+"""List of possible extensions for HDF5 file formats."""
+
+
class H5Type(enum.Enum):
"""Identify a set of HDF5 concepts"""
DATASET = 1
@@ -204,7 +208,7 @@ def save1D(fname, x, y, xlabel=None, ylabels=None, filetype=None,
# make sure y_array is a 2D array even for a single curve
if len(y_array.shape) == 1:
- y_array.shape = (1, y_array.shape[0])
+ y_array = y_array.reshape(1, y_array.shape[0])
elif len(y_array.shape) > 2 or len(y_array.shape) < 1:
raise IndexError("y must be a 1D or 2D array")
@@ -820,7 +824,7 @@ def get_data(url):
if fabio_file.nframes == 1:
if index != 0:
- raise ValueError("Only a single frame availalbe. Slice %s out of range" % index)
+ raise ValueError("Only a single frame available. Slice %s out of range" % index)
data = fabio_file.data
else:
data = fabio_file.getframe(index).data
diff --git a/silx/math/calibration.py b/silx/math/calibration.py
index 89a12ec..658e2dc 100644
--- a/silx/math/calibration.py
+++ b/silx/math/calibration.py
@@ -52,7 +52,7 @@ class AbstractCalibration(object):
def is_affine(self):
"""Returns True for an affine calibration of the form
- :math:`x \mapsto a + b * x`, or else False.
+ :math:`x \\mapsto a + b * x`, or else False.
"""
return False
@@ -62,7 +62,7 @@ class AbstractCalibration(object):
class NoCalibration(AbstractCalibration):
- """No calibration :math:`x \mapsto x`
+ """No calibration :math:`x \\mapsto x`
"""
def __init__(self):
super(NoCalibration, self).__init__()
@@ -78,7 +78,7 @@ class NoCalibration(AbstractCalibration):
class LinearCalibration(AbstractCalibration):
- """Linear calibration :math:`x \mapsto a + b x`,
+ """Linear calibration :math:`x \\mapsto a + b x`,
where *a* is the y-intercept and *b* is the slope.
:param y_intercept: y-intercept
@@ -101,7 +101,7 @@ class LinearCalibration(AbstractCalibration):
class ArrayCalibration(AbstractCalibration):
"""One-to-one mapping calibration, defined by an array *x'*,
- such as :math:`x \mapsto x'`*.
+ such as :math:`x \\mapsto x'`.
This calibration can only be applied to x arrays of the same length as the
calibration array *x'*.
@@ -151,7 +151,7 @@ class ArrayCalibration(AbstractCalibration):
class FunctionCalibration(AbstractCalibration):
- """Calibration defined by a function *f*, such as :math:`x \mapsto f(x)`*.
+ """Calibration defined by a function *f*, such as :math:`x \\mapsto f(x)`*.
:param function: Calibration function"""
def __init__(self, function, is_affine=False):
diff --git a/silx/math/chistogramnd.c b/silx/math/chistogramnd.c
index b4902c7..c7c44c9 100644
--- a/silx/math/chistogramnd.c
+++ b/silx/math/chistogramnd.c
@@ -1,24 +1,24 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h",
"silx/math/histogramnd/include/histogramnd_c.h"
- ],
+ ],
"include_dirs": [
- "silx/math/histogramnd/include",
- "/usr/lib/python2.7/dist-packages/numpy/core/include"
- ],
- "language": "c",
- "name": "silx.math.chistogramnd",
+ "silx/math/histogramnd/include",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include"
+ ],
+ "language": "c",
+ "name": "silx.math.chistogramnd",
"sources": [
- "silx/math/chistogramnd.pyx",
+ "silx/math/chistogramnd.pyx",
"silx/math/histogramnd/src/histogramnd_c.c"
]
- },
+ },
"module_name": "silx.math.chistogramnd"
}
END: Cython Metadata */
@@ -30,7 +30,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -101,6 +102,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -138,6 +143,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -191,11 +200,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -331,6 +346,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -344,15 +362,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -460,8 +503,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -621,6 +664,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -679,6 +725,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -759,7 +806,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -932,7 +979,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -941,7 +988,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -950,7 +997,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -959,7 +1006,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -968,7 +1015,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -977,7 +1024,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -986,7 +1033,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -995,7 +1042,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1004,7 +1051,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1013,7 +1060,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1022,7 +1069,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1031,7 +1078,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1040,7 +1087,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1049,7 +1096,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1058,7 +1105,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1067,7 +1114,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1076,7 +1123,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1085,7 +1132,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1094,7 +1141,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1103,7 +1150,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1112,7 +1159,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1152,7 +1199,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1161,7 +1208,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1170,7 +1217,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1179,7 +1226,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1425,6 +1472,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyCFunctionFastCall.proto */
@@ -1489,7 +1548,28 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
+
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
@@ -1524,13 +1604,8 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
int is_list, int wraparound, int boundscheck);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
@@ -1541,6 +1616,9 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
int result = PySequence_Contains(seq, item);
@@ -1592,6 +1670,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -1686,6 +1765,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1862,6 +1946,17 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable);
/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
@@ -2092,21 +2187,6 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn_
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2657,10 +2737,8 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__39;
-static PyObject *__pyx_slice__40;
-static PyObject *__pyx_slice__41;
-static PyObject *__pyx_tuple__10;
+static PyObject *__pyx_slice__33;
+static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
@@ -2682,25 +2760,19 @@ static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
+static PyObject *__pyx_tuple__39;
+static PyObject *__pyx_tuple__40;
+static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_codeobj__11;
-static PyObject *__pyx_codeobj__46;
-static PyObject *__pyx_codeobj__53;
+static PyObject *__pyx_codeobj__10;
+static PyObject *__pyx_codeobj__38;
+static PyObject *__pyx_codeobj__45;
/* Late includes */
/* "silx/math/chistogramnd.pyx":36
@@ -2714,7 +2786,7 @@ static PyObject *__pyx_codeobj__53;
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12chistogramnd_1chistogramnd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_12chistogramnd_chistogramnd[] = "chistogramnd(sample, histo_range, n_bins, weights=None, weight_min=None, weight_max=None, last_bin_closed=False, histo=None, weighted_histo=None, wh_dtype=None)\nComputes the multidimensional histogram of some data.\n\n :param sample:\n The data to be histogrammed.\n Its shape must be either\n (N,) if it contains one dimensional coordinates,\n or an (N,D) array where the rows are the\n coordinates of points in a D dimensional space.\n The following dtypes are supported : :class:`numpy.float64`,\n :class:`numpy.float32`, :class:`numpy.int32`.\n\n .. warning:: if sample is not a C_CONTIGUOUS ndarray (e.g : a non\n contiguous slice) then histogramnd will have to do make an internal\n copy.\n :type sample: :class:`numpy.array`\n\n :param histo_range:\n A (N, 2) array containing the histogram range along each dimension,\n where N is the sample's number of dimensions.\n :type histo_range: array_like\n\n :param n_bins:\n The number of bins :\n * a scalar (same number of bins for all dimensions)\n * a D elements array (number of bins for each dimensions)\n :type n_bins: scalar or array_like\n\n :param weights:\n A N elements numpy array of values associated with\n each sample.\n The values of the *weighted_histo* array\n returned by the function are equal to the sum of\n the weights associated with the samples falling\n into each bin.\n The following dtypes are supported : :class:`numpy.float64`,\n :class:`numpy.float32`, :class:`numpy.int32`.\n\n .. note:: If None, the weighted histogram returned will be None.\n :type weights: *optional*, :class:`numpy.array`\n\n :param weight_min:\n Use this parameter to filter out all samples whose\n weights are lower than this value.\n\n .. note:: This value will be cast to the same type\n as *weig""hts*.\n :type weight_min: *optional*, scalar\n\n :param weight_max:\n Use this parameter to filter out all samples whose\n weights are higher than this value.\n\n .. note:: This value will be cast to the same type\n as *weights*.\n\n :type weight_max: *optional*, scalar\n\n :param last_bin_closed:\n By default the last bin is half\n open (i.e.: [x,y) ; x included, y\n excluded), like all the other bins.\n Set this parameter to true if you want\n the LAST bin to be closed.\n :type last_bin_closed: *optional*, :class:`python.boolean`\n\n :param histo:\n Use this parameter if you want to pass your\n own histogram array instead of the one\n created by this function. New values\n will be added to this array. The returned array\n will then be this one (same reference).\n\n .. warning:: If the histo array was created by a previous\n call to histogramnd then the user is\n responsible for providing the same parameters\n (*n_bins*, *histo_range*, ...).\n :type histo: *optional*, :class:`numpy.array`\n\n :param weighted_histo:\n Use this parameter if you want to pass your\n own weighted histogram array instead of\n the created by this function. New\n values will be added to this array. The returned array\n will then be this one (same reference).\n\n .. warning:: If the weighted_histo array was created by a previous\n call to histogramnd then the user is\n responsible for providing the same parameters\n (*n_bins*, *histo_range*, ...).\n\n .. warning:: if weighted_histo is not a C_CONTIGUOUS ndarray (e.g : a\n non contiguous slice) then histogramnd will have to do make an\n internal copy.\n :type weighted_histo: *optional*, :class:`numpy.array`\n\n :param wh_dtype: type of the weighted histogram array. This ""parameter is\n ignored if *weighted_histo* is provided. If not provided, the\n weighted histogram array will contain values of the same type as\n *weights*. Allowed values are : `numpu.double` and `numpy.float32`.\n :type wh_dtype: *optional*, numpy data type\n\n :return: Histogram (bin counts, always returned), weighted histogram of\n the sample (or *None* if weights is *None*) and bin edges for each\n dimension.\n :rtype: *tuple* (:class:`numpy.array`, :class:`numpy.array`, `tuple`) or\n (:class:`numpy.array`, None, `tuple`)\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12chistogramnd_1chistogramnd = {"chistogramnd", (PyCFunction)__pyx_pw_4silx_4math_12chistogramnd_1chistogramnd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12chistogramnd_chistogramnd};
+static PyMethodDef __pyx_mdef_4silx_4math_12chistogramnd_1chistogramnd = {"chistogramnd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12chistogramnd_1chistogramnd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12chistogramnd_chistogramnd};
static PyObject *__pyx_pw_4silx_4math_12chistogramnd_1chistogramnd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sample = 0;
PyObject *__pyx_v_histo_range = 0;
@@ -3108,9 +3180,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
+ int __pyx_t_6;
+ Py_ssize_t __pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
int __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
@@ -3172,7 +3244,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* elif wh_dtype not in (np.double, np.float32):
* raise ValueError('<wh_dtype> type not supported : {0}.'.format(wh_dtype))
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_double); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -3199,7 +3271,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*/
__Pyx_INCREF(__pyx_v_wh_dtype);
__pyx_t_4 = __pyx_v_wh_dtype;
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_double); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -3213,7 +3285,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__pyx_t_2 = __pyx_t_1;
goto __pyx_L4_bool_binop_done;
}
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 156, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -3247,38 +3319,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_wh_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_wh_dtype};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_wh_dtype};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_INCREF(__pyx_v_wh_dtype);
- __Pyx_GIVEREF(__pyx_v_wh_dtype);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_wh_dtype);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_v_wh_dtype) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_wh_dtype);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3305,10 +3349,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('<weighted_histo> must be a C_CONTIGUOUS numpy array.')
*/
__pyx_t_2 = (__pyx_v_weighted_histo != Py_None);
- __pyx_t_7 = (__pyx_t_2 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_2 != 0);
+ if (__pyx_t_6) {
} else {
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_1 = __pyx_t_6;
goto __pyx_L7_bool_binop_done;
}
@@ -3324,9 +3368,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_3, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = (__pyx_t_4 == Py_False);
+ __pyx_t_6 = (__pyx_t_4 == Py_False);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_2 = (__pyx_t_7 != 0);
+ __pyx_t_2 = (__pyx_t_6 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
@@ -3369,10 +3413,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
*/
__pyx_t_2 = (__pyx_v_histo != Py_None);
- __pyx_t_7 = (__pyx_t_2 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_2 != 0);
+ if (__pyx_t_6) {
} else {
- __pyx_t_1 = __pyx_t_7;
+ __pyx_t_1 = __pyx_t_6;
goto __pyx_L10_bool_binop_done;
}
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 163, __pyx_L1_error)
@@ -3380,9 +3424,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_4, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = (__pyx_t_3 == Py_False);
+ __pyx_t_6 = (__pyx_t_3 == Py_False);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = (__pyx_t_7 != 0);
+ __pyx_t_2 = (__pyx_t_6 != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L10_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
@@ -3428,8 +3472,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights is not None:
*/
- __pyx_t_8 = PyObject_Length(__pyx_v_s_shape); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 168, __pyx_L1_error)
- if (((__pyx_t_8 == 1) != 0)) {
+ __pyx_t_7 = PyObject_Length(__pyx_v_s_shape); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 168, __pyx_L1_error)
+ if (((__pyx_t_7 == 1) != 0)) {
__Pyx_INCREF(__pyx_int_1);
__pyx_t_3 = __pyx_int_1;
} else {
@@ -3471,8 +3515,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('<weights> must be an array whose length '
* 'is equal to the number of samples.')
*/
- __pyx_t_8 = PyObject_Length(__pyx_v_w_shape); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 175, __pyx_L1_error)
- __pyx_t_1 = ((__pyx_t_8 != 1) != 0);
+ __pyx_t_7 = PyObject_Length(__pyx_v_w_shape); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 175, __pyx_L1_error)
+ __pyx_t_1 = ((__pyx_t_7 != 1) != 0);
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
@@ -3482,11 +3526,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_s_shape, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L14_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
@@ -3498,10 +3542,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'is equal to the number of samples.')
*
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 176, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":175
@@ -3520,11 +3564,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* weights_type = None
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_cur_scope->__pyx_v_weights_type = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_cur_scope->__pyx_v_weights_type = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":170
* n_dims = 1 if len(s_shape) == 1 else s_shape[1]
@@ -3567,7 +3611,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* err_histo_range = False
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3582,41 +3626,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_histo_range); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_histo_range};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_histo_range};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_histo_range);
- __Pyx_GIVEREF(__pyx_v_histo_range);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_histo_range);
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_histo_range) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_histo_range);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_6);
- __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":188
* i_histo_range = histo_range
@@ -3634,10 +3650,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if histo_range.shape == (2,):
* pass
*/
- __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_n_dims, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 190, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 190, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_v_n_dims, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_2) {
/* "silx/math/chistogramnd.pyx":191
@@ -3647,10 +3663,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* pass
* elif histo_range.shape == (1, 2):
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_tuple__4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_tuple__4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 191, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_2) {
@@ -3666,10 +3682,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*/
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_tuple__5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_tuple__5, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 193, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_2) {
/* "silx/math/chistogramnd.pyx":194
@@ -3720,16 +3736,17 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* err_histo_range = True
*
*/
- __pyx_t_6 = PyObject_RichCompare(__pyx_v_n_dims, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 197, __pyx_L1_error)
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyInt_NeObjC(__pyx_v_n_dims, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 197, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L18_bool_binop_done;
}
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 197, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 197, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 197, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_n_dims);
@@ -3738,11 +3755,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__Pyx_INCREF(__pyx_int_2);
__Pyx_GIVEREF(__pyx_int_2);
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_2);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 197, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 197, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 197, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L18_bool_binop_done:;
if (__pyx_t_2) {
@@ -3783,8 +3800,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* n_dims=n_dims))
*
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histo_range_error_expected_n_di, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histo_range_error_expected_n_di, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_histo_range, __pyx_v_i_histo_range) < 0) __PYX_ERR(0, 206, __pyx_L1_error)
@@ -3805,9 +3822,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* n_dims=n_dims))
*
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/chistogramnd.pyx":201
@@ -3817,9 +3834,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'lower and upper bin edges, '
* 'got the following instead : {histo_range}. '
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 201, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 201, __pyx_L1_error)
@@ -3840,13 +3857,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('Range parameter should be finite value')
* if np.nan in histo_range:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 210, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 210, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_histo_range, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 210, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_5, __pyx_v_histo_range, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 210, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_1 = (__pyx_t_2 != 0);
if (unlikely(__pyx_t_1)) {
@@ -3857,10 +3874,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if np.nan in histo_range:
* raise ValueError('Range value can\'t be nan')
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 211, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 211, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":210
@@ -3879,11 +3896,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('Range value can\'t be nan')
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 212, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_nan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 212, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_nan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_histo_range, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 212, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_2 = (__pyx_t_1 != 0);
@@ -3918,26 +3935,26 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if len(n_bins) == 1:
* n_bins = np.tile(n_bins, n_dims)
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_n_bins);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 216, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_ndmin, __pyx_int_1) < 0) __PYX_ERR(0, 216, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_ndmin, __pyx_int_1) < 0) __PYX_ERR(0, 216, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_8);
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":217
* # checking n_bins size
@@ -3946,8 +3963,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* n_bins = np.tile(n_bins, n_dims)
* elif n_bins.shape != (n_dims,):
*/
- __pyx_t_8 = PyObject_Length(__pyx_v_n_bins); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 217, __pyx_L1_error)
- __pyx_t_2 = ((__pyx_t_8 == 1) != 0);
+ __pyx_t_7 = PyObject_Length(__pyx_v_n_bins); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 217, __pyx_L1_error)
+ __pyx_t_2 = ((__pyx_t_7 == 1) != 0);
if (__pyx_t_2) {
/* "silx/math/chistogramnd.pyx":218
@@ -3957,18 +3974,18 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* elif n_bins.shape != (n_dims,):
* raise ValueError('n_bins must be either a scalar (same number '
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tile); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_tile); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_5)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_9 = 1;
@@ -3976,39 +3993,39 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_n_bins, __pyx_v_n_dims};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_n_bins, __pyx_v_n_dims};
+ __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_n_bins, __pyx_v_n_dims};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_n_bins, __pyx_v_n_dims};
+ __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
} else
#endif
{
- __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
+ __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_v_n_bins);
+ PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_n_bins);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_v_n_dims);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_v_n_dims);
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_8);
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":217
* # checking n_bins size
@@ -4027,18 +4044,18 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('n_bins must be either a scalar (same number '
* 'of bins for all dimensions) or '
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_n_dims);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 219, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_8, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 219, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 219, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__pyx_t_2)) {
/* "silx/math/chistogramnd.pyx":220
@@ -4048,10 +4065,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'of bins for all dimensions) or '
* 'an array (number of bins for each '
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 220, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 220, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 220, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":219
@@ -4071,23 +4088,23 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('<n_bins> : only positive values allowed.')
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_any); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_any); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_equal); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_equal); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_5)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_10, function);
__pyx_t_9 = 1;
@@ -4095,25 +4112,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_n_bins, Py_None};
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_n_bins, Py_None};
__pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_n_bins, Py_None};
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_n_bins, Py_None};
__pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_3);
} else
#endif
{
__pyx_t_11 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
@@ -4127,112 +4144,52 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- if (!__pyx_t_10) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_3};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_3};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L25_bool_binop_done;
}
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_any); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_n_bins, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error)
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_any); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_v_n_bins, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_11, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L25_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
@@ -4244,10 +4201,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* output_shape = tuple(n_bins)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(0, 229, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":228
@@ -4266,10 +4223,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* # checking the histo array, if provided
*/
- __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_n_bins); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 231, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_v_output_shape = ((PyObject*)__pyx_t_6);
- __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_v_n_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 231, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_v_output_shape = ((PyObject*)__pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":234
*
@@ -4289,32 +4246,32 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* if histo.shape != output_shape:
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_output_shape);
__Pyx_GIVEREF(__pyx_v_output_shape);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_output_shape);
- __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 235, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_output_shape);
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 235, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF_SET(__pyx_v_histo, __pyx_t_3);
- __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF_SET(__pyx_v_histo, __pyx_t_11);
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":234
*
@@ -4334,12 +4291,12 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'a shape compatible with <n_bins> '
*/
/*else*/ {
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = PyObject_RichCompare(__pyx_t_3, __pyx_v_output_shape, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_v_output_shape, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(__pyx_t_1)) {
/* "silx/math/chistogramnd.pyx":241
@@ -4349,57 +4306,57 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if histo.dtype != np.uint32:
* raise ValueError('Provided <histo> array doesn\'t have '
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_histo_array_doesn_t_hav, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_11 = NULL;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_histo_array_doesn_t_hav, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = NULL;
__pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_11);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_output_shape, __pyx_t_6};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_output_shape, __pyx_t_5};
+ __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_output_shape, __pyx_t_6};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_output_shape, __pyx_t_5};
+ __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
- __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
+ __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_output_shape);
__Pyx_GIVEREF(__pyx_v_output_shape);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_v_output_shape);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 241, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_output_shape);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 241, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":238
* else:
@@ -4408,11 +4365,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'a shape compatible with <n_bins> '
* ': should be {0} instead of {1}.'
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 238, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__PYX_ERR(0, 238, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":237
@@ -4431,18 +4388,18 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('Provided <histo> array doesn\'t have '
* 'the expected type '
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_uint32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 242, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(__pyx_t_1)) {
/* "silx/math/chistogramnd.pyx":246
@@ -4452,64 +4409,64 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* # checking the weighted_histo array, if provided
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_histo_array_doesn_t_hav_2, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_uint32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = NULL;
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_histo_array_doesn_t_hav_2, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_uint32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_3 = NULL;
__pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
- __Pyx_INCREF(__pyx_t_11);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_6, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_t_11};
+ __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_6, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_t_11};
+ __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __pyx_t_11 = NULL;
+ __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_3);
- __pyx_t_6 = 0;
- __pyx_t_3 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_11);
+ __pyx_t_5 = 0;
+ __pyx_t_11 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":243
* ''.format(output_shape, histo.shape))
@@ -4518,11 +4475,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'the expected type '
* ': should be {0} instead of {1}.'
*/
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 243, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 243, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_4, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 243, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":242
@@ -4615,26 +4572,26 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* # weighted_histo provided, checking shape/dtype
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_output_shape);
__Pyx_GIVEREF(__pyx_v_output_shape);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_output_shape);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_v_wh_dtype) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_output_shape);
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_wh_dtype) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF_SET(__pyx_v_weighted_histo, __pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_v_weighted_histo, __pyx_t_11);
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":252
* # no weights provided, not creating the weighted_histo array
@@ -4654,12 +4611,12 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'a shape compatible with <n_bins> '
*/
/*else*/ {
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_v_output_shape, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_11, __pyx_v_output_shape, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 259, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(__pyx_t_2)) {
/* "silx/math/chistogramnd.pyx":263
@@ -4669,57 +4626,57 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if (weighted_histo.dtype != np.float64 and
* weighted_histo.dtype != np.float32):
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_weighted_histo_array_do, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = NULL;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_weighted_histo_array_do, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_shape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = NULL;
__pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_10);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_output_shape, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_output_shape, __pyx_t_10};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_output_shape, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_output_shape, __pyx_t_10};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
} else
#endif
{
- __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (__pyx_t_10) {
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL;
+ __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ if (__pyx_t_8) {
+ __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
}
__Pyx_INCREF(__pyx_v_output_shape);
__Pyx_GIVEREF(__pyx_v_output_shape);
- PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_v_output_shape);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_output_shape);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":260
* # weighted_histo provided, checking shape/dtype
@@ -4728,11 +4685,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'a shape compatible with <n_bins> '
* ': should be {0} instead of {1}.'
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 260, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 260, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__PYX_ERR(0, 260, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":259
@@ -4751,18 +4708,18 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* weighted_histo.dtype != np.float32):
* raise ValueError('Provided <weighted_histo> array doesn\'t have '
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 264, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 264, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_11, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 264, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
@@ -4776,18 +4733,18 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise ValueError('Provided <weighted_histo> array doesn\'t have '
* 'the expected type '
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 265, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 265, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_11, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 265, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 265, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L34_bool_binop_done:;
@@ -4807,13 +4764,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* np.float32,
* weighted_histo.dtype))
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_weighted_histo_array_do_2, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_double); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_weighted_histo_array_do_2, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_double); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd.pyx":270
* ': should be {0} or {1} instead of {2}.'
@@ -4822,11 +4779,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* weighted_histo.dtype))
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 270, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 270, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd.pyx":271
* ''.format(np.double,
@@ -4835,62 +4792,62 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* option_flags = 0
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_11 = NULL;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = NULL;
__pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_11);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_t_4, __pyx_t_10, __pyx_t_5};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_10, __pyx_t_8, __pyx_t_4};
+ __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[4] = {__pyx_t_11, __pyx_t_4, __pyx_t_10, __pyx_t_5};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
+ PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_10, __pyx_t_8, __pyx_t_4};
+ __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else
#endif
{
__pyx_t_12 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 269, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
+ if (__pyx_t_3) {
+ __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_9, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_9, __pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_9, __pyx_t_5);
- __pyx_t_4 = 0;
+ PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_9, __pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_9, __pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_9, __pyx_t_4);
__pyx_t_10 = 0;
- __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 269, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = 0;
+ __pyx_t_4 = 0;
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 269, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":266
* if (weighted_histo.dtype != np.float64 and
@@ -4899,11 +4856,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* 'the expected type '
* ': should be {0} or {1} instead of {2}.'
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__PYX_ERR(0, 266, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":264
@@ -4945,13 +4902,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* weight_min = 0
*/
- __pyx_t_3 = __Pyx_PyInt_From_histo_opt_type(HISTO_WEIGHT_MIN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 276, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 276, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_6);
- __pyx_t_6 = 0;
+ __pyx_t_11 = __Pyx_PyInt_From_histo_opt_type(HISTO_WEIGHT_MIN); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_5 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":275
* option_flags = 0
@@ -4994,13 +4951,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* weight_max = 0
*/
- __pyx_t_6 = __Pyx_PyInt_From_histo_opt_type(HISTO_WEIGHT_MAX); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyInt_From_histo_opt_type(HISTO_WEIGHT_MAX); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_11 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_11);
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":280
* weight_min = 0
@@ -5033,14 +4990,14 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
*/
__pyx_t_1 = (__pyx_v_last_bin_closed != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
} else {
- __pyx_t_2 = __pyx_t_7;
+ __pyx_t_2 = __pyx_t_6;
goto __pyx_L39_bool_binop_done;
}
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_last_bin_closed); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 285, __pyx_L1_error)
- __pyx_t_2 = __pyx_t_7;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_last_bin_closed); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __pyx_t_2 = __pyx_t_6;
__pyx_L39_bool_binop_done:;
if (__pyx_t_2) {
@@ -5051,13 +5008,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* sample_type = sample.dtype
*/
- __pyx_t_3 = __Pyx_PyInt_From_histo_opt_type(HISTO_LAST_BIN_CLOSED); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_6);
- __pyx_t_6 = 0;
+ __pyx_t_11 = __Pyx_PyInt_From_histo_opt_type(HISTO_LAST_BIN_CLOSED); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_5 = PyNumber_InPlaceOr(__pyx_v_option_flags, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_v_option_flags, __pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":285
* weight_max = 0
@@ -5075,11 +5032,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* sample_type = sample_type.newbyteorder('N')
*
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 288, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_6);
- __pyx_cur_scope->__pyx_v_sample_type = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 288, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_cur_scope->__pyx_v_sample_type = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":289
*
@@ -5088,15 +5045,27 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* n_elem = sample.size // n_dims
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sample_type, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_sample_type, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_11, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_12, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_GOTREF(__pyx_cur_scope->__pyx_v_sample_type);
- __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd.pyx":291
* sample_type = sample_type.newbyteorder('N')
@@ -5105,13 +5074,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* bin_edges = np.zeros(n_bins.sum() + n_bins.size, dtype=np.double)
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyNumber_FloorDivide(__pyx_t_3, __pyx_v_n_dims); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_n_elem = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_11 = PyNumber_FloorDivide(__pyx_t_5, __pyx_v_n_dims); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_n_elem = __pyx_t_11;
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":293
* n_elem = sample.size // n_dims
@@ -5120,58 +5089,55 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* # wanted to store the functions in a dict (with the supported types
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_sum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_5 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_5)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_12, function);
}
}
- if (__pyx_t_5) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else {
- __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 293, __pyx_L1_error)
- }
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_11 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_size); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = PyNumber_Add(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_double); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 293, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 293, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_bin_edges = __pyx_t_10;
- __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_bin_edges = __pyx_t_8;
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":299
* # functions. so I have to explicitly list them all...
@@ -5180,10 +5146,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise TypeError('Case not supported - sample:{0} '
* 'and weights:{1}.'
*/
- __pyx_t_10 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_12chistogramnd_12chistogramnd_1raise_unsupported_type, 0, __pyx_n_s_chistogramnd_locals_raise_unsupp, ((PyObject*)__pyx_cur_scope), __pyx_n_s_silx_math_chistogramnd, __pyx_d, ((PyObject *)__pyx_codeobj__11)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 299, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_v_raise_unsupported_type = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_t_8 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_12chistogramnd_12chistogramnd_1raise_unsupported_type, 0, __pyx_n_s_chistogramnd_locals_raise_unsupp, ((PyObject*)__pyx_cur_scope), __pyx_n_s_silx_math_chistogramnd, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_v_raise_unsupported_type = __pyx_t_8;
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":304
* ''.format(sample_type, weights_type))
@@ -5192,71 +5158,41 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=sample_type)
*
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_reshape); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 304, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_3)) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
+ if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_12, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_5, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 304, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
- __pyx_t_10 = 0;
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8);
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":305
*
@@ -5265,9 +5201,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* weights_c = (np.ascontiguousarray(weights.reshape((weights.size,)),
*/
- __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_cur_scope->__pyx_v_sample_type) < 0) __PYX_ERR(0, 305, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 305, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_cur_scope->__pyx_v_sample_type) < 0) __PYX_ERR(0, 305, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":304
* ''.format(sample_type, weights_type))
@@ -5276,13 +5212,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=sample_type)
*
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_v_sample_c = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_sample_c = __pyx_t_11;
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":309
* weights_c = (np.ascontiguousarray(weights.reshape((weights.size,)),
@@ -5301,71 +5237,41 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=weights.dtype.newbyteorder('N'))
* if weights is not None else None)
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_6 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_6) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10);
- __pyx_t_10 = 0;
+ __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8);
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":308
*
@@ -5374,18 +5280,30 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if weights is not None else None)
*
*/
- __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 308, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 308, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 308, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_5)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_10 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 308, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":307
* dtype=sample_type)
@@ -5394,13 +5312,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=weights.dtype.newbyteorder('N'))
* if weights is not None else None)
*/
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_4 = __pyx_t_11;
- __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_11 = __pyx_t_10;
+ __pyx_t_10 = 0;
} else {
/* "silx/math/chistogramnd.pyx":309
@@ -5411,10 +5329,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* histo_range_c = np.ascontiguousarray(histo_range.reshape((histo_range.size,)),
*/
__Pyx_INCREF(Py_None);
- __pyx_t_4 = Py_None;
+ __pyx_t_11 = Py_None;
}
- __pyx_v_weights_c = __pyx_t_4;
- __pyx_t_4 = 0;
+ __pyx_v_weights_c = __pyx_t_11;
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":311
* if weights is not None else None)
@@ -5423,71 +5341,41 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=np.double)
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 311, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 311, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 311, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_12};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_12};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4);
- __pyx_t_4 = 0;
+ __pyx_t_11 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_4, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
+ __pyx_t_11 = 0;
/* "silx/math/chistogramnd.pyx":312
*
@@ -5496,15 +5384,15 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* n_bins_c = np.ascontiguousarray(n_bins.reshape((n_bins.size,)),
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_double); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 312, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_12) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_double); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd.pyx":311
* if weights is not None else None)
@@ -5513,13 +5401,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=np.double)
*
*/
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_histo_range_c = __pyx_t_12;
- __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_v_histo_range_c = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd.pyx":314
* dtype=np.double)
@@ -5528,71 +5416,41 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=np.int32)
*
*/
- __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 314, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_11 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_11);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_11) {
- __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_12);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_3};
- __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_3};
- __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __pyx_t_11 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_12);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_4 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd.pyx":315
*
@@ -5601,15 +5459,15 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* histo_c = histo.reshape((histo.size,))
*/
- __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 315, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 315, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 315, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":314
* dtype=np.double)
@@ -5618,13 +5476,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=np.int32)
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 314, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_v_n_bins_c = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_v_n_bins_c = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":317
* dtype=np.int32)
@@ -5633,63 +5491,33 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weighted_histo is not None:
*/
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_10 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
+ __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
- }
- }
- if (!__pyx_t_10) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __pyx_t_10 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_v_histo_c = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_10 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_8, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_histo_c = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":319
* histo_c = histo.reshape((histo.size,))
@@ -5699,8 +5527,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
*/
__pyx_t_2 = (__pyx_v_weighted_histo != Py_None);
- __pyx_t_7 = (__pyx_t_2 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_2 != 0);
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":320
*
@@ -5709,63 +5537,33 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* cumul_c = None
*/
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 320, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_11)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_12, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_v_cumul_c = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_11, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_cumul_c = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":319
* histo_c = histo.reshape((histo.size,))
@@ -5797,71 +5595,41 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=bin_edges.dtype.newbyteorder('N'))
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_edges, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_edges, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 324, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_edges, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_edges, __pyx_n_s_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_GIVEREF(__pyx_t_11);
+ PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_11 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_11)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __pyx_t_10 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_11, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":325
*
@@ -5870,18 +5638,30 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = 0
*/
- __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_bin_edges, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_11 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_11)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_11);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_11, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_12) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* "silx/math/chistogramnd.pyx":324
* cumul_c = None
@@ -5890,13 +5670,13 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* dtype=bin_edges.dtype.newbyteorder('N'))
*
*/
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_bin_edges_c = __pyx_t_11;
- __pyx_t_11 = 0;
+ __pyx_v_bin_edges_c = __pyx_t_12;
+ __pyx_t_12 = 0;
/* "silx/math/chistogramnd.pyx":327
* dtype=bin_edges.dtype.newbyteorder('N'))
@@ -5918,24 +5698,24 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__pyx_t_1 = (__pyx_t_2 != 0);
if (!__pyx_t_1) {
} else {
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
goto __pyx_L43_bool_binop_done;
}
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_double); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_11, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_10 = PyObject_RichCompare(__pyx_t_12, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_6 = __pyx_t_1;
__pyx_L43_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":331
* if weighted_histo is None or weighted_histo.dtype == np.double:
@@ -5944,16 +5724,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":333
* if sample_type == np.float64:
@@ -5962,25 +5742,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_double_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 333, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 333, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 333, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 333, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 333, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 333, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 333, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!__pyx_t_1) {
} else {
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
goto __pyx_L47_bool_binop_done;
}
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
__pyx_L47_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":335
* if weights_type == np.float64 or weights_type is None:
@@ -6137,16 +5917,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_float_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":350
* elif weights_type == np.float32:
@@ -6303,16 +6083,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_int32_t_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":365
* elif weights_type == np.int32:
@@ -6470,9 +6250,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.float64
*/
/*else*/ {
- __pyx_t_3 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L46:;
@@ -6493,16 +6273,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 382, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":384
* elif sample_type == np.float32:
@@ -6511,25 +6291,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_double_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 384, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!__pyx_t_2) {
} else {
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
goto __pyx_L50_bool_binop_done;
}
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
__pyx_L50_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":386
* if weights_type == np.float64 or weights_type is None:
@@ -6686,16 +6466,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_float_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":401
* elif weights_type == np.float32:
@@ -6852,16 +6632,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_int32_t_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 414, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 414, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 414, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 414, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":416
* elif weights_type == np.int32:
@@ -7019,9 +6799,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.float32
*/
/*else*/ {
- __pyx_t_3 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 430, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 430, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L49:;
@@ -7042,16 +6822,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 433, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 433, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 433, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 433, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 433, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 433, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 433, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":435
* elif sample_type == np.int32:
@@ -7060,25 +6840,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_double_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 435, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 435, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 435, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 435, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 435, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 435, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!__pyx_t_1) {
} else {
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
goto __pyx_L53_bool_binop_done;
}
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
__pyx_L53_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":437
* if weights_type == np.float64 or weights_type is None:
@@ -7235,16 +7015,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_float_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 450, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 450, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 450, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":452
* elif weights_type == np.float32:
@@ -7401,16 +7181,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_int32_t_double(sample_c,
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 465, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
+ __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 465, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":467
* elif weights_type == np.int32:
@@ -7568,9 +7348,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.int32:
*/
/*else*/ {
- __pyx_t_3 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 481, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L52:;
@@ -7592,9 +7372,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif weighted_histo is None or weighted_histo.dtype == np.double:
*/
/*else*/ {
- __pyx_t_3 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 485, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 485, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_L45:;
@@ -7615,19 +7395,19 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if sample_type == np.float64:
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 488, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 488, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 488, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 488, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_t_3, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 488, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 488, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 488, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 488, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_t_10, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 488, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 488, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":490
* elif weighted_histo.dtype == np.float32:
@@ -7636,16 +7416,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 490, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 490, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 490, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 490, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":492
* if sample_type == np.float64:
@@ -7654,25 +7434,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_double_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 492, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 492, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 492, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 492, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 492, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (!__pyx_t_2) {
} else {
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
goto __pyx_L57_bool_binop_done;
}
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
__pyx_L57_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":494
* if weights_type == np.float64 or weights_type is None:
@@ -7829,16 +7609,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_float_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":509
* elif weights_type == np.float32:
@@ -7995,16 +7775,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_double_int32_t_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 522, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 522, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 522, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 522, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 522, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 522, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 522, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 522, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":524
* elif weights_type == np.int32:
@@ -8162,9 +7942,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.float64
*/
/*else*/ {
- __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 538, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 538, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L56:;
@@ -8185,16 +7965,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 541, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 541, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 541, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 541, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 541, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 541, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 541, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 541, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":543
* elif sample_type == np.float32:
@@ -8203,25 +7983,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_double_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 543, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 543, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 543, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 543, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 543, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 543, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (!__pyx_t_1) {
} else {
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
goto __pyx_L60_bool_binop_done;
}
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
__pyx_L60_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":545
* if weights_type == np.float64 or weights_type is None:
@@ -8378,16 +8158,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_float_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 558, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 558, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 558, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 558, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 558, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 558, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 558, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 558, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":560
* elif weights_type == np.float32:
@@ -8544,16 +8324,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_float_int32_t_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 573, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 573, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 573, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 573, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 573, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 573, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 573, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 573, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":575
* elif weights_type == np.int32:
@@ -8711,9 +8491,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.float32
*/
/*else*/ {
- __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 589, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 589, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L59:;
@@ -8734,16 +8514,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* if weights_type == np.float64 or weights_type is None:
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 592, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 592, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 592, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 592, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 592, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sample_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 592, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":594
* elif sample_type == np.int32:
@@ -8752,25 +8532,25 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_double_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 594, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 594, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 594, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 594, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 594, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 594, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 594, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (!__pyx_t_2) {
} else {
- __pyx_t_7 = __pyx_t_2;
+ __pyx_t_6 = __pyx_t_2;
goto __pyx_L63_bool_binop_done;
}
__pyx_t_2 = (__pyx_cur_scope->__pyx_v_weights_type == Py_None);
__pyx_t_1 = (__pyx_t_2 != 0);
- __pyx_t_7 = __pyx_t_1;
+ __pyx_t_6 = __pyx_t_1;
__pyx_L63_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":596
* if weights_type == np.float64 or weights_type is None:
@@ -8927,16 +8707,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_float_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":611
* elif weights_type == np.float32:
@@ -9093,16 +8873,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* rc = _histogramnd_int32_t_int32_t_float(sample_c,
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 624, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 624, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 624, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 624, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__pyx_t_7) {
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_weights_type, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 624, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":626
* elif weights_type == np.int32:
@@ -9260,9 +9040,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # endif sample_type == np.int32:
*/
/*else*/ {
- __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 640, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 640, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L62:;
@@ -9284,9 +9064,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # end elseif weighted_histo.dtype == np.float32:
*/
/*else*/ {
- __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 644, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 644, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L55:;
@@ -9308,9 +9088,9 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if rc != histogramnd_c.HISTO_OK:
*/
/*else*/ {
- __pyx_t_10 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 649, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __pyx_pf_4silx_4math_12chistogramnd_12chistogramnd_raise_unsupported_type(__pyx_v_raise_unsupported_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 649, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_L42:;
@@ -9321,8 +9101,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* if rc == histogramnd_c.HISTO_ERR_ALLOC:
* raise MemoryError('histogramnd failed to allocate memory.')
*/
- __pyx_t_7 = ((__pyx_v_rc != HISTO_OK) != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = ((__pyx_v_rc != HISTO_OK) != 0);
+ if (__pyx_t_6) {
/* "silx/math/chistogramnd.pyx":652
*
@@ -9331,8 +9111,8 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* raise MemoryError('histogramnd failed to allocate memory.')
* else:
*/
- __pyx_t_7 = ((__pyx_v_rc == HISTO_ERR_ALLOC) != 0);
- if (unlikely(__pyx_t_7)) {
+ __pyx_t_6 = ((__pyx_v_rc == HISTO_ERR_ALLOC) != 0);
+ if (unlikely(__pyx_t_6)) {
/* "silx/math/chistogramnd.pyx":653
* if rc != histogramnd_c.HISTO_OK:
@@ -9341,10 +9121,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* else:
* raise Exception('histogramnd returned an error : {0}'
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 653, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_Raise(__pyx_t_10, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 653, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_Raise(__pyx_t_8, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_ERR(0, 653, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":652
@@ -9372,56 +9152,26 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* edges = []
*/
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histogramnd_returned_an_error_0, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_12 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_12)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_12);
+ __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histogramnd_returned_an_error_0, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_10 = __Pyx_PyInt_From_long(__pyx_v_rc); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_11, function);
- }
- }
- if (!__pyx_t_12) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_12); __pyx_t_12 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 656, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_12, function);
}
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_4, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 656, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* "silx/math/chistogramnd.pyx":655
* raise MemoryError('histogramnd failed to allocate memory.')
@@ -9430,11 +9180,11 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* ''.format(rc))
*
*/
- __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 655, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_11, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_12 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 655, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_Raise(__pyx_t_12, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__PYX_ERR(0, 655, __pyx_L1_error)
}
@@ -9454,10 +9204,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* offset = 0
* for i_dim in range(n_dims):
*/
- __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 658, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_v_edges = ((PyObject*)__pyx_t_11);
- __pyx_t_11 = 0;
+ __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 658, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_v_edges = ((PyObject*)__pyx_t_12);
+ __pyx_t_12 = 0;
/* "silx/math/chistogramnd.pyx":659
*
@@ -9476,39 +9226,39 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* edges.append(bin_edges[offset:offset + n_bins[i_dim] + 1])
* offset += n_bins[i_dim] + 1
*/
- __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_n_dims); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 660, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
- __pyx_t_10 = __pyx_t_11; __Pyx_INCREF(__pyx_t_10); __pyx_t_8 = 0;
+ __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_n_dims); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) {
+ __pyx_t_8 = __pyx_t_12; __Pyx_INCREF(__pyx_t_8); __pyx_t_7 = 0;
__pyx_t_33 = NULL;
} else {
- __pyx_t_8 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 660, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_33 = Py_TYPE(__pyx_t_10)->tp_iternext; if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __pyx_t_7 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_33 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 660, __pyx_L1_error)
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
for (;;) {
if (likely(!__pyx_t_33)) {
- if (likely(PyList_CheckExact(__pyx_t_10))) {
- if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_10)) break;
+ if (likely(PyList_CheckExact(__pyx_t_8))) {
+ if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_11 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __pyx_t_12 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_7); __Pyx_INCREF(__pyx_t_12); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
#else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 660, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = PySequence_ITEM(__pyx_t_8, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
#endif
} else {
- if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
+ if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_t_11); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_7); __Pyx_INCREF(__pyx_t_12); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
#else
- __pyx_t_11 = PySequence_ITEM(__pyx_t_10, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 660, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_12 = PySequence_ITEM(__pyx_t_8, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 660, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
#endif
}
} else {
- __pyx_t_11 = __pyx_t_33(__pyx_t_10);
- if (unlikely(!__pyx_t_11)) {
+ __pyx_t_12 = __pyx_t_33(__pyx_t_8);
+ if (unlikely(!__pyx_t_12)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
@@ -9516,10 +9266,10 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
}
break;
}
- __Pyx_GOTREF(__pyx_t_11);
+ __Pyx_GOTREF(__pyx_t_12);
}
- __Pyx_XDECREF_SET(__pyx_v_i_dim, __pyx_t_11);
- __pyx_t_11 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_i_dim, __pyx_t_12);
+ __pyx_t_12 = 0;
/* "silx/math/chistogramnd.pyx":661
* offset = 0
@@ -9528,19 +9278,19 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* offset += n_bins[i_dim] + 1
*
*/
- __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_5 = PyNumber_Add(__pyx_v_offset, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_bin_edges, 0, 0, &__pyx_v_offset, &__pyx_t_11, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_34 = __Pyx_PyList_Append(__pyx_v_edges, __pyx_t_5); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __pyx_t_10 = PyNumber_Add(__pyx_v_offset, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_10, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_bin_edges, 0, 0, &__pyx_v_offset, &__pyx_t_12, NULL, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __pyx_t_34 = __Pyx_PyList_Append(__pyx_v_edges, __pyx_t_10); if (unlikely(__pyx_t_34 == ((int)-1))) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":662
* for i_dim in range(n_dims):
@@ -9549,16 +9299,16 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
*
* return histo, weighted_histo, tuple(edges)
*/
- __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 662, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_offset, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF_SET(__pyx_v_offset, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_t_10, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_12);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyNumber_InPlaceAdd(__pyx_v_offset, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 662, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+ __Pyx_DECREF_SET(__pyx_v_offset, __pyx_t_10);
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd.pyx":660
* edges = []
@@ -9568,7 +9318,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* offset += n_bins[i_dim] + 1
*/
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/math/chistogramnd.pyx":664
* offset += n_bins[i_dim] + 1
@@ -9578,21 +9328,21 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
* # =====================
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_10 = PyList_AsTuple(__pyx_v_edges); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 664, __pyx_L1_error)
+ __pyx_t_8 = PyList_AsTuple(__pyx_v_edges); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 664, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 664, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 664, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_histo);
__Pyx_GIVEREF(__pyx_v_histo);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_histo);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_histo);
__Pyx_INCREF(__pyx_v_weighted_histo);
__Pyx_GIVEREF(__pyx_v_weighted_histo);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_weighted_histo);
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_weighted_histo);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_8);
+ __pyx_t_8 = 0;
+ __pyx_r = __pyx_t_10;
__pyx_t_10 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
goto __pyx_L0;
/* "silx/math/chistogramnd.pyx":36
@@ -9608,7 +9358,7 @@ static PyObject *__pyx_pf_4silx_4math_12chistogramnd_chistogramnd(CYTHON_UNUSED
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
@@ -11531,7 +11281,7 @@ static int __pyx_f_4silx_4math_12chistogramnd__histogramnd_int32_t_int32_t_float
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -11569,8 +11319,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -11579,7 +11330,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -11588,7 +11339,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -11597,7 +11348,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -11606,11 +11357,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -11620,53 +11371,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 229, __pyx_L1_error)
+ __PYX_ERR(1, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -11676,49 +11427,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 233, __pyx_L1_error)
+ __PYX_ERR(1, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -11727,7 +11478,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -11736,7 +11487,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11746,7 +11497,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -11755,7 +11506,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -11764,7 +11515,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -11776,7 +11527,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -11785,7 +11536,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -11795,7 +11546,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -11805,7 +11556,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -11815,7 +11566,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -11826,7 +11577,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -11835,7 +11586,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -11844,7 +11595,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -11853,28 +11604,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -11887,7 +11639,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -11897,7 +11649,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -11907,7 +11659,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11927,7 +11679,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -11944,7 +11696,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11953,20 +11705,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 263, __pyx_L1_error)
+ __PYX_ERR(1, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -11975,7 +11727,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -11986,206 +11738,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 282, __pyx_L1_error)
+ __PYX_ERR(1, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -12194,7 +11946,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -12204,7 +11956,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -12213,7 +11965,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -12223,7 +11975,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -12232,7 +11984,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -12241,17 +11993,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(1, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -12261,7 +12013,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -12274,7 +12026,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -12293,7 +12045,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -12317,7 +12069,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -12327,7 +12079,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -12336,7 +12088,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -12345,7 +12097,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -12355,7 +12107,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -12364,7 +12116,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -12373,7 +12125,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -12385,7 +12137,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -12399,7 +12151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -12407,13 +12159,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -12432,7 +12184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -12446,7 +12198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -12454,13 +12206,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -12479,7 +12231,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -12493,7 +12245,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -12501,13 +12253,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -12526,7 +12278,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -12540,7 +12292,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -12548,13 +12300,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -12573,7 +12325,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -12587,7 +12339,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -12595,13 +12347,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -12620,7 +12372,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -12634,7 +12386,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -12644,7 +12396,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -12656,7 +12408,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -12665,7 +12417,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -12679,7 +12431,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -12694,7 +12446,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -12723,7 +12475,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -12732,7 +12484,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -12741,7 +12493,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -12750,21 +12502,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(1, 805, __pyx_L1_error)
+ __PYX_ERR(1, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -12773,15 +12525,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 806, __pyx_L1_error)
+ __PYX_ERR(1, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -12794,7 +12546,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(1, 807, __pyx_L1_error)
+ __PYX_ERR(1, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -12802,51 +12554,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 810, __pyx_L1_error)
+ __PYX_ERR(1, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -12855,7 +12607,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12875,7 +12627,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -12892,7 +12644,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12901,20 +12653,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 814, __pyx_L1_error)
+ __PYX_ERR(1, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -12923,7 +12675,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -12931,15 +12683,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -12948,7 +12700,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -12957,7 +12709,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -12968,7 +12720,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -12978,7 +12730,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -12988,19 +12740,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -13010,20 +12762,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 834, __pyx_L1_error)
+ __PYX_ERR(1, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -13032,252 +12784,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -13286,18 +13038,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -13306,18 +13058,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -13326,25 +13078,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -13352,18 +13104,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 855, __pyx_L1_error)
+ __PYX_ERR(1, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -13372,7 +13124,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -13382,7 +13134,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -13390,12 +13142,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -13405,7 +13157,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -13415,7 +13167,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -13440,166 +13192,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -13609,7 +13315,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -13630,7 +13336,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13646,16 +13352,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13669,7 +13375,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -13679,28 +13385,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __PYX_ERR(1, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13715,7 +13421,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -13738,7 +13444,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -13759,7 +13465,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13775,16 +13481,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13798,7 +13504,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -13808,28 +13514,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __PYX_ERR(1, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13844,7 +13550,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -13867,7 +13573,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -13888,7 +13594,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13904,16 +13610,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13927,7 +13633,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -13936,26 +13642,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __PYX_ERR(1, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -13970,7 +13676,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -14141,10 +13847,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -14190,7 +13896,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14222,7 +13928,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14255,13 +13961,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -14280,13 +13998,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -14299,8 +14017,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(2, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -14337,10 +14055,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(2, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -14359,21 +14077,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -14392,24 +14110,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 152, __pyx_L1_error)
@@ -14440,7 +14158,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -14534,11 +14252,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 163, __pyx_L1_error)
@@ -14611,7 +14329,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -14661,8 +14379,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(2, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -14716,7 +14434,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -14852,7 +14570,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15568,7 +15286,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15621,7 +15339,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16097,7 +15815,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -16143,7 +15861,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -17265,7 +16983,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -18292,7 +18010,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -18648,7 +18366,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -19188,7 +18906,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -19302,7 +19020,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__36, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__30, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -20303,7 +20021,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20356,7 +20074,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20707,9 +20425,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__39);
- __Pyx_GIVEREF(__pyx_slice__39);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__39);
+ __Pyx_INCREF(__pyx_slice__33);
+ __Pyx_GIVEREF(__pyx_slice__33);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__33);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 677, __pyx_L1_error)
@@ -20742,7 +20460,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__40); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__33); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -20792,7 +20510,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -20882,9 +20600,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__41);
- __Pyx_GIVEREF(__pyx_slice__41);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__41);
+ __Pyx_INCREF(__pyx_slice__33);
+ __Pyx_GIVEREF(__pyx_slice__33);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__33);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 691, __pyx_L1_error)
@@ -21008,7 +20726,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -23171,7 +22889,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -23224,7 +22942,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -25105,7 +24823,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -25138,41 +24855,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -25192,7 +24879,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -25219,7 +24905,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -25256,41 +24941,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -25331,7 +24986,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -26439,7 +26093,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -26520,8 +26174,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -26578,41 +26231,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26635,48 +26258,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -26689,8 +26284,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -26737,7 +26332,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -26767,7 +26361,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -26838,41 +26431,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26900,7 +26463,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -27726,6 +27288,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_02_10_2017, __pyx_k_02_10_2017, sizeof(__pyx_k_02_10_2017), 0, 0, 1, 0},
@@ -27907,13 +27478,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 157, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 653, __pyx_L1_error)
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 660, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 300, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1000, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1038, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 150, __pyx_L1_error)
__pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(2, 399, __pyx_L1_error)
__pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(2, 608, __pyx_L1_error)
@@ -27923,7 +27494,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -28026,17 +27597,6 @@ static int __Pyx_InitCachedConstants(void) {
__Pyx_GOTREF(__pyx_tuple__9);
__Pyx_GIVEREF(__pyx_tuple__9);
- /* "silx/math/chistogramnd.pyx":289
- *
- * sample_type = sample.dtype
- * sample_type = sample_type.newbyteorder('N') # <<<<<<<<<<<<<<
- *
- * n_elem = sample.size // n_dims
- */
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
-
/* "silx/math/chistogramnd.pyx":299
* # functions. so I have to explicitly list them all...
*
@@ -28044,29 +27604,7 @@ static int __Pyx_InitCachedConstants(void) {
* raise TypeError('Case not supported - sample:{0} '
* 'and weights:{1}.'
*/
- __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_pyx, __pyx_n_s_raise_unsupported_type, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 299, __pyx_L1_error)
-
- /* "silx/math/chistogramnd.pyx":308
- *
- * weights_c = (np.ascontiguousarray(weights.reshape((weights.size,)),
- * dtype=weights.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- * if weights is not None else None)
- *
- */
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 308, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
-
- /* "silx/math/chistogramnd.pyx":325
- *
- * bin_edges_c = np.ascontiguousarray(bin_edges.reshape((bin_edges.size,)),
- * dtype=bin_edges.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * rc = 0
- */
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_pyx, __pyx_n_s_raise_unsupported_type, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 299, __pyx_L1_error)
/* "silx/math/chistogramnd.pyx":653
* if rc != histogramnd_c.HISTO_OK:
@@ -28075,106 +27613,106 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* raise Exception('histogramnd returned an error : {0}'
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_histogramnd_failed_to_allocate_m); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 653, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_histogramnd_failed_to_allocate_m); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 653, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "View.MemoryView":132
*
@@ -28183,9 +27721,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":135
*
@@ -28194,20 +27732,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":147
*
@@ -28216,9 +27743,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -28227,9 +27754,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -28238,9 +27765,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -28248,18 +27775,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -28268,9 +27795,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -28279,9 +27806,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -28290,9 +27817,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -28301,9 +27828,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -28312,12 +27839,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__36 = PyTuple_New(1); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
+ __pyx_tuple__30 = PyTuple_New(1); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__36, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ PyTuple_SET_ITEM(__pyx_tuple__30, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -28325,18 +27852,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -28345,9 +27872,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__39 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(2, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__39);
- __Pyx_GIVEREF(__pyx_slice__39);
+ __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(2, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__33);
+ __Pyx_GIVEREF(__pyx_slice__33);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -28356,9 +27883,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__40 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(2, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__40);
- __Pyx_GIVEREF(__pyx_slice__40);
+ __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(2, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__33);
+ __Pyx_GIVEREF(__pyx_slice__33);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -28367,9 +27894,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__41 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(2, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__41);
- __Pyx_GIVEREF(__pyx_slice__41);
+ __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(2, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__33);
+ __Pyx_GIVEREF(__pyx_slice__33);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -28378,9 +27905,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -28388,18 +27915,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
/* "silx/math/chistogramnd.pyx":36
*
@@ -28408,10 +27935,10 @@ static int __Pyx_InitCachedConstants(void) {
* histo_range,
* n_bins,
*/
- __pyx_tuple__45 = PyTuple_Pack(34, __pyx_n_s_sample, __pyx_n_s_histo_range, __pyx_n_s_n_bins, __pyx_n_s_weights, __pyx_n_s_weight_min, __pyx_n_s_weight_max, __pyx_n_s_last_bin_closed, __pyx_n_s_histo, __pyx_n_s_weighted_histo, __pyx_n_s_wh_dtype, __pyx_n_s_s_shape, __pyx_n_s_n_dims, __pyx_n_s_w_shape, __pyx_n_s_weights_type, __pyx_n_s_i_histo_range, __pyx_n_s_err_histo_range, __pyx_n_s_output_shape, __pyx_n_s_option_flags, __pyx_n_s_sample_type, __pyx_n_s_n_elem, __pyx_n_s_bin_edges, __pyx_n_s_raise_unsupported_type, __pyx_n_s_raise_unsupported_type, __pyx_n_s_sample_c, __pyx_n_s_weights_c, __pyx_n_s_histo_range_c, __pyx_n_s_n_bins_c, __pyx_n_s_histo_c, __pyx_n_s_cumul_c, __pyx_n_s_bin_edges_c, __pyx_n_s_rc, __pyx_n_s_edges, __pyx_n_s_offset, __pyx_n_s_i_dim); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 36, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
- __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(10, 0, 34, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_pyx, __pyx_n_s_chistogramnd, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 36, __pyx_L1_error)
+ __pyx_tuple__37 = PyTuple_Pack(34, __pyx_n_s_sample, __pyx_n_s_histo_range, __pyx_n_s_n_bins, __pyx_n_s_weights, __pyx_n_s_weight_min, __pyx_n_s_weight_max, __pyx_n_s_last_bin_closed, __pyx_n_s_histo, __pyx_n_s_weighted_histo, __pyx_n_s_wh_dtype, __pyx_n_s_s_shape, __pyx_n_s_n_dims, __pyx_n_s_w_shape, __pyx_n_s_weights_type, __pyx_n_s_i_histo_range, __pyx_n_s_err_histo_range, __pyx_n_s_output_shape, __pyx_n_s_option_flags, __pyx_n_s_sample_type, __pyx_n_s_n_elem, __pyx_n_s_bin_edges, __pyx_n_s_raise_unsupported_type, __pyx_n_s_raise_unsupported_type, __pyx_n_s_sample_c, __pyx_n_s_weights_c, __pyx_n_s_histo_range_c, __pyx_n_s_n_bins_c, __pyx_n_s_histo_c, __pyx_n_s_cumul_c, __pyx_n_s_bin_edges_c, __pyx_n_s_rc, __pyx_n_s_edges, __pyx_n_s_offset, __pyx_n_s_i_dim); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 36, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(10, 0, 34, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_pyx, __pyx_n_s_chistogramnd, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 36, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -28420,9 +27947,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(2, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "View.MemoryView":286
*
@@ -28431,9 +27958,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(2, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -28442,9 +27969,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(2, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
/* "View.MemoryView":290
*
@@ -28453,9 +27980,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(2, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
/* "View.MemoryView":291
*
@@ -28464,19 +27991,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(2, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(2, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
- __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_tuple__44 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__44);
+ __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -28484,7 +28011,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -28496,13 +28023,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -28595,23 +28122,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -28646,15 +28187,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -28667,7 +28199,30 @@ __Pyx_PyMODINIT_FUNC PyInit_chistogramnd(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -28680,8 +28235,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -28702,7 +28259,7 @@ bad:
}
-static int __pyx_pymod_exec_chistogramnd(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_chistogramnd(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -28710,7 +28267,11 @@ static int __pyx_pymod_exec_chistogramnd(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_2[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'chistogramnd' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -28725,6 +28286,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_chistogramnd(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -28779,7 +28343,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__chistogramnd) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -28893,7 +28457,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_1);
@@ -28907,7 +28471,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_1);
@@ -28921,7 +28485,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_1);
@@ -28935,7 +28499,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_1);
@@ -28949,7 +28513,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1);
@@ -29033,9 +28597,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_1);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.chistogramnd", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.chistogramnd", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.chistogramnd");
}
@@ -29056,9 +28620,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -29245,7 +28809,6 @@ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -29263,7 +28826,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -29371,7 +28934,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -29379,9 +28942,9 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
@@ -29650,43 +29213,85 @@ bad:
#endif
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
+ }
+ PyErr_Clear();
#endif
- result = __Pyx_GetBuiltinName(name);
+ return __Pyx_GetBuiltinName(name);
+}
+
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
}
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
return result;
}
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -29696,7 +29301,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -29711,7 +29316,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29729,7 +29334,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29745,7 +29350,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -29753,7 +29358,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -29782,9 +29387,8 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -29792,89 +29396,66 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyObjectSetAttrStr */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
PyTypeObject* tp = Py_TYPE(obj);
if (likely(tp->tp_setattro))
@@ -29887,8 +29468,75 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
}
#endif
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
+ if (op1 == op2) {
+ Py_RETURN_FALSE;
+ }
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_CheckExact(op1))) {
+ const long b = intval;
+ long a = PyInt_AS_LONG(op1);
+ if (a != b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+ if (likely(PyLong_CheckExact(op1))) {
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
+ const digit* digits = ((PyLongObject*)op1)->ob_digit;
+ if (intval == 0) {
+ if (size != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_TRUE;
+ intval = -intval;
+ size = -size;
+ } else {
+ if (size <= 0)
+ Py_RETURN_TRUE;
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ if (PyFloat_CheckExact(op1)) {
+ const long b = intval;
+ double a = PyFloat_AS_DOUBLE(op1);
+ if ((double)a != (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ return (
+ PyObject_RichCompare(op1, op2, Py_NE));
+}
+
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -29896,10 +29544,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -29909,7 +29558,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#endif
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -29948,7 +29597,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -29970,7 +29619,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -29982,7 +29631,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -29997,14 +29646,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -30016,20 +29666,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -30051,7 +29702,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -30062,7 +29713,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -30082,19 +29733,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -30123,7 +29774,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -30139,7 +29790,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -30153,7 +29804,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -30169,7 +29820,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -30183,7 +29834,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -30199,7 +29850,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -30379,7 +30030,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -30542,7 +30193,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -30680,7 +30331,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -30802,7 +30453,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -30831,7 +30482,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* SliceObject */
- static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
Py_ssize_t cstart, Py_ssize_t cstop,
PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
@@ -30928,25 +30579,25 @@ bad:
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -30958,13 +30609,29 @@ bad:
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -30976,13 +30643,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -30998,7 +30666,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -31023,11 +30691,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -31060,13 +30729,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -31093,7 +30765,7 @@ bad:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -31114,7 +30786,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -31161,7 +30833,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -31240,6 +30912,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -31260,7 +30935,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -31268,7 +30943,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -31281,7 +30956,7 @@ return_ne:
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -31314,7 +30989,7 @@ return_ne:
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -31329,16 +31004,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -31363,7 +31039,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -31410,7 +31086,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -31428,7 +31104,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -31483,14 +31159,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -31500,12 +31204,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -31513,7 +31217,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -31555,7 +31259,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -31569,7 +31273,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -31587,7 +31291,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -31627,7 +31331,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -31637,7 +31341,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -31655,7 +31359,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -31730,9 +31434,70 @@ GOOD:
return ret;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -31745,7 +31510,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -31762,7 +31529,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -31771,7 +31538,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -31851,7 +31618,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -31959,8 +31726,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -31982,7 +31749,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -32018,7 +31785,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -32031,8 +31798,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -32062,7 +31829,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -32084,8 +31851,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_histo_opt_type(histo_opt_type value) {
- const histo_opt_type neg_one = (histo_opt_type) -1, const_zero = (histo_opt_type) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_histo_opt_type(histo_opt_type value) {
+ const histo_opt_type neg_one = (histo_opt_type) ((histo_opt_type) 0 - (histo_opt_type) 1), const_zero = (histo_opt_type) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(histo_opt_type) < sizeof(long)) {
@@ -32115,7 +31882,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -32135,7 +31902,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -32270,7 +32037,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -32290,7 +32057,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -32425,8 +32192,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -32456,8 +32223,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -32487,7 +32254,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -32554,8 +32321,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -32743,8 +32510,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -32932,8 +32699,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -33121,8 +32888,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -33310,7 +33077,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -33321,7 +33088,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -33823,7 +33590,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -33864,7 +33631,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -34046,7 +33813,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -34069,7 +33836,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -34092,7 +33859,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -34115,7 +33882,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -34138,7 +33905,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -34161,7 +33928,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -34176,91 +33943,8 @@ __pyx_fail:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -34369,6 +34053,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -34446,7 +34137,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/chistogramnd_lut.c b/silx/math/chistogramnd_lut.c
index edf413b..7b59f0d 100644
--- a/silx/math/chistogramnd_lut.c
+++ b/silx/math/chistogramnd_lut.c
@@ -1,22 +1,22 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h"
- ],
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h"
+ ],
"include_dirs": [
- "silx/math/histogramnd/include",
- "/usr/lib/python2.7/dist-packages/numpy/core/include"
- ],
- "language": "c",
- "name": "silx.math.chistogramnd_lut",
+ "silx/math/histogramnd/include",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include"
+ ],
+ "language": "c",
+ "name": "silx.math.chistogramnd_lut",
"sources": [
"silx/math/chistogramnd_lut.pyx"
]
- },
+ },
"module_name": "silx.math.chistogramnd_lut"
}
END: Cython Metadata */
@@ -28,7 +28,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -99,6 +100,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -136,6 +141,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -189,11 +198,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -329,6 +344,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -342,15 +360,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -458,8 +501,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -618,6 +661,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -676,6 +722,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -756,7 +803,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -929,7 +976,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -938,7 +985,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -947,7 +994,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -956,7 +1003,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -965,7 +1012,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -974,7 +1021,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -983,7 +1030,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -992,7 +1039,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1001,7 +1048,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1010,7 +1057,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1019,7 +1066,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1028,7 +1075,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1037,7 +1084,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1046,7 +1093,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1055,7 +1102,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1064,7 +1111,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1073,7 +1120,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1082,7 +1129,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1091,7 +1138,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1100,7 +1147,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1109,7 +1156,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1148,7 +1195,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1157,7 +1204,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1166,7 +1213,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1175,7 +1222,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1418,7 +1465,25 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
int is_list, int wraparound, int boundscheck);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
@@ -1436,6 +1501,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1445,6 +1522,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1453,13 +1533,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
@@ -1500,6 +1578,11 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1616,6 +1699,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
@@ -1830,6 +1916,17 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable);
/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
@@ -1868,6 +1965,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -2161,21 +2259,6 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2301,8 +2384,8 @@ static const char __pyx_k_id[] = "id";
static const char __pyx_k_np[] = "np";
static const char __pyx_k_rc[] = "rc";
static const char __pyx_k_MIT[] = "MIT";
-static const char __pyx_k__21[] = "()";
-static const char __pyx_k__23[] = "|";
+static const char __pyx_k__12[] = "()";
+static const char __pyx_k__13[] = "|";
static const char __pyx_k_any[] = "any";
static const char __pyx_k_end[] = "end";
static const char __pyx_k_h_c[] = "h_c";
@@ -2616,8 +2699,8 @@ static PyObject *__pyx_kp_s_Type_not_supported_sample_0;
static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_View_MemoryView;
-static PyObject *__pyx_kp_s__21;
-static PyObject *__pyx_kp_s__23;
+static PyObject *__pyx_kp_s__12;
+static PyObject *__pyx_kp_s__13;
static PyObject *__pyx_n_s_allocate_buffer;
static PyObject *__pyx_n_s_any;
static PyObject *__pyx_n_s_arange;
@@ -2977,21 +3060,17 @@ static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_2147483648;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_tuple_;
+static PyObject *__pyx_slice__5;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
-static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__10;
-static PyObject *__pyx_slice__55;
-static PyObject *__pyx_slice__56;
-static PyObject *__pyx_slice__57;
+static PyObject *__pyx_slice__37;
+static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
-static PyObject *__pyx_tuple__12;
-static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
@@ -2999,7 +3078,9 @@ static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
@@ -3013,42 +3094,24 @@ static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__51;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__53;
static PyObject *__pyx_tuple__54;
-static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__59;
-static PyObject *__pyx_tuple__60;
-static PyObject *__pyx_tuple__61;
-static PyObject *__pyx_tuple__63;
-static PyObject *__pyx_tuple__65;
-static PyObject *__pyx_tuple__67;
-static PyObject *__pyx_tuple__69;
-static PyObject *__pyx_tuple__70;
-static PyObject *__pyx_tuple__71;
-static PyObject *__pyx_tuple__72;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_tuple__74;
-static PyObject *__pyx_codeobj__62;
-static PyObject *__pyx_codeobj__64;
-static PyObject *__pyx_codeobj__66;
-static PyObject *__pyx_codeobj__68;
-static PyObject *__pyx_codeobj__75;
+static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__48;
+static PyObject *__pyx_codeobj__55;
/* Late includes */
/* "silx/math/chistogramnd_lut.pyx":58
@@ -3062,7 +3125,7 @@ static PyObject *__pyx_codeobj__75;
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_16chistogramnd_lut_histogramnd_get_lut[] = "histogramnd_get_lut(sample, histo_range, n_bins, last_bin_closed=False)\nTBD\n\n :param sample:\n The data to be histogrammed.\n Its shape must be either (N,) if it contains one dimensional\n coordinates, or an (N, D) array where the rows are the\n coordinates of points in a D dimensional space.\n The following dtypes are supported : :class:`numpy.float64`,\n :class:`numpy.float32`, :class:`numpy.int32`.\n :type sample: :class:`numpy.array`\n\n :param histo_range:\n A (N, 2) array containing the histogram range along each dimension,\n where N is the sample's number of dimensions.\n :type histo_range: array_like\n\n :param n_bins:\n The number of bins :\n * a scalar (same number of bins for all dimensions)\n * a D elements array (number of bins for each dimensions)\n :type n_bins: scalar or array_like\n\n :param last_bin_closed:\n By default the last bin is half\n open (i.e.: [x,y) ; x included, y\n excluded), like all the other bins.\n Set this parameter to true if you want\n the LAST bin to be closed.\n :type last_bin_closed: *optional*, :class:`python.boolean`\n\n :return: The indices for each sample and the histogram (bin counts).\n :rtype: tuple : (:class:`numpy.array`, :class:`numpy.array`)\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut = {"histogramnd_get_lut", (PyCFunction)__pyx_pw_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_histogramnd_get_lut};
+static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut = {"histogramnd_get_lut", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_histogramnd_get_lut};
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_1histogramnd_get_lut(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_sample = 0;
PyObject *__pyx_v_histo_range = 0;
@@ -3193,18 +3256,17 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
Py_ssize_t __pyx_t_2;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
+ int __pyx_t_5;
int __pyx_t_6;
- int __pyx_t_7;
+ PyObject *__pyx_t_7 = NULL;
int __pyx_t_8;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
PyObject *__pyx_t_11 = NULL;
PyObject *__pyx_t_12 = NULL;
PyObject *__pyx_t_13 = NULL;
- PyObject *__pyx_t_14 = NULL;
- PyObject *(*__pyx_t_15)(PyObject *);
- int __pyx_t_16;
+ PyObject *(*__pyx_t_14)(PyObject *);
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("histogramnd_get_lut", 0);
__Pyx_INCREF(__pyx_v_histo_range);
__Pyx_INCREF(__pyx_v_n_bins);
@@ -3258,7 +3320,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* err_histo_range = False
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -3273,38 +3335,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_histo_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_histo_range};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_histo_range};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_histo_range);
- __Pyx_GIVEREF(__pyx_v_histo_range);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_histo_range);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_histo_range) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_histo_range);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_1);
__pyx_t_1 = 0;
@@ -3327,9 +3361,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*/
__pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_v_n_dims, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 107, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":108
*
@@ -3342,9 +3376,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_tuple_, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 108, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 108, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_6) {
+ if (__pyx_t_5) {
goto __pyx_L4;
}
@@ -3359,9 +3393,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_tuple__2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 110, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 110, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_6) {
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":111
* pass
@@ -3370,12 +3404,24 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* else:
* err_histo_range = True
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/chistogramnd_lut.pyx":110
* if histo_range.shape == (2,):
@@ -3416,32 +3462,33 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* err_histo_range = True
*
*/
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_n_dims, __pyx_int_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 114, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (__pyx_t_7) {
+ __pyx_t_1 = __Pyx_PyInt_NeObjC(__pyx_v_n_dims, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (__pyx_t_6) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_5 = __pyx_t_6;
goto __pyx_L5_bool_binop_done;
}
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_n_dims);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_dims);
__Pyx_INCREF(__pyx_int_2);
__Pyx_GIVEREF(__pyx_int_2);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_2);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 114, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __pyx_t_7;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __pyx_t_6;
__pyx_L5_bool_binop_done:;
- if (__pyx_t_6) {
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":115
* err_histo_range = True
@@ -3469,8 +3516,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* raise ValueError('<histo_range> error : expected {n_dims} sets of '
* 'lower and upper bin edges, '
*/
- __pyx_t_6 = (__pyx_v_err_histo_range != 0);
- if (unlikely(__pyx_t_6)) {
+ __pyx_t_5 = (__pyx_v_err_histo_range != 0);
+ if (unlikely(__pyx_t_5)) {
/* "silx/math/chistogramnd_lut.pyx":123
* '(provided <sample> contains '
@@ -3479,11 +3526,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* n_dims=n_dims))
*
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histo_range_error_expected_n_di, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_histo_range, __pyx_v_i_histo_range) < 0) __PYX_ERR(0, 123, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histo_range_error_expected_n_di, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_histo_range, __pyx_v_i_histo_range) < 0) __PYX_ERR(0, 123, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":124
* '{n_dims}D values)'
@@ -3492,7 +3539,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* histo_range = np.double(histo_range)
*/
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_n_dims, __pyx_v_n_dims) < 0) __PYX_ERR(0, 123, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_n_dims, __pyx_v_n_dims) < 0) __PYX_ERR(0, 123, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":123
* '(provided <sample> contains '
@@ -3501,10 +3548,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* n_dims=n_dims))
*
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":118
*
@@ -3513,11 +3560,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* 'lower and upper bin edges, '
* 'got the following instead : {histo_range}. '
*/
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 118, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":117
@@ -3536,56 +3583,28 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* # checking n_bins size
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_double); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_histo_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_histo_range};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_histo_range};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_histo_range);
- __Pyx_GIVEREF(__pyx_v_histo_range);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_histo_range);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_1);
- __pyx_t_1 = 0;
+ __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_histo_range) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_histo_range);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":129
*
@@ -3594,26 +3613,26 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* if len(n_bins) == 1:
* n_bins = np.tile(n_bins, n_dims)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_v_n_bins);
- __Pyx_GIVEREF(__pyx_v_n_bins);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_n_bins);
- __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ndmin, __pyx_int_1) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_INCREF(__pyx_v_n_bins);
+ __Pyx_GIVEREF(__pyx_v_n_bins);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_bins);
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ndmin, __pyx_int_1) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_7);
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":130
* # checking n_bins size
@@ -3623,8 +3642,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* elif n_bins.shape != (n_dims,):
*/
__pyx_t_2 = PyObject_Length(__pyx_v_n_bins); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 130, __pyx_L1_error)
- __pyx_t_6 = ((__pyx_t_2 == 1) != 0);
- if (__pyx_t_6) {
+ __pyx_t_5 = ((__pyx_t_2 == 1) != 0);
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":131
* n_bins = np.array(n_bins, ndmin=1)
@@ -3633,58 +3652,58 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* elif n_bins.shape != (n_dims,):
* raise ValueError('n_bins must be either a scalar (same number '
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_tile); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
__pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_n_bins, __pyx_v_n_dims};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
+ if (PyFunction_Check(__pyx_t_4)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_n_bins, __pyx_v_n_dims};
+ __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_n_bins, __pyx_v_n_dims};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_n_bins, __pyx_v_n_dims};
+ __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
+ __pyx_t_3 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__pyx_t_1) {
+ __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
}
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_v_n_bins);
+ PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_v_n_bins);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_n_dims);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_n_dims);
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_n_bins, __pyx_t_7);
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":130
* # checking n_bins size
@@ -3703,19 +3722,19 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* raise ValueError('n_bins must be either a scalar (same number '
* 'of bins for all dimensions) or '
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_n_dims);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 132, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_dims);
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 132, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (unlikely(__pyx_t_6)) {
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 132, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(__pyx_t_5)) {
/* "silx/math/chistogramnd_lut.pyx":133
* n_bins = np.tile(n_bins, n_dims)
@@ -3724,10 +3743,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* 'of bins for all dimensions) or '
* 'an array (number of bins for each '
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 133, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":132
@@ -3747,23 +3766,23 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* raise ValueError('<n_bins> : only positive values allowed.')
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_any); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_equal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_any); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_equal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_3)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_9, function);
__pyx_t_8 = 1;
@@ -3771,25 +3790,25 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_n_bins, Py_None};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_n_bins, Py_None};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_n_bins, Py_None};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_n_bins, Py_None};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
{
__pyx_t_10 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_3) {
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
+ if (__pyx_t_1) {
+ __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
}
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
@@ -3797,121 +3816,61 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_8, Py_None);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- if (!__pyx_t_9) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_1};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_1};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF_SET(__pyx_t_7, function);
}
}
+ __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (!__pyx_t_7) {
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (!__pyx_t_6) {
} else {
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_5 = __pyx_t_6;
goto __pyx_L10_bool_binop_done;
}
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_any); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_any); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_n_bins, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error)
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = PyObject_RichCompare(__pyx_v_n_bins, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __pyx_t_7;
+ __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __pyx_t_6;
__pyx_L10_bool_binop_done:;
- if (unlikely(__pyx_t_6)) {
+ if (unlikely(__pyx_t_5)) {
/* "silx/math/chistogramnd_lut.pyx":142
* # also testing for negative/null values
@@ -3920,10 +3879,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* sample_type = sample.dtype
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 142, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":141
@@ -3942,10 +3901,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* n_elem = sample.size // n_dims
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_v_sample_type = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_v_sample_type = __pyx_t_3;
+ __pyx_t_3 = 0;
/* "silx/math/chistogramnd_lut.pyx":146
* sample_type = sample.dtype
@@ -3954,13 +3913,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* if n_bins.prod(dtype=np.uint64) < 2**15:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 146, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = PyNumber_FloorDivide(__pyx_t_5, __pyx_v_n_dims); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 146, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_n_elem = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 146, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_3, __pyx_v_n_dims); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 146, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_n_elem = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":148
* n_elem = sample.size // n_dims
@@ -3969,26 +3928,26 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* lut_dtype = np.int16
* elif n_bins.prod(dtype=np.uint64) < 2**31:
*/
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_prod); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_uint64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_prod); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_uint64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_int_32768, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 148, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_6) {
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_9, __pyx_int_32768, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":149
*
@@ -3997,13 +3956,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* elif n_bins.prod(dtype=np.uint64) < 2**31:
* lut_dtype = np.int32
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_lut_dtype = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 149, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 149, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_lut_dtype = __pyx_t_9;
+ __pyx_t_9 = 0;
/* "silx/math/chistogramnd_lut.pyx":148
* n_elem = sample.size // n_dims
@@ -4022,26 +3981,26 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* lut_dtype = np.int32
*
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_prod); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_uint64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_prod); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_9, __pyx_int_2147483648, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_6) {
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_int_2147483648, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_5) {
/* "silx/math/chistogramnd_lut.pyx":151
* lut_dtype = np.int16
@@ -4050,13 +4009,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* else:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 151, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_lut_dtype = __pyx_t_9;
- __pyx_t_9 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 151, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_lut_dtype = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":150
* if n_bins.prod(dtype=np.uint64) < 2**15:
@@ -4076,13 +4035,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* # allocating the output arrays
*/
/*else*/ {
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 154, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 154, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_lut_dtype = __pyx_t_5;
- __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 154, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_lut_dtype = __pyx_t_3;
+ __pyx_t_3 = 0;
}
__pyx_L12:;
@@ -4093,26 +4052,26 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* histo = np.zeros(n_bins, dtype=np.uint32)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_n_elem);
__Pyx_GIVEREF(__pyx_v_n_elem);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_n_elem);
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_n_elem);
+ __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_v_lut_dtype) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_lut_dtype) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_lut = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_v_lut = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":158
* # allocating the output arrays
@@ -4121,32 +4080,32 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* dtype = sample.dtype.newbyteorder("N")
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_v_n_bins);
__Pyx_GIVEREF(__pyx_v_n_bins);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_n_bins);
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_uint32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_bins);
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_uint32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_histo = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_histo = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":160
* histo = np.zeros(n_bins, dtype=np.uint32)
@@ -4155,16 +4114,28 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* sample_c = np.ascontiguousarray(sample.reshape((sample.size,)),
* dtype=dtype)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_dtype = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_10 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_dtype = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":161
*
@@ -4173,71 +4144,41 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=dtype)
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_sample, __pyx_n_s_size); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GIVEREF(__pyx_t_9);
+ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
+ __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_9};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_9};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __pyx_t_10 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":162
* dtype = sample.dtype.newbyteorder("N")
@@ -4246,9 +4187,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* histo_range_c = np.ascontiguousarray(histo_range.reshape((histo_range.size,)),
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 162, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":161
*
@@ -4257,13 +4198,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=dtype)
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_sample_c = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_v_sample_c = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":164
* dtype=dtype)
@@ -4272,71 +4213,41 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=histo_range.dtype.newbyteorder("N"))
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 164, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 164, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_9};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_9};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7);
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":165
*
@@ -4345,18 +4256,30 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* n_bins_c = np.ascontiguousarray(n_bins.reshape((n_bins.size,)),
*/
- __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 165, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_9 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 165, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":164
* dtype=dtype)
@@ -4365,13 +4288,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=histo_range.dtype.newbyteorder("N"))
*
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_histo_range_c = __pyx_t_4;
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_histo_range_c = __pyx_t_9;
+ __pyx_t_9 = 0;
/* "silx/math/chistogramnd_lut.pyx":167
* dtype=histo_range.dtype.newbyteorder("N"))
@@ -4380,71 +4303,41 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=np.int32)
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_n_bins, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_9};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_9};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4);
- __pyx_t_4 = 0;
+ __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_9);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
+ __pyx_t_9 = 0;
/* "silx/math/chistogramnd_lut.pyx":168
*
@@ -4453,15 +4346,15 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* lut_c = np.ascontiguousarray(lut.reshape((lut.size,)))
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":167
* dtype=histo_range.dtype.newbyteorder("N"))
@@ -4470,13 +4363,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=np.int32)
*
*/
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_n_bins_c = __pyx_t_9;
- __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_v_n_bins_c = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":170
* dtype=np.int32)
@@ -4485,114 +4378,54 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* histo_c = np.ascontiguousarray(histo.reshape((histo.size,)),
* dtype=histo.dtype.newbyteorder('N'))
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_lut, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_lut, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_lut, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_lut, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_3);
+ __pyx_t_9 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_10, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_v_lut_c = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_t_10 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_v_lut_c = __pyx_t_10;
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":171
*
@@ -4601,71 +4434,41 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=histo.dtype.newbyteorder('N'))
*
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
+ __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_11, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
- __pyx_t_9 = 0;
+ __pyx_t_10 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":172
* lut_c = np.ascontiguousarray(lut.reshape((lut.size,)))
@@ -4674,18 +4477,30 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* rc = 0
*/
- __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":171
*
@@ -4694,13 +4509,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dtype=histo.dtype.newbyteorder('N'))
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_histo_c = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_v_histo_c = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":174
* dtype=histo.dtype.newbyteorder('N'))
@@ -4722,10 +4537,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
+ __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+ __Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
- __Pyx_XGOTREF(__pyx_t_14);
/*try:*/ {
/* "silx/math/chistogramnd_lut.pyx":177
@@ -4735,8 +4550,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* n_dims,
* n_elem,
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_histogramnd_get_lut_fused); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 177, __pyx_L13_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_histogramnd_get_lut_fused); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L13_error)
+ __Pyx_GOTREF(__pyx_t_10);
/* "silx/math/chistogramnd_lut.pyx":184
* lut_c,
@@ -4745,71 +4560,71 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* except TypeError as ex:
* raise TypeError('Type not supported - sample : {0}'
*/
- __pyx_t_11 = NULL;
+ __pyx_t_9 = NULL;
__pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_11);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[9] = {__pyx_t_11, __pyx_v_sample_c, __pyx_v_n_dims, __pyx_v_n_elem, __pyx_v_histo_range_c, __pyx_v_n_bins_c, __pyx_v_lut_c, __pyx_v_histo_c, __pyx_v_last_bin_closed};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L13_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (PyFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[9] = {__pyx_t_9, __pyx_v_sample_c, __pyx_v_n_dims, __pyx_v_n_elem, __pyx_v_histo_range_c, __pyx_v_n_bins_c, __pyx_v_lut_c, __pyx_v_histo_c, __pyx_v_last_bin_closed};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L13_error)
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[9] = {__pyx_t_11, __pyx_v_sample_c, __pyx_v_n_dims, __pyx_v_n_elem, __pyx_v_histo_range_c, __pyx_v_n_bins_c, __pyx_v_lut_c, __pyx_v_histo_c, __pyx_v_last_bin_closed};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L13_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[9] = {__pyx_t_9, __pyx_v_sample_c, __pyx_v_n_dims, __pyx_v_n_elem, __pyx_v_histo_range_c, __pyx_v_n_bins_c, __pyx_v_lut_c, __pyx_v_histo_c, __pyx_v_last_bin_closed};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L13_error)
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
} else
#endif
{
- __pyx_t_10 = PyTuple_New(8+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 177, __pyx_L13_error)
- __Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
+ __pyx_t_3 = PyTuple_New(8+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 177, __pyx_L13_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (__pyx_t_9) {
+ __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL;
}
__Pyx_INCREF(__pyx_v_sample_c);
__Pyx_GIVEREF(__pyx_v_sample_c);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_8, __pyx_v_sample_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_v_sample_c);
__Pyx_INCREF(__pyx_v_n_dims);
__Pyx_GIVEREF(__pyx_v_n_dims);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_8, __pyx_v_n_dims);
+ PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_v_n_dims);
__Pyx_INCREF(__pyx_v_n_elem);
__Pyx_GIVEREF(__pyx_v_n_elem);
- PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_8, __pyx_v_n_elem);
+ PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_8, __pyx_v_n_elem);
__Pyx_INCREF(__pyx_v_histo_range_c);
__Pyx_GIVEREF(__pyx_v_histo_range_c);
- PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_8, __pyx_v_histo_range_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_8, __pyx_v_histo_range_c);
__Pyx_INCREF(__pyx_v_n_bins_c);
__Pyx_GIVEREF(__pyx_v_n_bins_c);
- PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_8, __pyx_v_n_bins_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 4+__pyx_t_8, __pyx_v_n_bins_c);
__Pyx_INCREF(__pyx_v_lut_c);
__Pyx_GIVEREF(__pyx_v_lut_c);
- PyTuple_SET_ITEM(__pyx_t_10, 5+__pyx_t_8, __pyx_v_lut_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 5+__pyx_t_8, __pyx_v_lut_c);
__Pyx_INCREF(__pyx_v_histo_c);
__Pyx_GIVEREF(__pyx_v_histo_c);
- PyTuple_SET_ITEM(__pyx_t_10, 6+__pyx_t_8, __pyx_v_histo_c);
+ PyTuple_SET_ITEM(__pyx_t_3, 6+__pyx_t_8, __pyx_v_histo_c);
__Pyx_INCREF(__pyx_v_last_bin_closed);
__Pyx_GIVEREF(__pyx_v_last_bin_closed);
- PyTuple_SET_ITEM(__pyx_t_10, 7+__pyx_t_8, __pyx_v_last_bin_closed);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L13_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ PyTuple_SET_ITEM(__pyx_t_3, 7+__pyx_t_8, __pyx_v_last_bin_closed);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 177, __pyx_L13_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF_SET(__pyx_v_rc, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF_SET(__pyx_v_rc, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":176
* rc = 0
@@ -4819,18 +4634,17 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* n_dims,
*/
}
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":185
* histo_c,
@@ -4842,12 +4656,12 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
if (__pyx_t_8) {
__Pyx_AddTraceback("silx.math.chistogramnd_lut.histogramnd_get_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(0, 185, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_t_9);
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_10, &__pyx_t_3) < 0) __PYX_ERR(0, 185, __pyx_L15_except_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_INCREF(__pyx_t_9);
- __pyx_v_ex = __pyx_t_9;
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_10);
+ __pyx_v_ex = __pyx_t_10;
/* "silx/math/chistogramnd_lut.pyx":187
* except TypeError as ex:
@@ -4856,51 +4670,23 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* if rc != 0:
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Type_not_supported_sample_0, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Type_not_supported_sample_0, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L15_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_sample_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_sample_type};
- __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_11);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_sample_type};
- __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_11);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_sample_type);
- __Pyx_GIVEREF(__pyx_v_sample_type);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_sample_type);
- __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 187, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_v_sample_type) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sample_type);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 187, __pyx_L15_except_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/chistogramnd_lut.pyx":186
* last_bin_closed)
@@ -4909,11 +4695,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* ''.format(sample_type))
*
*/
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L15_except_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L15_except_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 186, __pyx_L15_except_error)
}
goto __pyx_L15_except_error;
@@ -4926,10 +4712,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* rc = _histogramnd_get_lut_fused(sample_c,
* n_dims,
*/
+ __Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
- __Pyx_XGIVEREF(__pyx_t_14);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+ __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
goto __pyx_L1_error;
__pyx_L18_try_end:;
}
@@ -4941,10 +4727,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* raise Exception('histogramnd returned an error : {0}'
* ''.format(rc))
*/
- __pyx_t_10 = PyObject_RichCompare(__pyx_v_rc, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 189, __pyx_L1_error)
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 189, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (unlikely(__pyx_t_6)) {
+ __pyx_t_3 = __Pyx_PyInt_NeObjC(__pyx_v_rc, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(__pyx_t_5)) {
/* "silx/math/chistogramnd_lut.pyx":191
* if rc != 0:
@@ -4953,51 +4740,23 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* edges = []
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histogramnd_returned_an_error_0, __pyx_n_s_format); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_histogramnd_returned_an_error_0, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_9, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_rc); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_rc};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_rc};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_INCREF(__pyx_v_rc);
- __Pyx_GIVEREF(__pyx_v_rc);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_rc);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_4, __pyx_v_rc) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_rc);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":190
*
@@ -5006,11 +4765,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* ''.format(rc))
*
*/
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 190, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_Raise(__pyx_t_9, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__PYX_ERR(0, 190, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":189
@@ -5029,10 +4788,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* histo_range = histo_range.reshape(-1)
* for i_dim in range(n_dims):
*/
- __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 193, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_v_edges = ((PyObject*)__pyx_t_9);
- __pyx_t_9 = 0;
+ __pyx_t_10 = PyList_New(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_v_edges = ((PyObject*)__pyx_t_10);
+ __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":194
*
@@ -5041,11 +4800,23 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* for i_dim in range(n_dims):
* dim_edges = np.zeros(n_bins[i_dim] + 1)
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 194, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 194, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_range, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 194, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_10 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 194, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_histo_range, __pyx_t_10);
__pyx_t_10 = 0;
@@ -5059,35 +4830,35 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_n_dims); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
if (likely(PyList_CheckExact(__pyx_t_10)) || PyTuple_CheckExact(__pyx_t_10)) {
- __pyx_t_9 = __pyx_t_10; __Pyx_INCREF(__pyx_t_9); __pyx_t_2 = 0;
- __pyx_t_15 = NULL;
+ __pyx_t_3 = __pyx_t_10; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
+ __pyx_t_14 = NULL;
} else {
- __pyx_t_2 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 195, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 195, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
for (;;) {
- if (likely(!__pyx_t_15)) {
- if (likely(PyList_CheckExact(__pyx_t_9))) {
- if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_9)) break;
+ if (likely(!__pyx_t_14)) {
+ if (likely(PyList_CheckExact(__pyx_t_3))) {
+ if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_2); __Pyx_INCREF(__pyx_t_10); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_10 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_10); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_9, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
} else {
- if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
+ if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_2); __Pyx_INCREF(__pyx_t_10); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_10); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
#else
- __pyx_t_10 = PySequence_ITEM(__pyx_t_9, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_10 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 195, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#endif
}
} else {
- __pyx_t_10 = __pyx_t_15(__pyx_t_9);
+ __pyx_t_10 = __pyx_t_14(__pyx_t_3);
if (unlikely(!__pyx_t_10)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -5108,61 +4879,31 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* rng_min = histo_range[2 * i_dim]
* rng_max = histo_range[2 * i_dim + 1]
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_3)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_3) {
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_11};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_11};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_11);
- __pyx_t_11 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 196, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_10 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 196, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_dim_edges, __pyx_t_10);
__pyx_t_10 = 0;
@@ -5207,59 +4948,29 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* ((rng_max - rng_min) / n_bins[i_dim]))
* dim_edges[-1] = rng_max
*/
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_arange); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_arange); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_11 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_11)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_11);
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_11) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_10};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_10};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- } else
- #endif
- {
- __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
- __Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_10);
- __pyx_t_10 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_4, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/math/chistogramnd_lut.pyx":200
* rng_max = histo_range[2 * i_dim + 1]
@@ -5268,14 +4979,14 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* dim_edges[-1] = rng_max
* edges.append(dim_edges)
*/
- __pyx_t_5 = PyNumber_Subtract(__pyx_v_rng_max, __pyx_v_rng_min); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 200, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 200, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 200, __pyx_L1_error)
+ __pyx_t_9 = PyNumber_Subtract(__pyx_v_rng_max, __pyx_v_rng_min); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 200, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_n_bins, __pyx_v_i_dim); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 200, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 200, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":199
* rng_min = histo_range[2 * i_dim]
@@ -5284,15 +4995,15 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* ((rng_max - rng_min) / n_bins[i_dim]))
* dim_edges[-1] = rng_max
*/
- __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = PyNumber_Add(__pyx_v_rng_min, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __pyx_t_10 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__Pyx_PyObject_SetSlice(__pyx_v_dim_edges, __pyx_t_10, 0, -1L, NULL, NULL, &__pyx_slice__10, 0, 1, 1) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_Add(__pyx_v_rng_min, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (__Pyx_PyObject_SetSlice(__pyx_v_dim_edges, __pyx_t_4, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/chistogramnd_lut.pyx":201
* dim_edges[:-1] = (rng_min + np.arange(n_bins[i_dim]) *
@@ -5310,7 +5021,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
* return lut, histo, tuple(edges)
*/
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_edges, __pyx_v_dim_edges); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 202, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_edges, __pyx_v_dim_edges); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 202, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":195
* edges = []
@@ -5320,7 +5031,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
* rng_min = histo_range[2 * i_dim]
*/
}
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/chistogramnd_lut.pyx":204
* edges.append(dim_edges)
@@ -5330,21 +5041,21 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = PyList_AsTuple(__pyx_v_edges); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = PyList_AsTuple(__pyx_v_edges); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_lut);
__Pyx_GIVEREF(__pyx_v_lut);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_lut);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_lut);
__Pyx_INCREF(__pyx_v_histo);
__Pyx_GIVEREF(__pyx_v_histo);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_histo);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_r = __pyx_t_10;
- __pyx_t_10 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_histo);
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/chistogramnd_lut.pyx":58
@@ -5360,10 +5071,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("silx.math.chistogramnd_lut.histogramnd_get_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5406,7 +5116,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_histogramnd_get_lut(CYT
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut[] = "histogramnd_from_lut(weights, histo_lut, histo=None, weighted_histo=None, shape=None, dtype=None, weight_min=None, weight_max=None)\n\n dtype ignored if weighted_histo provided\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut = {"histogramnd_from_lut", (PyCFunction)__pyx_pw_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut};
+static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut = {"histogramnd_from_lut", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut};
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_3histogramnd_from_lut(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_weights = 0;
PyObject *__pyx_v_histo_lut = 0;
@@ -5630,7 +5340,6 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
PyObject *__pyx_t_14 = NULL;
PyObject *__pyx_t_15 = NULL;
PyObject *__pyx_t_16 = NULL;
- PyObject *__pyx_t_17 = NULL;
__Pyx_RefNannySetupContext("histogramnd_from_lut", 0);
__Pyx_INCREF(__pyx_v_histo);
__Pyx_INCREF(__pyx_v_weighted_histo);
@@ -5677,7 +5386,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'be provided : <shape> or <histo> or '
* '<weighted_histo>')
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -5749,7 +5458,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'the <histo> shape.')
*
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 231, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -5817,7 +5526,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'the <weighted_histo> shape.')
* else:
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 236, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -5913,7 +5622,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*/
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 245, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_uint32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -5934,7 +5643,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*/
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Provided_histo_array_doesn_t_hav, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -6050,7 +5759,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'the <weighted_histo> shape.')
* else:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -6092,7 +5801,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* w_dtype = weights.dtype
*/
/*else*/ {
- __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -6104,7 +5813,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_shape);
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_uint32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -6233,7 +5942,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* ' do not match.')
* dtype = weighted_histo.dtype
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6288,7 +5997,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
* if histo_lut.size != weights.size:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -6343,7 +6052,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'number of elements.')
*
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 275, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -6365,7 +6074,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=weights.dtype.newbyteorder('N'))
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
@@ -6389,41 +6098,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_5};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -6440,16 +6119,28 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*/
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 279, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/math/chistogramnd_lut.pyx":278
* 'number of elements.')
@@ -6458,13 +6149,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=weights.dtype.newbyteorder('N'))
*
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_v_w_c = __pyx_t_8;
- __pyx_t_8 = 0;
+ __pyx_v_w_c = __pyx_t_5;
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd_lut.pyx":281
* dtype=weights.dtype.newbyteorder('N'))
@@ -6473,19 +6164,19 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=histo.dtype.newbyteorder('N'))
*
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_10);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10);
__pyx_t_10 = 0;
__pyx_t_10 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -6497,47 +6188,17 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (!__pyx_t_10) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_5};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_10, __pyx_t_5};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __pyx_t_10 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_10, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
- __pyx_t_8 = 0;
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
+ __pyx_t_5 = 0;
/* "silx/math/chistogramnd_lut.pyx":282
*
@@ -6546,18 +6207,30 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
* w_h_c = np.ascontiguousarray(weighted_histo.reshape((weighted_histo.size,)),
*/
- __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_10, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/math/chistogramnd_lut.pyx":281
* dtype=weights.dtype.newbyteorder('N'))
@@ -6566,13 +6239,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=histo.dtype.newbyteorder('N'))
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 281, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 281, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_h_c = __pyx_t_7;
- __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_h_c = __pyx_t_8;
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd_lut.pyx":284
* dtype=histo.dtype.newbyteorder('N'))
@@ -6581,19 +6254,19 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=weighted_histo.dtype.newbyteorder('N')) # noqa
*
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -6605,47 +6278,17 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- }
- }
+ __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
- __pyx_t_7 = 0;
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
+ __pyx_t_8 = 0;
/* "silx/math/chistogramnd_lut.pyx":285
*
@@ -6654,18 +6297,30 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
* h_lut_c = np.ascontiguousarray(histo_lut.reshape((histo_lut.size,)),
*/
- __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_weighted_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
+ }
+ }
+ __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_4, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":284
* dtype=histo.dtype.newbyteorder('N'))
@@ -6674,13 +6329,13 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* dtype=weighted_histo.dtype.newbyteorder('N')) # noqa
*
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 284, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_w_h_c = __pyx_t_10;
- __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_v_w_h_c = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":287
* dtype=weighted_histo.dtype.newbyteorder('N')) # noqa
@@ -6689,66 +6344,36 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* histo_lut.dtype.newbyteorder('N'))
*
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_10, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "silx/math/chistogramnd_lut.pyx":288
*
@@ -6757,21 +6382,33 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
* rc = 0
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 288, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 288, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 288, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __pyx_t_11 = NULL;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo_lut, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 288, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_4);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_4, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 288, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_11)) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_10)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_11);
+ __Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_9 = 1;
@@ -6779,43 +6416,43 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_7, __pyx_t_8};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_8, __pyx_t_5};
+ __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_t_7, __pyx_t_8};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_8, __pyx_t_5};
+ __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
__pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (__pyx_t_11) {
- __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
+ if (__pyx_t_10) {
+ __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_8);
- __pyx_t_7 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_5);
__pyx_t_8 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_5 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_h_lut_c = __pyx_t_10;
- __pyx_t_10 = 0;
+ __pyx_v_h_lut_c = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":290
* histo_lut.dtype.newbyteorder('N'))
@@ -6940,10 +6577,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
- __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
+ __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+ __Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
- __Pyx_XGOTREF(__pyx_t_14);
/*try:*/ {
/* "silx/math/chistogramnd_lut.pyx":305
@@ -6953,7 +6590,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* h_lut_c,
* h_c,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_histogramnd_from_lut_fused); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 305, __pyx_L26_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_histogramnd_from_lut_fused); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 305, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_6);
/* "silx/math/chistogramnd_lut.pyx":309
@@ -6973,8 +6610,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* w_dtype.type(weight_min),
* filt_max_weights,
*/
- __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_filt_min_weights); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 310, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_filt_min_weights); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 310, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_5);
/* "silx/math/chistogramnd_lut.pyx":311
* weights.size,
@@ -6983,51 +6620,23 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* filt_max_weights,
* w_dtype.type(weight_max))
*/
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_w_dtype, __pyx_n_s_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_w_dtype, __pyx_n_s_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 311, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_14);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_11, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_weight_min); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_weight_min};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_weight_min};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_INCREF(__pyx_v_weight_min);
- __Pyx_GIVEREF(__pyx_v_weight_min);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_v_weight_min);
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 311, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_8 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_14, __pyx_v_weight_min) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_weight_min);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 311, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":312
* filt_min_weights,
@@ -7036,8 +6645,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* w_dtype.type(weight_max))
* except TypeError as ex:
*/
- __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_filt_max_weights); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 312, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_11);
+ __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_filt_max_weights); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 312, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_10);
/* "silx/math/chistogramnd_lut.pyx":313
* w_dtype.type(weight_min),
@@ -7046,58 +6655,30 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* except TypeError as ex:
* print(ex)
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_w_dtype, __pyx_n_s_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_w_dtype, __pyx_n_s_type); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 313, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_15);
__pyx_t_16 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_5);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_15))) {
+ __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15);
if (likely(__pyx_t_16)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
__Pyx_INCREF(__pyx_t_16);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_16) {
- __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_weight_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_15);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_16, __pyx_v_weight_max};
- __pyx_t_15 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_GOTREF(__pyx_t_15);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_16, __pyx_v_weight_max};
- __pyx_t_15 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_GOTREF(__pyx_t_15);
- } else
- #endif
- {
- __pyx_t_17 = PyTuple_New(1+1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_17);
- __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_16); __pyx_t_16 = NULL;
- __Pyx_INCREF(__pyx_v_weight_max);
- __Pyx_GIVEREF(__pyx_v_weight_max);
- PyTuple_SET_ITEM(__pyx_t_17, 0+1, __pyx_v_weight_max);
- __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 313, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+ __Pyx_DECREF_SET(__pyx_t_15, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
+ __pyx_t_14 = (__pyx_t_16) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_16, __pyx_v_weight_max) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_v_weight_max);
+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
+ if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 313, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __pyx_t_15 = NULL;
__pyx_t_9 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_5)) {
+ __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_15)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_15);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_9 = 1;
@@ -7105,69 +6686,69 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[10] = {__pyx_t_5, __pyx_v_w_c, __pyx_v_h_lut_c, __pyx_v_h_c, __pyx_v_w_h_c, __pyx_t_4, __pyx_t_8, __pyx_t_7, __pyx_t_11, __pyx_t_15};
- __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 9+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_10);
+ PyObject *__pyx_temp[10] = {__pyx_t_15, __pyx_v_w_c, __pyx_v_h_lut_c, __pyx_v_h_c, __pyx_v_w_h_c, __pyx_t_4, __pyx_t_5, __pyx_t_8, __pyx_t_10, __pyx_t_14};
+ __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 9+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 305, __pyx_L26_error)
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[10] = {__pyx_t_5, __pyx_v_w_c, __pyx_v_h_lut_c, __pyx_v_h_c, __pyx_v_w_h_c, __pyx_t_4, __pyx_t_8, __pyx_t_7, __pyx_t_11, __pyx_t_15};
- __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 9+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L26_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_10);
+ PyObject *__pyx_temp[10] = {__pyx_t_15, __pyx_v_w_c, __pyx_v_h_lut_c, __pyx_v_h_c, __pyx_v_w_h_c, __pyx_t_4, __pyx_t_5, __pyx_t_8, __pyx_t_10, __pyx_t_14};
+ __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 9+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 305, __pyx_L26_error)
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
} else
#endif
{
- __pyx_t_17 = PyTuple_New(9+__pyx_t_9); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 305, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_17);
- if (__pyx_t_5) {
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_5); __pyx_t_5 = NULL;
+ __pyx_t_16 = PyTuple_New(9+__pyx_t_9); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 305, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_16);
+ if (__pyx_t_15) {
+ __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL;
}
__Pyx_INCREF(__pyx_v_w_c);
__Pyx_GIVEREF(__pyx_v_w_c);
- PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_9, __pyx_v_w_c);
+ PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_9, __pyx_v_w_c);
__Pyx_INCREF(__pyx_v_h_lut_c);
__Pyx_GIVEREF(__pyx_v_h_lut_c);
- PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_9, __pyx_v_h_lut_c);
+ PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_9, __pyx_v_h_lut_c);
__Pyx_INCREF(__pyx_v_h_c);
__Pyx_GIVEREF(__pyx_v_h_c);
- PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_9, __pyx_v_h_c);
+ PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_9, __pyx_v_h_c);
__Pyx_INCREF(__pyx_v_w_h_c);
__Pyx_GIVEREF(__pyx_v_w_h_c);
- PyTuple_SET_ITEM(__pyx_t_17, 3+__pyx_t_9, __pyx_v_w_h_c);
+ PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_9, __pyx_v_w_h_c);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_17, 4+__pyx_t_9, __pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_16, 4+__pyx_t_9, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_16, 5+__pyx_t_9, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_17, 5+__pyx_t_9, __pyx_t_8);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_17, 6+__pyx_t_9, __pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_11);
- PyTuple_SET_ITEM(__pyx_t_17, 7+__pyx_t_9, __pyx_t_11);
- __Pyx_GIVEREF(__pyx_t_15);
- PyTuple_SET_ITEM(__pyx_t_17, 8+__pyx_t_9, __pyx_t_15);
+ PyTuple_SET_ITEM(__pyx_t_16, 6+__pyx_t_9, __pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_10);
+ PyTuple_SET_ITEM(__pyx_t_16, 7+__pyx_t_9, __pyx_t_10);
+ __Pyx_GIVEREF(__pyx_t_14);
+ PyTuple_SET_ITEM(__pyx_t_16, 8+__pyx_t_9, __pyx_t_14);
__pyx_t_4 = 0;
+ __pyx_t_5 = 0;
__pyx_t_8 = 0;
- __pyx_t_7 = 0;
- __pyx_t_11 = 0;
- __pyx_t_15 = 0;
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_17, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L26_error)
- __Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+ __pyx_t_10 = 0;
+ __pyx_t_14 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_16, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 305, __pyx_L26_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":304
* filt_max_weights = True
@@ -7177,21 +6758,20 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* h_lut_c,
*/
}
+ __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L31_try_end;
__pyx_L26_error:;
- __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/chistogramnd_lut.pyx":314
* filt_max_weights,
@@ -7203,10 +6783,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
if (__pyx_t_9) {
__Pyx_AddTraceback("silx.math.chistogramnd_lut.histogramnd_from_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_6, &__pyx_t_17) < 0) __PYX_ERR(0, 314, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_10);
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_16) < 0) __PYX_ERR(0, 314, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_GOTREF(__pyx_t_17);
+ __Pyx_GOTREF(__pyx_t_16);
__Pyx_INCREF(__pyx_t_6);
__pyx_v_ex = __pyx_t_6;
@@ -7226,61 +6806,61 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
* return histo, weighted_histo
*/
- __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Case_not_supported_weights_0_and, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 318, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Case_not_supported_weights_0_and, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_weights, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 318, __pyx_L28_except_error)
__Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_histo, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = NULL;
__pyx_t_9 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_11, function);
+ __Pyx_DECREF_SET(__pyx_t_10, function);
__pyx_t_9 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_8};
- __pyx_t_15 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ if (PyFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5};
+ __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 318, __pyx_L28_except_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
- PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_8};
- __pyx_t_15 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5};
+ __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 318, __pyx_L28_except_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 318, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_15 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_15);
if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_8);
- __pyx_t_7 = 0;
+ PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_9, __pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_9, __pyx_t_5);
__pyx_t_8 = 0;
- __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 318, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = 0;
+ __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 318, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_14);
+ __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
/* "silx/math/chistogramnd_lut.pyx":316
* except TypeError as ex:
@@ -7289,11 +6869,11 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* 'and histo:{1}.'
* ''.format(weights.dtype, histo.dtype))
*/
- __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 316, __pyx_L28_except_error)
- __Pyx_GOTREF(__pyx_t_11);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_Raise(__pyx_t_11, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 316, __pyx_L28_except_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+ __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(0, 316, __pyx_L28_except_error)
}
goto __pyx_L28_except_error;
@@ -7306,10 +6886,10 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
* _histogramnd_from_lut_fused(w_c,
* h_lut_c,
*/
+ __Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
- __Pyx_XGIVEREF(__pyx_t_14);
- __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
+ __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
goto __pyx_L1_error;
__pyx_L31_try_end:;
}
@@ -7322,16 +6902,16 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_17);
+ __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_16);
__Pyx_INCREF(__pyx_v_histo);
__Pyx_GIVEREF(__pyx_v_histo);
- PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_v_histo);
+ PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_v_histo);
__Pyx_INCREF(__pyx_v_weighted_histo);
__Pyx_GIVEREF(__pyx_v_weighted_histo);
- PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_v_weighted_histo);
- __pyx_r = __pyx_t_17;
- __pyx_t_17 = 0;
+ PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_v_weighted_histo);
+ __pyx_r = __pyx_t_16;
+ __pyx_t_16 = 0;
goto __pyx_L0;
/* "silx/math/chistogramnd_lut.pyx":211
@@ -7350,10 +6930,9 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
- __Pyx_XDECREF(__pyx_t_11);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
- __Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("silx.math.chistogramnd_lut.histogramnd_from_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -7385,7 +6964,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_2histogramnd_from_lut(C
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused[] = "_histogramnd_from_lut_fused(signatures, args, kwargs, defaults)";
-static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused = {"_histogramnd_from_lut_fused", (PyCFunction)__pyx_pw_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused = {"_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_signatures = 0;
PyObject *__pyx_v_args = 0;
@@ -7500,10 +7079,12 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
int __pyx_t_10;
int __pyx_t_11;
PyObject *__pyx_t_12 = NULL;
- Py_ssize_t __pyx_t_13;
- Py_ssize_t __pyx_t_14;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ Py_ssize_t __pyx_t_16;
+ Py_ssize_t __pyx_t_17;
+ int __pyx_t_18;
__Pyx_RefNannySetupContext("_histogramnd_from_lut_fused", 0);
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_t_1 = PyList_New(1 * 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
@@ -8474,36 +8055,60 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
__Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_v_match_found = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s__12) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__12);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_13 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
- __pyx_t_14 = __pyx_t_13;
- for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
- __pyx_v_i = __pyx_t_15;
- __pyx_t_12 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__13) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__13);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_16 = __pyx_t_15;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1);
+ __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_v_dst_type != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_12, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_2) {
__pyx_v_match_found = 1;
goto __pyx_L122;
@@ -8518,14 +8123,14 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
__pyx_L120_break:;
__pyx_t_2 = (__pyx_v_match_found != 0);
if (__pyx_t_2) {
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
__pyx_t_3 = ((!__pyx_t_2) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8534,7 +8139,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 332, __pyx_L1_error)
__pyx_t_3 = ((__pyx_t_9 > 1) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8558,6 +8163,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.math.chistogramnd_lut.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -8578,7 +8185,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_
/* Python wrapper */
static PyObject *__pyx_fuse_0_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -8921,7 +8528,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_8_histogramnd_from_lut_
/* Python wrapper */
static PyObject *__pyx_fuse_0_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -9264,7 +8871,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_10_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -9607,7 +9214,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_12_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused = {"__pyx_fuse_0_0_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -9950,7 +9557,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_14_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -10293,7 +9900,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_16_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -10636,7 +10243,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_18_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -10979,7 +10586,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_20_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused = {"__pyx_fuse_0_1_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -11322,7 +10929,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_22_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -11665,7 +11272,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_24_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -12008,7 +11615,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_26_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -12351,7 +11958,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_28_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_0_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_0_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused = {"__pyx_fuse_0_2_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_0_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -12694,7 +12301,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_30_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -13037,7 +12644,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_32_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -13380,7 +12987,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_34_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -13723,7 +13330,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_36_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused = {"__pyx_fuse_1_0_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -14066,7 +13673,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_38_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -14409,7 +14016,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_40_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -14752,7 +14359,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_42_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15095,7 +14702,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_44_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused = {"__pyx_fuse_1_1_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15438,7 +15045,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_46_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15781,7 +15388,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_48_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -16124,7 +15731,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_50_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -16467,7 +16074,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_52_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_1_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_1_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused = {"__pyx_fuse_1_2_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_1_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -16810,7 +16417,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_54_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17153,7 +16760,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_56_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17496,7 +17103,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_58_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17839,7 +17446,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_60_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused = {"__pyx_fuse_2_0_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -18182,7 +17789,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_62_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -18525,7 +18132,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_64_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -18868,7 +18475,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_66_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19211,7 +18818,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_68_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused = {"__pyx_fuse_2_1_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19554,7 +19161,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_70_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19897,7 +19504,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_72_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -20240,7 +19847,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_74_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -20583,7 +20190,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_76_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_2_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_2_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused = {"__pyx_fuse_2_2_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_2_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -20926,7 +20533,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_78_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21269,7 +20876,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_80_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21612,7 +21219,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_82_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21955,7 +21562,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_84_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused = {"__pyx_fuse_3_0_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_0_3__pyx_pw_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -22298,7 +21905,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_86_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -22641,7 +22248,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_88_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -22984,7 +22591,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_90_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -23327,7 +22934,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_92_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused = {"__pyx_fuse_3_1_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_1_3__pyx_pw_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -23670,7 +23277,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_94_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_0_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_0_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -24013,7 +23620,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_96_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_1_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_1_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -24356,7 +23963,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_98_histogramnd_from_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_2_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_2_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -24699,7 +24306,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_100_histogramnd_from_lu
/* Python wrapper */
static PyObject *__pyx_fuse_3_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_3_histogramnd_from_lut_fused", (PyCFunction)__pyx_fuse_3_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
+static PyMethodDef __pyx_fuse_3_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused = {"__pyx_fuse_3_2_3_histogramnd_from_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_4_histogramnd_from_lut_fused};
static PyObject *__pyx_fuse_3_2_3__pyx_pw_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_weights = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_i_lut = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -25051,7 +24658,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_102_histogramnd_from_lu
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused[] = "_histogramnd_get_lut_fused(signatures, args, kwargs, defaults)";
-static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused = {"_histogramnd_get_lut_fused", (PyCFunction)__pyx_pw_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_mdef_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused = {"_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_pw_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_signatures = 0;
PyObject *__pyx_v_args = 0;
@@ -25166,10 +24773,12 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
int __pyx_t_10;
int __pyx_t_11;
PyObject *__pyx_t_12 = NULL;
- Py_ssize_t __pyx_t_13;
- Py_ssize_t __pyx_t_14;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ Py_ssize_t __pyx_t_16;
+ Py_ssize_t __pyx_t_17;
+ int __pyx_t_18;
__Pyx_RefNannySetupContext("_histogramnd_get_lut_fused", 0);
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_t_1 = PyList_New(1 * 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
@@ -25825,36 +25434,60 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
__Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_6);
__pyx_t_6 = 0;
__pyx_v_match_found = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s__12) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__12);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_13 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
- __pyx_t_14 = __pyx_t_13;
- for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
- __pyx_v_i = __pyx_t_15;
- __pyx_t_12 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__13) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__13);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_16 = __pyx_t_15;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
+ __pyx_t_6 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_6);
+ __pyx_t_6 = 0;
__pyx_t_2 = (__pyx_v_dst_type != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_12, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_13 = PyObject_RichCompare(__pyx_t_6, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_3) {
__pyx_v_match_found = 1;
goto __pyx_L83;
@@ -25869,14 +25502,14 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
__pyx_L81_break:;
__pyx_t_3 = (__pyx_v_match_found != 0);
if (__pyx_t_3) {
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
__pyx_t_2 = ((!__pyx_t_3) != 0);
if (__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -25885,7 +25518,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 361, __pyx_L1_error)
__pyx_t_2 = ((__pyx_t_9 > 1) != 0);
if (__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -25909,6 +25542,8 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.math.chistogramnd_lut.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -25929,7 +25564,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_f
/* Python wrapper */
static PyObject *__pyx_fuse_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused = {"__pyx_fuse_0_0_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused = {"__pyx_fuse_0_0_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_0_0__pyx_pw_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -26511,7 +26146,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_106_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused = {"__pyx_fuse_0_1_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused = {"__pyx_fuse_0_1_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_0_1__pyx_pw_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -27093,7 +26728,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_108_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused = {"__pyx_fuse_0_2_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused = {"__pyx_fuse_0_2_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_0_2__pyx_pw_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -27675,7 +27310,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_110_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused = {"__pyx_fuse_1_0_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused = {"__pyx_fuse_1_0_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_1_0__pyx_pw_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -28257,7 +27892,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_112_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused = {"__pyx_fuse_1_1_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused = {"__pyx_fuse_1_1_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_1_1__pyx_pw_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -28839,7 +28474,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_114_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused = {"__pyx_fuse_1_2_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused = {"__pyx_fuse_1_2_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_1_2__pyx_pw_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -29421,7 +29056,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_116_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused = {"__pyx_fuse_2_0_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused = {"__pyx_fuse_2_0_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_2_0__pyx_pw_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -30003,7 +29638,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_118_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused = {"__pyx_fuse_2_1_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused = {"__pyx_fuse_2_1_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_2_1__pyx_pw_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -30585,7 +30220,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_120_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused = {"__pyx_fuse_2_2_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused = {"__pyx_fuse_2_2_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_2_2__pyx_pw_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -31167,7 +30802,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_122_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_0__pyx_pw_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0__pyx_mdef_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused = {"__pyx_fuse_3_0_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_3_0__pyx_pw_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_3_0__pyx_mdef_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused = {"__pyx_fuse_3_0_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0__pyx_pw_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_3_0__pyx_pw_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -31749,7 +31384,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_124_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_1__pyx_pw_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1__pyx_mdef_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused = {"__pyx_fuse_3_1_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_3_1__pyx_pw_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_3_1__pyx_mdef_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused = {"__pyx_fuse_3_1_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1__pyx_pw_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_3_1__pyx_pw_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -32331,7 +31966,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_126_histogramnd_get_lut
/* Python wrapper */
static PyObject *__pyx_fuse_3_2__pyx_pw_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_2__pyx_mdef_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused = {"__pyx_fuse_3_2_histogramnd_get_lut_fused", (PyCFunction)__pyx_fuse_3_2__pyx_pw_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
+static PyMethodDef __pyx_fuse_3_2__pyx_mdef_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused = {"__pyx_fuse_3_2_histogramnd_get_lut_fused", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_2__pyx_pw_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_16chistogramnd_lut_6_histogramnd_get_lut_fused};
static PyObject *__pyx_fuse_3_2__pyx_pw_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_i_sample = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i_n_dims;
@@ -32911,7 +32546,7 @@ static PyObject *__pyx_pf_4silx_4math_16chistogramnd_lut_128_histogramnd_get_lut
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -32949,8 +32584,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -32959,7 +32595,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -32968,7 +32604,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -32977,7 +32613,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -32986,11 +32622,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -33000,53 +32636,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 229, __pyx_L1_error)
+ __PYX_ERR(1, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -33056,49 +32692,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 233, __pyx_L1_error)
+ __PYX_ERR(1, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -33107,7 +32743,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -33116,7 +32752,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -33126,7 +32762,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -33135,7 +32771,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -33144,7 +32780,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -33156,7 +32792,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -33165,7 +32801,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -33175,7 +32811,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -33185,7 +32821,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -33195,7 +32831,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -33206,7 +32842,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -33215,7 +32851,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -33224,7 +32860,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -33233,28 +32869,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -33267,7 +32904,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -33277,7 +32914,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -33287,7 +32924,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -33307,7 +32944,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -33324,7 +32961,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -33333,20 +32970,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 263, __pyx_L1_error)
+ __PYX_ERR(1, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -33355,7 +32992,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -33366,206 +33003,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 282, __pyx_L1_error)
+ __PYX_ERR(1, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -33574,7 +33211,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -33584,7 +33221,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -33593,7 +33230,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -33603,7 +33240,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -33612,7 +33249,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -33621,17 +33258,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(1, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -33641,7 +33278,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -33654,7 +33291,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -33673,7 +33310,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -33697,7 +33334,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -33707,7 +33344,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -33716,7 +33353,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -33725,7 +33362,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -33735,7 +33372,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -33744,7 +33381,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -33753,7 +33390,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -33765,7 +33402,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -33779,7 +33416,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -33787,13 +33424,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -33812,7 +33449,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -33826,7 +33463,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -33834,13 +33471,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -33859,7 +33496,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -33873,7 +33510,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -33881,13 +33518,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -33906,7 +33543,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -33920,7 +33557,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -33928,13 +33565,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -33953,7 +33590,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -33967,7 +33604,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -33975,13 +33612,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -34000,7 +33637,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -34014,7 +33651,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -34024,7 +33661,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -34036,7 +33673,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -34045,7 +33682,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -34059,7 +33696,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -34074,7 +33711,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -34103,7 +33740,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -34112,7 +33749,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -34121,7 +33758,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -34130,21 +33767,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(1, 805, __pyx_L1_error)
+ __PYX_ERR(1, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -34153,15 +33790,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 806, __pyx_L1_error)
+ __PYX_ERR(1, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -34174,7 +33811,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(1, 807, __pyx_L1_error)
+ __PYX_ERR(1, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -34182,51 +33819,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 810, __pyx_L1_error)
+ __PYX_ERR(1, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -34235,7 +33872,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -34255,7 +33892,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -34272,7 +33909,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -34281,20 +33918,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 814, __pyx_L1_error)
+ __PYX_ERR(1, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -34303,7 +33940,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -34311,15 +33948,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -34328,7 +33965,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -34337,7 +33974,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -34348,7 +33985,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -34358,7 +33995,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -34368,19 +34005,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -34390,20 +34027,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 834, __pyx_L1_error)
+ __PYX_ERR(1, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -34412,252 +34049,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -34666,18 +34303,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -34686,18 +34323,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -34706,25 +34343,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -34732,18 +34369,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 855, __pyx_L1_error)
+ __PYX_ERR(1, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -34752,7 +34389,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -34762,7 +34399,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -34770,12 +34407,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -34785,7 +34422,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -34795,7 +34432,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -34820,166 +34457,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -34989,7 +34580,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -35010,7 +34601,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35026,16 +34617,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35049,7 +34640,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -35059,28 +34650,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __PYX_ERR(1, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35095,7 +34686,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -35118,7 +34709,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -35139,7 +34730,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35155,16 +34746,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35178,7 +34769,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -35188,28 +34779,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __PYX_ERR(1, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35224,7 +34815,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -35247,7 +34838,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -35268,7 +34859,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35284,16 +34875,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35307,7 +34898,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -35316,26 +34907,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __PYX_ERR(1, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -35350,7 +34941,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -35521,10 +35112,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -35570,7 +35161,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -35602,7 +35193,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -35635,13 +35226,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -35660,13 +35263,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -35679,8 +35282,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(2, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -35717,10 +35320,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(2, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -35739,21 +35342,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -35772,24 +35375,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 152, __pyx_L1_error)
@@ -35820,7 +35423,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -35914,11 +35517,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 163, __pyx_L1_error)
@@ -35991,7 +35594,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -36041,8 +35644,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(2, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -36096,7 +35699,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -36232,7 +35835,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -36948,7 +36551,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37001,7 +36604,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37477,7 +37080,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -37523,7 +37126,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -38645,7 +38248,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -39672,7 +39275,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -40028,7 +39631,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -40568,7 +40171,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -40682,7 +40285,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__52, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__34, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -41683,7 +41286,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -41736,7 +41339,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -42087,9 +41690,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__55);
- __Pyx_GIVEREF(__pyx_slice__55);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__55);
+ __Pyx_INCREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__37);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 677, __pyx_L1_error)
@@ -42122,7 +41725,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__56); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__37); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -42172,7 +41775,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -42262,9 +41865,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__57);
- __Pyx_GIVEREF(__pyx_slice__57);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__57);
+ __Pyx_INCREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__37);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 691, __pyx_L1_error)
@@ -42388,7 +41991,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -44551,7 +44154,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -44604,7 +44207,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -46485,7 +46088,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -46518,41 +46120,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -46572,7 +46144,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -46599,7 +46170,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -46636,41 +46206,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -46711,7 +46251,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -47819,7 +47358,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -47900,8 +47439,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -47958,41 +47496,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -48015,48 +47523,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -48069,8 +47549,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -48117,7 +47597,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -48147,7 +47626,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -48218,41 +47696,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -48280,7 +47728,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -48995,6 +48442,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_15_05_2016, __pyx_k_15_05_2016, sizeof(__pyx_k_15_05_2016), 0, 0, 1, 0},
@@ -49041,8 +48497,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
{&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
{&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
- {&__pyx_kp_s__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 0, 1, 0},
- {&__pyx_kp_s__23, __pyx_k__23, sizeof(__pyx_k__23), 0, 0, 1, 0},
+ {&__pyx_kp_s__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 0, 1, 0},
+ {&__pyx_kp_s__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 0, 1, 0},
{&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
{&__pyx_n_s_any, __pyx_k_any, sizeof(__pyx_k_any), 0, 0, 1, 1},
{&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1},
@@ -49282,12 +48738,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 118, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 185, __pyx_L1_error)
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 195, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1000, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1038, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 147, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 150, __pyx_L1_error)
__pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(2, 399, __pyx_L1_error)
@@ -49298,7 +48754,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -49324,17 +48780,6 @@ static int __Pyx_InitCachedConstants(void) {
__Pyx_GOTREF(__pyx_tuple__2);
__Pyx_GIVEREF(__pyx_tuple__2);
- /* "silx/math/chistogramnd_lut.pyx":111
- * pass
- * elif histo_range.shape == (1, 2):
- * histo_range.reshape(-1) # <<<<<<<<<<<<<<
- * else:
- * err_histo_range = True
- */
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 111, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
-
/* "silx/math/chistogramnd_lut.pyx":133
* n_bins = np.tile(n_bins, n_dims)
* elif n_bins.shape != (n_dims,):
@@ -49342,9 +48787,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'of bins for all dimensions) or '
* 'an array (number of bins for each '
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_n_bins_must_be_either_a_scalar_s); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_n_bins_must_be_either_a_scalar_s); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 133, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/chistogramnd_lut.pyx":142
* # also testing for negative/null values
@@ -49353,53 +48798,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* sample_type = sample.dtype
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_n_bins_only_positive_values_all); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
-
- /* "silx/math/chistogramnd_lut.pyx":160
- * histo = np.zeros(n_bins, dtype=np.uint32)
- *
- * dtype = sample.dtype.newbyteorder("N") # <<<<<<<<<<<<<<
- * sample_c = np.ascontiguousarray(sample.reshape((sample.size,)),
- * dtype=dtype)
- */
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
-
- /* "silx/math/chistogramnd_lut.pyx":165
- *
- * histo_range_c = np.ascontiguousarray(histo_range.reshape((histo_range.size,)),
- * dtype=histo_range.dtype.newbyteorder("N")) # <<<<<<<<<<<<<<
- *
- * n_bins_c = np.ascontiguousarray(n_bins.reshape((n_bins.size,)),
- */
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
-
- /* "silx/math/chistogramnd_lut.pyx":172
- * lut_c = np.ascontiguousarray(lut.reshape((lut.size,)))
- * histo_c = np.ascontiguousarray(histo.reshape((histo.size,)),
- * dtype=histo.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * rc = 0
- */
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
-
- /* "silx/math/chistogramnd_lut.pyx":194
- *
- * edges = []
- * histo_range = histo_range.reshape(-1) # <<<<<<<<<<<<<<
- * for i_dim in range(n_dims):
- * dim_edges = np.zeros(n_bins[i_dim] + 1)
- */
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 194, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_n_bins_only_positive_values_all); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 142, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "silx/math/chistogramnd_lut.pyx":199
* rng_min = histo_range[2 * i_dim]
@@ -49408,9 +48809,9 @@ static int __Pyx_InitCachedConstants(void) {
* ((rng_max - rng_min) / n_bins[i_dim]))
* dim_edges[-1] = rng_max
*/
- __pyx_slice__10 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__10)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__10);
- __Pyx_GIVEREF(__pyx_slice__10);
+ __pyx_slice__5 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__5);
+ __Pyx_GIVEREF(__pyx_slice__5);
/* "silx/math/chistogramnd_lut.pyx":225
* if histo is None and weighted_histo is None:
@@ -49419,9 +48820,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'be provided : <shape> or <histo> or '
* '<weighted_histo>')
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_At_least_one_of_the_following_pa); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 225, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_At_least_one_of_the_following_pa); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "silx/math/chistogramnd_lut.pyx":231
* if shape is not None:
@@ -49430,9 +48831,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'the <histo> shape.')
*
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_The_shape_value_does_not_matchth); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 231, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_The_shape_value_does_not_matchth); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 231, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "silx/math/chistogramnd_lut.pyx":236
* if(weighted_histo is not None and
@@ -49441,9 +48842,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'the <weighted_histo> shape.')
* else:
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_The_shape_value_does_not_matchth_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 236, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_The_shape_value_does_not_matchth_2); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 236, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "silx/math/chistogramnd_lut.pyx":253
* if weighted_histo is not None:
@@ -49452,9 +48853,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'the <weighted_histo> shape.')
* else:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_The_histo_shape_does_not_matchth); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_The_histo_shape_does_not_matchth); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "silx/math/chistogramnd_lut.pyx":267
* elif weighted_histo is not None:
@@ -49463,9 +48864,9 @@ static int __Pyx_InitCachedConstants(void) {
* ' do not match.')
* dtype = weighted_histo.dtype
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Provided_dtype_and_weighted_hist); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 267, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Provided_dtype_and_weighted_hist); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 267, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "silx/math/chistogramnd_lut.pyx":275
*
@@ -49474,53 +48875,9 @@ static int __Pyx_InitCachedConstants(void) {
* 'number of elements.')
*
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_The_LUT_and_weights_arrays_must); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 275, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
-
- /* "silx/math/chistogramnd_lut.pyx":279
- *
- * w_c = np.ascontiguousarray(weights.reshape((weights.size,)),
- * dtype=weights.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * h_c = np.ascontiguousarray(histo.reshape((histo.size,)),
- */
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 279, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
-
- /* "silx/math/chistogramnd_lut.pyx":282
- *
- * h_c = np.ascontiguousarray(histo.reshape((histo.size,)),
- * dtype=histo.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * w_h_c = np.ascontiguousarray(weighted_histo.reshape((weighted_histo.size,)),
- */
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
-
- /* "silx/math/chistogramnd_lut.pyx":285
- *
- * w_h_c = np.ascontiguousarray(weighted_histo.reshape((weighted_histo.size,)),
- * dtype=weighted_histo.dtype.newbyteorder('N')) # noqa # <<<<<<<<<<<<<<
- *
- * h_lut_c = np.ascontiguousarray(histo_lut.reshape((histo_lut.size,)),
- */
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
-
- /* "silx/math/chistogramnd_lut.pyx":288
- *
- * h_lut_c = np.ascontiguousarray(histo_lut.reshape((histo_lut.size,)),
- * histo_lut.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * rc = 0
- */
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 288, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_The_LUT_and_weights_arrays_must); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 275, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "silx/math/chistogramnd_lut.pyx":332
* @cython.nonecheck(False)
@@ -49529,18 +48886,12 @@ static int __Pyx_InitCachedConstants(void) {
* lut_t[:] i_lut,
* cnumpy.uint32_t[:] o_histo,
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s__21); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s__23); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "silx/math/chistogramnd_lut.pyx":361
* @cython.nonecheck(False)
@@ -49549,115 +48900,109 @@ static int __Pyx_InitCachedConstants(void) {
* int i_n_dims,
* int i_n_elems,
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s__21); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s__23); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":132
*
@@ -49666,9 +49011,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":135
*
@@ -49677,20 +49022,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "View.MemoryView":147
*
@@ -49699,9 +49033,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -49710,9 +49044,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -49721,9 +49055,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -49731,18 +49065,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -49751,9 +49085,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(2, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -49762,9 +49096,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(2, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -49773,9 +49107,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(2, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -49784,9 +49118,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(2, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -49795,12 +49129,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__52 = PyTuple_New(1); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(2, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
+ __pyx_tuple__34 = PyTuple_New(1); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__52, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__52);
+ PyTuple_SET_ITEM(__pyx_tuple__34, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__34);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -49808,18 +49142,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__53);
- __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -49828,9 +49162,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__55 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__55)) __PYX_ERR(2, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__55);
- __Pyx_GIVEREF(__pyx_slice__55);
+ __pyx_slice__37 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(2, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -49839,9 +49173,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__56 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__56)) __PYX_ERR(2, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__56);
- __Pyx_GIVEREF(__pyx_slice__56);
+ __pyx_slice__37 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(2, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -49850,9 +49184,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__57 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__57)) __PYX_ERR(2, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__57);
- __Pyx_GIVEREF(__pyx_slice__57);
+ __pyx_slice__37 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(2, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__37);
+ __Pyx_GIVEREF(__pyx_slice__37);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -49861,9 +49195,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(2, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -49871,18 +49205,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__59);
- __Pyx_GIVEREF(__pyx_tuple__59);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "silx/math/chistogramnd_lut.pyx":58
*
@@ -49891,10 +49225,10 @@ static int __Pyx_InitCachedConstants(void) {
* histo_range,
* n_bins,
*/
- __pyx_tuple__61 = PyTuple_Pack(26, __pyx_n_s_sample, __pyx_n_s_histo_range, __pyx_n_s_n_bins, __pyx_n_s_last_bin_closed, __pyx_n_s_s_shape, __pyx_n_s_n_dims, __pyx_n_s_i_histo_range, __pyx_n_s_err_histo_range, __pyx_n_s_sample_type, __pyx_n_s_n_elem, __pyx_n_s_lut_dtype, __pyx_n_s_lut, __pyx_n_s_histo, __pyx_n_s_dtype, __pyx_n_s_sample_c, __pyx_n_s_histo_range_c, __pyx_n_s_n_bins_c, __pyx_n_s_lut_c, __pyx_n_s_histo_c, __pyx_n_s_rc, __pyx_n_s_ex, __pyx_n_s_edges, __pyx_n_s_i_dim, __pyx_n_s_dim_edges, __pyx_n_s_rng_min, __pyx_n_s_rng_max); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 58, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__61);
- __Pyx_GIVEREF(__pyx_tuple__61);
- __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(4, 0, 26, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_get_lut, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 58, __pyx_L1_error)
+ __pyx_tuple__41 = PyTuple_Pack(26, __pyx_n_s_sample, __pyx_n_s_histo_range, __pyx_n_s_n_bins, __pyx_n_s_last_bin_closed, __pyx_n_s_s_shape, __pyx_n_s_n_dims, __pyx_n_s_i_histo_range, __pyx_n_s_err_histo_range, __pyx_n_s_sample_type, __pyx_n_s_n_elem, __pyx_n_s_lut_dtype, __pyx_n_s_lut, __pyx_n_s_histo, __pyx_n_s_dtype, __pyx_n_s_sample_c, __pyx_n_s_histo_range_c, __pyx_n_s_n_bins_c, __pyx_n_s_lut_c, __pyx_n_s_histo_c, __pyx_n_s_rc, __pyx_n_s_ex, __pyx_n_s_edges, __pyx_n_s_i_dim, __pyx_n_s_dim_edges, __pyx_n_s_rng_min, __pyx_n_s_rng_max); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 58, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(4, 0, 26, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_get_lut, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 58, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":211
*
@@ -49903,10 +49237,10 @@ static int __Pyx_InitCachedConstants(void) {
* histo_lut,
* histo=None,
*/
- __pyx_tuple__63 = PyTuple_Pack(17, __pyx_n_s_weights, __pyx_n_s_histo_lut, __pyx_n_s_histo, __pyx_n_s_weighted_histo, __pyx_n_s_shape, __pyx_n_s_dtype, __pyx_n_s_weight_min, __pyx_n_s_weight_max, __pyx_n_s_w_dtype, __pyx_n_s_w_c, __pyx_n_s_h_c, __pyx_n_s_w_h_c, __pyx_n_s_h_lut_c, __pyx_n_s_rc, __pyx_n_s_filt_min_weights, __pyx_n_s_filt_max_weights, __pyx_n_s_ex); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 211, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__63);
- __Pyx_GIVEREF(__pyx_tuple__63);
- __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(8, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_from_lut, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 211, __pyx_L1_error)
+ __pyx_tuple__43 = PyTuple_Pack(17, __pyx_n_s_weights, __pyx_n_s_histo_lut, __pyx_n_s_histo, __pyx_n_s_weighted_histo, __pyx_n_s_shape, __pyx_n_s_dtype, __pyx_n_s_weight_min, __pyx_n_s_weight_max, __pyx_n_s_w_dtype, __pyx_n_s_w_c, __pyx_n_s_h_c, __pyx_n_s_w_h_c, __pyx_n_s_h_lut_c, __pyx_n_s_rc, __pyx_n_s_filt_min_weights, __pyx_n_s_filt_max_weights, __pyx_n_s_ex); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 211, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(8, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_from_lut, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 211, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":332
* @cython.nonecheck(False)
@@ -49915,10 +49249,10 @@ static int __Pyx_InitCachedConstants(void) {
* lut_t[:] i_lut,
* cnumpy.uint32_t[:] o_histo,
*/
- __pyx_tuple__65 = PyTuple_Pack(10, __pyx_n_s_i_weights, __pyx_n_s_i_lut, __pyx_n_s_o_histo, __pyx_n_s_o_weighted_histo, __pyx_n_s_i_n_elems, __pyx_n_s_i_filt_min_weights, __pyx_n_s_i_weight_min, __pyx_n_s_i_filt_max_weights, __pyx_n_s_i_weight_max, __pyx_n_s_i); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__65);
- __Pyx_GIVEREF(__pyx_tuple__65);
- __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(9, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_from_lut_fused, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_tuple__45 = PyTuple_Pack(10, __pyx_n_s_i_weights, __pyx_n_s_i_lut, __pyx_n_s_o_histo, __pyx_n_s_o_weighted_histo, __pyx_n_s_i_n_elems, __pyx_n_s_i_filt_min_weights, __pyx_n_s_i_weight_min, __pyx_n_s_i_filt_max_weights, __pyx_n_s_i_weight_max, __pyx_n_s_i); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__45);
+ __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(9, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_from_lut_fused, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 332, __pyx_L1_error)
/* "silx/math/chistogramnd_lut.pyx":361
* @cython.nonecheck(False)
@@ -49927,10 +49261,10 @@ static int __Pyx_InitCachedConstants(void) {
* int i_n_dims,
* int i_n_elems,
*/
- __pyx_tuple__67 = PyTuple_Pack(17, __pyx_n_s_i_sample, __pyx_n_s_i_n_dims, __pyx_n_s_i_n_elems, __pyx_n_s_i_histo_range, __pyx_n_s_i_n_bins, __pyx_n_s_o_lut, __pyx_n_s_o_histo, __pyx_n_s_last_bin_closed, __pyx_n_s_i, __pyx_n_s_elem_idx, __pyx_n_s_max_idx, __pyx_n_s_lut_idx, __pyx_n_s_bin_idx, __pyx_n_s_elem_coord, __pyx_n_s_g_min, __pyx_n_s_g_max, __pyx_n_s_bins_range); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__67);
- __Pyx_GIVEREF(__pyx_tuple__67);
- __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(8, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_get_lut_fused, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_tuple__47 = PyTuple_Pack(17, __pyx_n_s_i_sample, __pyx_n_s_i_n_dims, __pyx_n_s_i_n_elems, __pyx_n_s_i_histo_range, __pyx_n_s_i_n_bins, __pyx_n_s_o_lut, __pyx_n_s_o_histo, __pyx_n_s_last_bin_closed, __pyx_n_s_i, __pyx_n_s_elem_idx, __pyx_n_s_max_idx, __pyx_n_s_lut_idx, __pyx_n_s_bin_idx, __pyx_n_s_elem_coord, __pyx_n_s_g_min, __pyx_n_s_g_max, __pyx_n_s_bins_range); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__47);
+ __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(8, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_chistogramnd_lut_pyx, __pyx_n_s_histogramnd_get_lut_fused, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 361, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -49939,9 +49273,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(2, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__69);
- __Pyx_GIVEREF(__pyx_tuple__69);
+ __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__49);
+ __Pyx_GIVEREF(__pyx_tuple__49);
/* "View.MemoryView":286
*
@@ -49950,9 +49284,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(2, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__50);
+ __Pyx_GIVEREF(__pyx_tuple__50);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -49961,9 +49295,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(2, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__71);
- __Pyx_GIVEREF(__pyx_tuple__71);
+ __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__51);
+ __Pyx_GIVEREF(__pyx_tuple__51);
/* "View.MemoryView":290
*
@@ -49972,9 +49306,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(2, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__72);
- __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__52);
+ __Pyx_GIVEREF(__pyx_tuple__52);
/* "View.MemoryView":291
*
@@ -49983,19 +49317,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(2, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__73);
- __Pyx_GIVEREF(__pyx_tuple__73);
+ __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__53);
+ __Pyx_GIVEREF(__pyx_tuple__53);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__74 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(2, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__74);
- __Pyx_GIVEREF(__pyx_tuple__74);
- __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_tuple__54 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__54);
+ __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -50003,7 +49337,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -50019,13 +49353,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -50112,23 +49446,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -50163,15 +49511,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -50184,7 +49523,30 @@ __Pyx_PyMODINIT_FUNC PyInit_chistogramnd_lut(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -50197,8 +49559,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -50219,7 +49583,7 @@ bad:
}
-static int __pyx_pymod_exec_chistogramnd_lut(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_chistogramnd_lut(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -50231,7 +49595,11 @@ static int __pyx_pymod_exec_chistogramnd_lut(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_6[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'chistogramnd_lut' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -50246,6 +49614,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_chistogramnd_lut(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -50300,7 +49671,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__chistogramnd_lut) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -50405,247 +49776,247 @@ if (!__Pyx_RefNanny) {
*/
__pyx_t_1 = __Pyx_PyDict_NewPresized(48); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_9_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int64_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_11_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int64_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_13_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int64_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_15_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int64_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_17_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int32_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_19_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int32_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_21_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int32_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_23_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int32_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_25_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int16_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_27_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int16_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_29_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int16_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_31_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float64_t_int16_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_33_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int64_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_35_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int64_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_37_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int64_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_39_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int64_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_41_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int32_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_43_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int32_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_45_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int32_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_47_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int32_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_49_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int16_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_51_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int16_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_53_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int16_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_55_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_float32_t_int16_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_57_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int64_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_59_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int64_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_61_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int64_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_63_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int64_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_65_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int32_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_67_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int32_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_69_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int32_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_71_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int32_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_73_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int16_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_75_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int16_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_77_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int16_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_79_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int32_t_int16_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_81_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int64_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_83_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int64_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_85_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int64_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0_3__pyx_mdef_4silx_4math_16chistogramnd_lut_87_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int64_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_89_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int32_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_91_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int32_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_93_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int32_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1_3__pyx_mdef_4silx_4math_16chistogramnd_lut_95_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int32_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_97_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int16_t_float64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_99_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int16_t_float32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_101_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int16_t_int32_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2_3__pyx_mdef_4silx_4math_16chistogramnd_lut_103_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_int64_t_int16_t_int64_t, __pyx_t_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_16chistogramnd_lut_5_histogramnd_from_lut_fused, 0, __pyx_n_s_histogramnd_from_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);
((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_1;
@@ -50662,67 +50033,67 @@ if (!__Pyx_RefNanny) {
*/
__pyx_t_3 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0__pyx_mdef_4silx_4math_16chistogramnd_lut_107_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float64_t_int64_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1__pyx_mdef_4silx_4math_16chistogramnd_lut_109_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float64_t_int32_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_2__pyx_mdef_4silx_4math_16chistogramnd_lut_111_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float64_t_int16_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0__pyx_mdef_4silx_4math_16chistogramnd_lut_113_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float32_t_int64_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1__pyx_mdef_4silx_4math_16chistogramnd_lut_115_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float32_t_int32_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_2__pyx_mdef_4silx_4math_16chistogramnd_lut_117_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_float32_t_int16_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0__pyx_mdef_4silx_4math_16chistogramnd_lut_119_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int32_t_int64_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1__pyx_mdef_4silx_4math_16chistogramnd_lut_121_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int32_t_int32_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_2__pyx_mdef_4silx_4math_16chistogramnd_lut_123_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int32_t_int16_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0__pyx_mdef_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0__pyx_mdef_4silx_4math_16chistogramnd_lut_125_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int64_t_int64_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1__pyx_mdef_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1__pyx_mdef_4silx_4math_16chistogramnd_lut_127_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int64_t_int32_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2__pyx_mdef_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_2__pyx_mdef_4silx_4math_16chistogramnd_lut_129_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_3, __pyx_kp_s_int64_t_int16_t, __pyx_t_4) < 0) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_16chistogramnd_lut_7_histogramnd_get_lut_fused, 0, __pyx_n_s_histogramnd_get_lut_fused, NULL, __pyx_n_s_silx_math_chistogramnd_lut, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
((__pyx_FusedFunctionObject *) __pyx_t_4)->__signatures__ = __pyx_t_3;
@@ -50760,7 +50131,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_5);
@@ -50774,7 +50145,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_5);
@@ -50788,7 +50159,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_5);
@@ -50802,7 +50173,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_5);
@@ -50816,7 +50187,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_5);
@@ -50904,9 +50275,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_5);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.chistogramnd_lut", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.chistogramnd_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.chistogramnd_lut");
}
@@ -50927,9 +50298,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -51125,7 +50496,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -51143,7 +50514,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -51159,7 +50530,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -51167,7 +50538,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -51197,41 +50568,49 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -51239,16 +50618,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -51266,7 +50644,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -51367,7 +50745,7 @@ done:
#endif
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -51386,8 +50764,37 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -51407,7 +50814,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -51446,9 +50853,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -51456,89 +50862,133 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+ if (likely(PyLong_CheckExact(op1))) {
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
+ const digit* digits = ((PyLongObject*)op1)->ob_digit;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- Py_RETURN_FALSE;
+ if (size <= 0)
+ Py_RETURN_FALSE;
}
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ if (PyFloat_CheckExact(op1)) {
+ const long b = intval;
+ double a = PyFloat_AS_DOUBLE(op1);
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
+}
+
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
+ if (op1 == op2) {
+ Py_RETURN_FALSE;
+ }
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_CheckExact(op1))) {
+ const long b = intval;
+ long a = PyInt_AS_LONG(op1);
+ if (a != b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_TRUE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
+ if (size <= 0)
Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a != (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_NE));
}
-#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -51562,7 +51012,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -51720,13 +51170,29 @@ bad:
}
#endif
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -51738,13 +51204,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -51760,7 +51227,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -51785,11 +51252,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -51822,13 +51290,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -51855,7 +51326,7 @@ bad:
}
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -51977,7 +51448,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -52006,7 +51477,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* SliceObject */
- static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
+static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
Py_ssize_t cstart, Py_ssize_t cstop,
PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
@@ -52104,7 +51575,7 @@ bad:
}
/* SetItemInt */
- static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
+static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
int r;
if (!j) return -1;
r = PyObject_SetItem(o, j, v);
@@ -52116,7 +51587,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
- if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
PyObject* old = PyList_GET_ITEM(o, n);
Py_INCREF(v);
PyList_SET_ITEM(o, n, v);
@@ -52141,10 +51612,11 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
#else
#if CYTHON_COMPILING_IN_PYPY
- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
+ if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
- if (is_list || PySequence_Check(o)) {
+ if (is_list || PySequence_Check(o))
#endif
+ {
return PySequence_SetItem(o, i, v);
}
#endif
@@ -52152,16 +51624,21 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -52171,7 +51648,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* UnicodeAsUCS4 */
- static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
+static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
Py_ssize_t length;
#if CYTHON_PEP393_ENABLED
length = PyUnicode_GET_LENGTH(x);
@@ -52202,7 +51679,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
}
/* object_ord */
- static long __Pyx__PyObject_Ord(PyObject* c) {
+static long __Pyx__PyObject_Ord(PyObject* c) {
Py_ssize_t size;
if (PyBytes_Check(c)) {
size = PyBytes_GET_SIZE(c);
@@ -52231,7 +51708,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -52266,7 +51743,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
}
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -52274,10 +51751,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -52286,22 +51764,112 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
-/* PyObjectCallMethod0 */
- static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
- PyObject *method, *result = NULL;
- method = __Pyx_PyObject_GetAttrStr(obj, method_name);
- if (unlikely(!method)) goto bad;
-#if CYTHON_UNPACK_METHODS
- if (likely(PyMethod_Check(method))) {
- PyObject *self = PyMethod_GET_SELF(method);
- if (likely(self)) {
- PyObject *function = PyMethod_GET_FUNCTION(method);
- result = __Pyx_PyObject_CallOneArg(function, self);
- Py_DECREF(method);
- return result;
+/* PyObjectGetMethod */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
+ PyObject *attr;
+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyObject *descr;
+ descrgetfunc f = NULL;
+ PyObject **dictptr, *dict;
+ int meth_found = 0;
+ assert (*method == NULL);
+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+ }
+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
+ return 0;
+ }
+ descr = _PyType_Lookup(tp, name);
+ if (likely(descr != NULL)) {
+ Py_INCREF(descr);
+#if PY_MAJOR_VERSION >= 3
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
+ #endif
+#else
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr)))
+ #endif
+#endif
+ {
+ meth_found = 1;
+ } else {
+ f = Py_TYPE(descr)->tp_descr_get;
+ if (f != NULL && PyDescr_IsData(descr)) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ }
+ }
+ dictptr = _PyObject_GetDictPtr(obj);
+ if (dictptr != NULL && (dict = *dictptr) != NULL) {
+ Py_INCREF(dict);
+ attr = __Pyx_PyDict_GetItemStr(dict, name);
+ if (attr != NULL) {
+ Py_INCREF(attr);
+ Py_DECREF(dict);
+ Py_XDECREF(descr);
+ goto try_unpack;
}
+ Py_DECREF(dict);
+ }
+ if (meth_found) {
+ *method = descr;
+ return 1;
+ }
+ if (f != NULL) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
}
+ if (descr != NULL) {
+ *method = descr;
+ return 0;
+ }
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'%.50s' object has no attribute '%U'",
+ tp->tp_name, name);
+#else
+ "'%.50s' object has no attribute '%.400s'",
+ tp->tp_name, PyString_AS_STRING(name));
#endif
+ return 0;
+#else
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+#endif
+try_unpack:
+#if CYTHON_UNPACK_METHODS
+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
+ PyObject *function = PyMethod_GET_FUNCTION(attr);
+ Py_INCREF(function);
+ Py_DECREF(attr);
+ *method = function;
+ return 1;
+ }
+#endif
+ *method = attr;
+ return 0;
+}
+
+/* PyObjectCallMethod0 */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+ PyObject *method = NULL, *result = NULL;
+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+ if (likely(is_method)) {
+ result = __Pyx_PyObject_CallOneArg(method, obj);
+ Py_DECREF(method);
+ return result;
+ }
+ if (unlikely(!method)) goto bad;
result = __Pyx_PyObject_CallNoArg(method);
Py_DECREF(method);
bad:
@@ -52309,20 +51877,20 @@ bad:
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -52334,12 +51902,12 @@ bad:
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* UnpackTupleError */
- static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
if (t == Py_None) {
__Pyx_RaiseNoneNotIterableError();
} else if (PyTuple_GET_SIZE(t) < index) {
@@ -52350,7 +51918,7 @@ bad:
}
/* UnpackTuple2 */
- static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
@@ -52402,7 +51970,7 @@ bad:
}
/* dict_iter */
- static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
Py_ssize_t* p_orig_length, int* p_source_is_dict) {
is_dict = is_dict || likely(PyDict_CheckExact(iterable));
*p_source_is_dict = is_dict;
@@ -52515,7 +52083,7 @@ static CYTHON_INLINE int __Pyx_dict_iter_next(
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -52653,7 +52221,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -52666,7 +52234,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -52687,7 +52255,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -52734,7 +52302,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -52813,6 +52381,9 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -52833,7 +52404,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -52841,7 +52412,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -52854,7 +52425,7 @@ return_ne:
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -52887,7 +52458,7 @@ return_ne:
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -52902,16 +52473,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -52936,7 +52508,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -52983,7 +52555,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -53001,7 +52573,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -53056,14 +52628,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -53073,12 +52673,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -53086,7 +52686,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -53128,7 +52728,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -53142,7 +52742,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -53160,7 +52760,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -53200,7 +52800,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -53210,7 +52810,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -53228,7 +52828,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -53303,8 +52903,69 @@ GOOD:
return ret;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -53343,7 +53004,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -53365,7 +53026,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -53377,7 +53038,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -53392,14 +53053,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -53411,20 +53073,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -53446,7 +53109,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -53457,7 +53120,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -53477,19 +53140,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -53518,7 +53181,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -53534,7 +53197,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -53548,7 +53211,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -53564,7 +53227,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -53578,7 +53241,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -53594,7 +53257,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -53774,7 +53437,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -53937,7 +53600,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* FusedFunction */
- static PyObject *
+static PyObject *
__pyx_FusedFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags,
PyObject *qualname, PyObject *self,
PyObject *module, PyObject *globals,
@@ -54267,8 +53930,8 @@ static int __pyx_FusedFunction_init(void) {
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -54281,7 +53944,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -54298,7 +53963,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -54307,7 +53972,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -54387,7 +54052,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -54495,8 +54160,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -54518,7 +54183,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -54554,7 +54219,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -54567,7 +54232,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -54578,7 +54243,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -55080,7 +54745,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -55121,7 +54786,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -55303,7 +54968,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55326,7 +54991,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55349,7 +55014,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55372,7 +55037,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55395,7 +55060,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55418,7 +55083,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55441,7 +55106,7 @@ __pyx_fail:
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -55463,7 +55128,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55486,7 +55151,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_int(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -55509,8 +55174,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -55540,7 +55205,7 @@ __pyx_fail:
}
/* Print */
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
static PyObject *__Pyx_GetStdout(void) {
PyObject *f = PySys_GetObject((char *)"stdout");
if (!f) {
@@ -55646,8 +55311,8 @@ bad:
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -55677,7 +55342,7 @@ bad:
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -55697,7 +55362,7 @@ bad:
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -55832,7 +55497,7 @@ bad:
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -55852,7 +55517,7 @@ bad:
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -55987,8 +55652,8 @@ bad:
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -56018,7 +55683,7 @@ bad:
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -56085,8 +55750,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -56274,8 +55939,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+ static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -56463,8 +56128,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) {
- const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0;
+ static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) {
+ const npy_int64 neg_one = (npy_int64) ((npy_int64) 0 - (npy_int64) 1), const_zero = (npy_int64) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -56652,7 +56317,7 @@ raise_neg_overflow:
}
/* PrintOne */
- #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
+ #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
if (!f) {
if (!(f = __Pyx_GetStdout()))
@@ -56689,14 +56354,14 @@ static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
#endif
/* BytesContains */
- static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
+ static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
const Py_ssize_t length = PyBytes_GET_SIZE(bytes);
char* char_start = PyBytes_AS_STRING(bytes);
return memchr(char_start, (unsigned char)character, (size_t)length) != NULL;
}
/* ImportNumPyArray */
- static PyObject* __Pyx__ImportNumPyArray(void) {
+ static PyObject* __Pyx__ImportNumPyArray(void) {
PyObject *numpy_module, *ndarray_object = NULL;
numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0);
if (likely(numpy_module)) {
@@ -56722,8 +56387,8 @@ static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -56911,8 +56576,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -57100,7 +56765,7 @@ raise_neg_overflow:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -57115,91 +56780,8 @@ raise_neg_overflow:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -57308,6 +56890,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -57385,7 +56974,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/colormap.c b/silx/math/colormap.c
index 87d5973..8b35c89 100644
--- a/silx/math/colormap.c
+++ b/silx/math/colormap.c
@@ -1,29 +1,29 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h",
"silx/math/include/math_compatibility.h"
- ],
+ ],
"extra_compile_args": [
"-fopenmp"
- ],
+ ],
"extra_link_args": [
"-fopenmp"
- ],
+ ],
"include_dirs": [
- "silx/math/include",
- "/usr/lib/python2.7/dist-packages/numpy/core/include"
- ],
- "language": "c",
- "name": "silx.math.colormap",
+ "silx/math/include",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include"
+ ],
+ "language": "c",
+ "name": "silx.math.colormap",
"sources": [
"silx/math/colormap.pyx"
]
- },
+ },
"module_name": "silx.math.colormap"
}
END: Cython Metadata */
@@ -35,7 +35,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -106,6 +107,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -143,6 +148,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -196,11 +205,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -336,6 +351,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -349,15 +367,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -465,8 +508,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -627,6 +670,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -685,6 +731,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -765,7 +812,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -938,7 +985,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -947,7 +994,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -956,7 +1003,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -965,7 +1012,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -974,7 +1021,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -983,7 +1030,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -992,7 +1039,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1001,7 +1048,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1010,7 +1057,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1019,7 +1066,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1028,7 +1075,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1037,7 +1084,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1046,7 +1093,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1055,7 +1102,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1064,7 +1111,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1073,7 +1120,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1082,7 +1129,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1091,7 +1138,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1100,7 +1147,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1109,7 +1156,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1118,7 +1165,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1157,7 +1204,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1166,7 +1213,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1175,7 +1222,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1184,7 +1231,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1449,7 +1496,25 @@ static void __Pyx_WriteUnraisable(const char *name, int clineno,
int full_traceback, int nogil);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1500,8 +1565,23 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1574,6 +1654,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
@@ -1671,13 +1754,8 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
@@ -1706,6 +1784,11 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1860,6 +1943,17 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable);
/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);
@@ -1901,6 +1995,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -2291,21 +2386,6 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* ObjectToMemviewSlice.proto */
static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *, int writable_flag);
@@ -2463,7 +2543,7 @@ static const char __pyx_k_O[] = "O";
static const char __pyx_k_c[] = "c";
static const char __pyx_k_f[] = "f";
static const char __pyx_k_s[] = "s";
-static const char __pyx_k__3[] = "|";
+static const char __pyx_k__2[] = "|";
static const char __pyx_k_f4[] = "=f4";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_MIT[] = "MIT";
@@ -2687,7 +2767,7 @@ static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
static PyObject *__pyx_kp_s_Unsupported_normalization_s;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_View_MemoryView;
-static PyObject *__pyx_kp_s__3;
+static PyObject *__pyx_kp_s__2;
static PyObject *__pyx_n_s_all;
static PyObject *__pyx_n_s_allocate_buffer;
static PyObject *__pyx_n_s_arange;
@@ -2923,16 +3003,14 @@ static PyObject *__pyx_int_6;
static PyObject *__pyx_int_4097;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
-static PyObject *__pyx_tuple__2;
+static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__57;
-static PyObject *__pyx_slice__58;
-static PyObject *__pyx_slice__59;
+static PyObject *__pyx_slice__27;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2950,51 +3028,21 @@ static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__54;
-static PyObject *__pyx_tuple__55;
-static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__60;
-static PyObject *__pyx_tuple__61;
-static PyObject *__pyx_tuple__62;
-static PyObject *__pyx_tuple__63;
-static PyObject *__pyx_tuple__64;
-static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__68;
-static PyObject *__pyx_tuple__69;
-static PyObject *__pyx_tuple__70;
-static PyObject *__pyx_tuple__71;
-static PyObject *__pyx_tuple__72;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_codeobj__65;
-static PyObject *__pyx_codeobj__67;
-static PyObject *__pyx_codeobj__74;
+static PyObject *__pyx_codeobj__33;
+static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__42;
/* Late includes */
/* "silx/math/colormap.pyx":94
@@ -3330,7 +3378,7 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3362,7 +3410,7 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -3750,7 +3798,6 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -3840,7 +3887,7 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3872,7 +3919,7 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -4260,7 +4307,6 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -4350,7 +4396,7 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4382,7 +4428,7 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -4770,7 +4816,6 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -4860,7 +4905,7 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -4892,7 +4937,7 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -5280,7 +5325,6 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -5370,7 +5414,7 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5402,7 +5446,7 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -5790,7 +5834,6 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -5880,7 +5923,7 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5912,7 +5955,7 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -6300,7 +6343,6 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -6390,7 +6432,7 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -6422,7 +6464,7 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -6810,7 +6852,6 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -6900,7 +6941,7 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -6932,7 +6973,7 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -7320,7 +7361,6 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -7410,7 +7450,7 @@ static __Pyx_memviewslice __pyx_fuse_4_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -7442,7 +7482,7 @@ static __Pyx_memviewslice __pyx_fuse_4_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -7830,7 +7870,6 @@ static __Pyx_memviewslice __pyx_fuse_4_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -7920,7 +7959,7 @@ static __Pyx_memviewslice __pyx_fuse_4_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -7952,7 +7991,7 @@ static __Pyx_memviewslice __pyx_fuse_4_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -8340,7 +8379,6 @@ static __Pyx_memviewslice __pyx_fuse_4_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -8430,7 +8468,7 @@ static __Pyx_memviewslice __pyx_fuse_5_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -8462,7 +8500,7 @@ static __Pyx_memviewslice __pyx_fuse_5_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -8850,7 +8888,6 @@ static __Pyx_memviewslice __pyx_fuse_5_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -8940,7 +8977,7 @@ static __Pyx_memviewslice __pyx_fuse_5_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -8972,7 +9009,7 @@ static __Pyx_memviewslice __pyx_fuse_5_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -9360,7 +9397,6 @@ static __Pyx_memviewslice __pyx_fuse_5_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -9450,7 +9486,7 @@ static __Pyx_memviewslice __pyx_fuse_6_0__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9482,7 +9518,7 @@ static __Pyx_memviewslice __pyx_fuse_6_0__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -9870,7 +9906,6 @@ static __Pyx_memviewslice __pyx_fuse_6_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -9960,7 +9995,7 @@ static __Pyx_memviewslice __pyx_fuse_6_1__pyx_f_4silx_4math_8colormap_compute_cm
* dtype=numpy.array(colors, copy=False).dtype)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9992,7 +10027,7 @@ static __Pyx_memviewslice __pyx_fuse_6_1__pyx_f_4silx_4math_8colormap_compute_cm
*/
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
@@ -10380,7 +10415,6 @@ static __Pyx_memviewslice __pyx_fuse_6_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -10484,7 +10518,7 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -10501,41 +10535,11 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -10550,39 +10554,39 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -10606,38 +10610,38 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -10788,7 +10792,6 @@ static __Pyx_memviewslice __pyx_fuse_0_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -10887,7 +10890,7 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -10904,41 +10907,11 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -10953,39 +10926,39 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -11009,38 +10982,38 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -11191,7 +11164,6 @@ static __Pyx_memviewslice __pyx_fuse_0_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -11290,7 +11262,7 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -11307,41 +11279,11 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -11356,39 +11298,39 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -11412,38 +11354,38 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -11594,7 +11536,6 @@ static __Pyx_memviewslice __pyx_fuse_1_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -11693,7 +11634,7 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -11710,41 +11651,11 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -11759,39 +11670,39 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -11815,38 +11726,38 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -11997,7 +11908,6 @@ static __Pyx_memviewslice __pyx_fuse_1_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -12096,7 +12006,7 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12113,41 +12023,11 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12162,39 +12042,39 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -12218,38 +12098,38 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -12400,7 +12280,6 @@ static __Pyx_memviewslice __pyx_fuse_2_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -12499,7 +12378,7 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12516,41 +12395,11 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12565,39 +12414,39 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -12621,38 +12470,38 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -12803,7 +12652,6 @@ static __Pyx_memviewslice __pyx_fuse_2_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -12902,7 +12750,7 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12919,41 +12767,11 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -12968,39 +12786,39 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -13024,38 +12842,38 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -13206,7 +13024,6 @@ static __Pyx_memviewslice __pyx_fuse_3_0__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -13305,7 +13122,7 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* values = numpy.arange(type_min, type_max + 1, dtype=numpy.float64)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -13322,41 +13139,11 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -13371,39 +13158,39 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
* lut = compute_cmap(
* values, colors, normalized_vmin, normalized_vmax,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_arange); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type_min); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_long((__pyx_v_type_max + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
__pyx_t_4 = 0;
- __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_values = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
@@ -13427,38 +13214,38 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
*
* with nogil:
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+ __pyx_t_6 = 0;
__pyx_t_5 = 0;
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_colors_dtype) < 0) __PYX_ERR(0, 261, __pyx_L1_error)
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 261, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 261, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_v_output = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
@@ -13609,7 +13396,6 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
__pyx_r.data = NULL;
__pyx_r.memview = NULL;
__Pyx_AddTraceback("silx.math.colormap.compute_cmap_with_lut", __pyx_clineno, __pyx_lineno, __pyx_filename);
-
goto __pyx_L2;
__pyx_L0:;
if (unlikely(!__pyx_r.memview)) {
@@ -13635,7 +13421,7 @@ static __Pyx_memviewslice __pyx_fuse_3_1__pyx_f_4silx_4math_8colormap_compute_cm
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_8colormap_1_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_8colormap__cmap[] = "_cmap(signatures, args, kwargs, defaults)\nImplementation of colormap.\n\n Use :func:`cmap`.\n\n :param data: Input data\n :param colors: Colors look-up-table\n :param normalization: Kind of scaling to apply on data\n :param vmin: Lower bound of the colormap range\n :param vmax: Upper bound of the colormap range\n :param nan_color: Color to use for NaN value.\n :return: The generated image\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_8colormap_1_cmap = {"_cmap", (PyCFunction)__pyx_pw_4silx_4math_8colormap_1_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_mdef_4silx_4math_8colormap_1_cmap = {"_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_8colormap_1_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_pw_4silx_4math_8colormap_1_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_signatures = 0;
PyObject *__pyx_v_args = 0;
@@ -13755,10 +13541,12 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
int __pyx_t_10;
int __pyx_t_11;
PyObject *__pyx_t_12 = NULL;
- Py_ssize_t __pyx_t_13;
- Py_ssize_t __pyx_t_14;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ Py_ssize_t __pyx_t_16;
+ Py_ssize_t __pyx_t_17;
+ int __pyx_t_18;
__Pyx_RefNannySetupContext("_cmap", 0);
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_t_1 = PyList_New(1 * 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
@@ -14677,36 +14465,60 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
__Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_6);
__pyx_t_6 = 0;
__pyx_v_match_found = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s_) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s_);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_13 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 277, __pyx_L1_error)
- __pyx_t_14 = __pyx_t_13;
- for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
- __pyx_v_i = __pyx_t_15;
- __pyx_t_12 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_6 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__2) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__2);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_16 = __pyx_t_15;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
+ __pyx_t_6 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_6);
+ __pyx_t_6 = 0;
__pyx_t_2 = (__pyx_v_dst_type != Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_12, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_13 = PyObject_RichCompare(__pyx_t_6, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_3) {
__pyx_v_match_found = 1;
goto __pyx_L129;
@@ -14721,14 +14533,14 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
__pyx_L127_break:;
__pyx_t_3 = (__pyx_v_match_found != 0);
if (__pyx_t_3) {
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 277, __pyx_L1_error)
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
__pyx_t_2 = ((!__pyx_t_3) != 0);
if (__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14737,7 +14549,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 277, __pyx_L1_error)
__pyx_t_2 = ((__pyx_t_9 > 1) != 0);
if (__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14761,6 +14573,8 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.math.colormap.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -14781,7 +14595,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap__cmap(CYTHON_UNUSED PyObject *__
/* Python wrapper */
static PyObject *__pyx_fuse_0_0__pyx_pw_4silx_4math_8colormap_5_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_0__pyx_mdef_4silx_4math_8colormap_5_cmap = {"__pyx_fuse_0_0_cmap", (PyCFunction)__pyx_fuse_0_0__pyx_pw_4silx_4math_8colormap_5_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_0_0__pyx_mdef_4silx_4math_8colormap_5_cmap = {"__pyx_fuse_0_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_0__pyx_pw_4silx_4math_8colormap_5_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_0_0__pyx_pw_4silx_4math_8colormap_5_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15088,7 +14902,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_4_cmap(CYTHON_UNUSED PyObject *_
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15127,7 +14941,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_4_cmap(CYTHON_UNUSED PyObject *_
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -15178,7 +14992,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_4_cmap(CYTHON_UNUSED PyObject *_
/* Python wrapper */
static PyObject *__pyx_fuse_0_1__pyx_pw_4silx_4math_8colormap_7_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0_1__pyx_mdef_4silx_4math_8colormap_7_cmap = {"__pyx_fuse_0_1_cmap", (PyCFunction)__pyx_fuse_0_1__pyx_pw_4silx_4math_8colormap_7_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_0_1__pyx_mdef_4silx_4math_8colormap_7_cmap = {"__pyx_fuse_0_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0_1__pyx_pw_4silx_4math_8colormap_7_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_0_1__pyx_pw_4silx_4math_8colormap_7_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15485,7 +15299,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_6_cmap(CYTHON_UNUSED PyObject *_
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15524,7 +15338,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_6_cmap(CYTHON_UNUSED PyObject *_
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -15575,7 +15389,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_6_cmap(CYTHON_UNUSED PyObject *_
/* Python wrapper */
static PyObject *__pyx_fuse_1_0__pyx_pw_4silx_4math_8colormap_9_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_0__pyx_mdef_4silx_4math_8colormap_9_cmap = {"__pyx_fuse_1_0_cmap", (PyCFunction)__pyx_fuse_1_0__pyx_pw_4silx_4math_8colormap_9_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_1_0__pyx_mdef_4silx_4math_8colormap_9_cmap = {"__pyx_fuse_1_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_0__pyx_pw_4silx_4math_8colormap_9_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_1_0__pyx_pw_4silx_4math_8colormap_9_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -15882,7 +15696,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_8_cmap(CYTHON_UNUSED PyObject *_
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15921,7 +15735,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_8_cmap(CYTHON_UNUSED PyObject *_
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -15972,7 +15786,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_8_cmap(CYTHON_UNUSED PyObject *_
/* Python wrapper */
static PyObject *__pyx_fuse_1_1__pyx_pw_4silx_4math_8colormap_11_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1_1__pyx_mdef_4silx_4math_8colormap_11_cmap = {"__pyx_fuse_1_1_cmap", (PyCFunction)__pyx_fuse_1_1__pyx_pw_4silx_4math_8colormap_11_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_1_1__pyx_mdef_4silx_4math_8colormap_11_cmap = {"__pyx_fuse_1_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1_1__pyx_pw_4silx_4math_8colormap_11_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_1_1__pyx_pw_4silx_4math_8colormap_11_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -16279,7 +16093,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_10_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -16318,7 +16132,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_10_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -16369,7 +16183,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_10_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_2_0__pyx_pw_4silx_4math_8colormap_13_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_0__pyx_mdef_4silx_4math_8colormap_13_cmap = {"__pyx_fuse_2_0_cmap", (PyCFunction)__pyx_fuse_2_0__pyx_pw_4silx_4math_8colormap_13_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_2_0__pyx_mdef_4silx_4math_8colormap_13_cmap = {"__pyx_fuse_2_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_0__pyx_pw_4silx_4math_8colormap_13_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_2_0__pyx_pw_4silx_4math_8colormap_13_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -16676,7 +16490,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_12_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -16715,7 +16529,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_12_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -16766,7 +16580,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_12_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_2_1__pyx_pw_4silx_4math_8colormap_15_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2_1__pyx_mdef_4silx_4math_8colormap_15_cmap = {"__pyx_fuse_2_1_cmap", (PyCFunction)__pyx_fuse_2_1__pyx_pw_4silx_4math_8colormap_15_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_2_1__pyx_mdef_4silx_4math_8colormap_15_cmap = {"__pyx_fuse_2_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2_1__pyx_pw_4silx_4math_8colormap_15_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_2_1__pyx_pw_4silx_4math_8colormap_15_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17073,7 +16887,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_14_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -17112,7 +16926,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_14_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -17163,7 +16977,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_14_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_3_0__pyx_pw_4silx_4math_8colormap_17_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_0__pyx_mdef_4silx_4math_8colormap_17_cmap = {"__pyx_fuse_3_0_cmap", (PyCFunction)__pyx_fuse_3_0__pyx_pw_4silx_4math_8colormap_17_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_3_0__pyx_mdef_4silx_4math_8colormap_17_cmap = {"__pyx_fuse_3_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_0__pyx_pw_4silx_4math_8colormap_17_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_3_0__pyx_pw_4silx_4math_8colormap_17_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17470,7 +17284,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_16_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -17509,7 +17323,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_16_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -17560,7 +17374,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_16_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_3_1__pyx_pw_4silx_4math_8colormap_19_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3_1__pyx_mdef_4silx_4math_8colormap_19_cmap = {"__pyx_fuse_3_1_cmap", (PyCFunction)__pyx_fuse_3_1__pyx_pw_4silx_4math_8colormap_19_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_3_1__pyx_mdef_4silx_4math_8colormap_19_cmap = {"__pyx_fuse_3_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3_1__pyx_pw_4silx_4math_8colormap_19_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_3_1__pyx_pw_4silx_4math_8colormap_19_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -17867,7 +17681,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_18_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -17906,7 +17720,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_18_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -17957,7 +17771,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_18_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_4_0__pyx_pw_4silx_4math_8colormap_21_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_4_0__pyx_mdef_4silx_4math_8colormap_21_cmap = {"__pyx_fuse_4_0_cmap", (PyCFunction)__pyx_fuse_4_0__pyx_pw_4silx_4math_8colormap_21_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_4_0__pyx_mdef_4silx_4math_8colormap_21_cmap = {"__pyx_fuse_4_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_4_0__pyx_pw_4silx_4math_8colormap_21_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_4_0__pyx_pw_4silx_4math_8colormap_21_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -18264,7 +18078,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_20_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -18303,7 +18117,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_20_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -18354,7 +18168,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_20_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_4_1__pyx_pw_4silx_4math_8colormap_23_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_4_1__pyx_mdef_4silx_4math_8colormap_23_cmap = {"__pyx_fuse_4_1_cmap", (PyCFunction)__pyx_fuse_4_1__pyx_pw_4silx_4math_8colormap_23_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_4_1__pyx_mdef_4silx_4math_8colormap_23_cmap = {"__pyx_fuse_4_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_4_1__pyx_pw_4silx_4math_8colormap_23_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_4_1__pyx_pw_4silx_4math_8colormap_23_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -18661,7 +18475,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_22_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -18700,7 +18514,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_22_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -18751,7 +18565,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_22_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_5_0__pyx_pw_4silx_4math_8colormap_25_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_5_0__pyx_mdef_4silx_4math_8colormap_25_cmap = {"__pyx_fuse_5_0_cmap", (PyCFunction)__pyx_fuse_5_0__pyx_pw_4silx_4math_8colormap_25_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_5_0__pyx_mdef_4silx_4math_8colormap_25_cmap = {"__pyx_fuse_5_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_5_0__pyx_pw_4silx_4math_8colormap_25_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_5_0__pyx_pw_4silx_4math_8colormap_25_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19058,7 +18872,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_24_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19097,7 +18911,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_24_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -19148,7 +18962,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_24_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_5_1__pyx_pw_4silx_4math_8colormap_27_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_5_1__pyx_mdef_4silx_4math_8colormap_27_cmap = {"__pyx_fuse_5_1_cmap", (PyCFunction)__pyx_fuse_5_1__pyx_pw_4silx_4math_8colormap_27_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_5_1__pyx_mdef_4silx_4math_8colormap_27_cmap = {"__pyx_fuse_5_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_5_1__pyx_pw_4silx_4math_8colormap_27_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_5_1__pyx_pw_4silx_4math_8colormap_27_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19455,7 +19269,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_26_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19494,7 +19308,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_26_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -19545,7 +19359,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_26_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_6_0__pyx_pw_4silx_4math_8colormap_29_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_6_0__pyx_mdef_4silx_4math_8colormap_29_cmap = {"__pyx_fuse_6_0_cmap", (PyCFunction)__pyx_fuse_6_0__pyx_pw_4silx_4math_8colormap_29_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_6_0__pyx_mdef_4silx_4math_8colormap_29_cmap = {"__pyx_fuse_6_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_6_0__pyx_pw_4silx_4math_8colormap_29_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_6_0__pyx_pw_4silx_4math_8colormap_29_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -19852,7 +19666,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_28_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19891,7 +19705,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_28_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -19942,7 +19756,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_28_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_6_1__pyx_pw_4silx_4math_8colormap_31_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_6_1__pyx_mdef_4silx_4math_8colormap_31_cmap = {"__pyx_fuse_6_1_cmap", (PyCFunction)__pyx_fuse_6_1__pyx_pw_4silx_4math_8colormap_31_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_6_1__pyx_mdef_4silx_4math_8colormap_31_cmap = {"__pyx_fuse_6_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_6_1__pyx_pw_4silx_4math_8colormap_31_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_6_1__pyx_pw_4silx_4math_8colormap_31_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -20249,7 +20063,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_30_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -20288,7 +20102,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_30_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -20339,7 +20153,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_30_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_7_0__pyx_pw_4silx_4math_8colormap_33_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_7_0__pyx_mdef_4silx_4math_8colormap_33_cmap = {"__pyx_fuse_7_0_cmap", (PyCFunction)__pyx_fuse_7_0__pyx_pw_4silx_4math_8colormap_33_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_7_0__pyx_mdef_4silx_4math_8colormap_33_cmap = {"__pyx_fuse_7_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_7_0__pyx_pw_4silx_4math_8colormap_33_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_7_0__pyx_pw_4silx_4math_8colormap_33_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -20646,7 +20460,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_32_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -20685,7 +20499,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_32_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -20736,7 +20550,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_32_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_7_1__pyx_pw_4silx_4math_8colormap_35_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_7_1__pyx_mdef_4silx_4math_8colormap_35_cmap = {"__pyx_fuse_7_1_cmap", (PyCFunction)__pyx_fuse_7_1__pyx_pw_4silx_4math_8colormap_35_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_7_1__pyx_mdef_4silx_4math_8colormap_35_cmap = {"__pyx_fuse_7_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_7_1__pyx_pw_4silx_4math_8colormap_35_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_7_1__pyx_pw_4silx_4math_8colormap_35_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21043,7 +20857,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_34_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -21082,7 +20896,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_34_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -21133,7 +20947,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_34_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_8_0__pyx_pw_4silx_4math_8colormap_37_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_8_0__pyx_mdef_4silx_4math_8colormap_37_cmap = {"__pyx_fuse_8_0_cmap", (PyCFunction)__pyx_fuse_8_0__pyx_pw_4silx_4math_8colormap_37_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_8_0__pyx_mdef_4silx_4math_8colormap_37_cmap = {"__pyx_fuse_8_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_8_0__pyx_pw_4silx_4math_8colormap_37_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_8_0__pyx_pw_4silx_4math_8colormap_37_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21440,7 +21254,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_36_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -21479,7 +21293,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_36_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -21530,7 +21344,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_36_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_8_1__pyx_pw_4silx_4math_8colormap_39_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_8_1__pyx_mdef_4silx_4math_8colormap_39_cmap = {"__pyx_fuse_8_1_cmap", (PyCFunction)__pyx_fuse_8_1__pyx_pw_4silx_4math_8colormap_39_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_8_1__pyx_mdef_4silx_4math_8colormap_39_cmap = {"__pyx_fuse_8_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_8_1__pyx_pw_4silx_4math_8colormap_39_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_8_1__pyx_pw_4silx_4math_8colormap_39_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -21837,7 +21651,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_38_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -21876,7 +21690,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_38_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -21927,7 +21741,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_38_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_9_0__pyx_pw_4silx_4math_8colormap_41_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_9_0__pyx_mdef_4silx_4math_8colormap_41_cmap = {"__pyx_fuse_9_0_cmap", (PyCFunction)__pyx_fuse_9_0__pyx_pw_4silx_4math_8colormap_41_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_9_0__pyx_mdef_4silx_4math_8colormap_41_cmap = {"__pyx_fuse_9_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_9_0__pyx_pw_4silx_4math_8colormap_41_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_9_0__pyx_pw_4silx_4math_8colormap_41_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -22234,7 +22048,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_40_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -22273,7 +22087,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_40_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -22324,7 +22138,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_40_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_9_1__pyx_pw_4silx_4math_8colormap_43_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_9_1__pyx_mdef_4silx_4math_8colormap_43_cmap = {"__pyx_fuse_9_1_cmap", (PyCFunction)__pyx_fuse_9_1__pyx_pw_4silx_4math_8colormap_43_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_9_1__pyx_mdef_4silx_4math_8colormap_43_cmap = {"__pyx_fuse_9_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_9_1__pyx_pw_4silx_4math_8colormap_43_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_9_1__pyx_pw_4silx_4math_8colormap_43_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -22631,7 +22445,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_42_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -22670,7 +22484,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_42_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -22721,7 +22535,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_42_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_10_0__pyx_pw_4silx_4math_8colormap_45_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_10_0__pyx_mdef_4silx_4math_8colormap_45_cmap = {"__pyx_fuse_10_0_cmap", (PyCFunction)__pyx_fuse_10_0__pyx_pw_4silx_4math_8colormap_45_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_10_0__pyx_mdef_4silx_4math_8colormap_45_cmap = {"__pyx_fuse_10_0_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_10_0__pyx_pw_4silx_4math_8colormap_45_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_10_0__pyx_pw_4silx_4math_8colormap_45_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -23028,7 +22842,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_44_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -23067,7 +22881,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_44_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -23118,7 +22932,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_44_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_fuse_10_1__pyx_pw_4silx_4math_8colormap_47_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_10_1__pyx_mdef_4silx_4math_8colormap_47_cmap = {"__pyx_fuse_10_1_cmap", (PyCFunction)__pyx_fuse_10_1__pyx_pw_4silx_4math_8colormap_47_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
+static PyMethodDef __pyx_fuse_10_1__pyx_mdef_4silx_4math_8colormap_47_cmap = {"__pyx_fuse_10_1_cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_10_1__pyx_pw_4silx_4math_8colormap_47_cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap__cmap};
static PyObject *__pyx_fuse_10_1__pyx_pw_4silx_4math_8colormap_47_cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_colors = { 0, 0, { 0 }, { 0 }, { 0 } };
@@ -23425,7 +23239,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_46_cmap(CYTHON_UNUSED PyObject *
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -23464,7 +23278,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_46_cmap(CYTHON_UNUSED PyObject *
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -23524,7 +23338,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_46_cmap(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_8colormap_3cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_8colormap_2cmap[] = "cmap(data, colors, double vmin, double vmax, str normalization='linear', nan_color=None)\nConvert data to colors with provided colors look-up table.\n\n :param numpy.ndarray data: The input data\n :param numpy.ndarray colors: Color look-up table as a 2D array.\n It MUST be of type uint8 or float32\n :param vmin: Data value to map to the beginning of colormap.\n :param vmax: Data value to map to the end of the colormap.\n :param str normalization: The normalization to apply:\n\n - 'linear' (default)\n - 'log'\n - 'arcsinh'\n - 'sqrt'\n\n :param nan_color: Color to use for NaN value.\n Default: A color with all channels set to 0\n :return: Array of colors. The shape of the\n returned array is that of data array + the last dimension of colors.\n The dtype of the returned array is that of the colors array.\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_8colormap_3cmap = {"cmap", (PyCFunction)__pyx_pw_4silx_4math_8colormap_3cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap_2cmap};
+static PyMethodDef __pyx_mdef_4silx_4math_8colormap_3cmap = {"cmap", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_8colormap_3cmap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_8colormap_2cmap};
static PyObject *__pyx_pw_4silx_4math_8colormap_3cmap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_colors = 0;
@@ -23684,7 +23498,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* native_endian_dtype = data.dtype.newbyteorder('N')
* if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -23712,14 +23526,26 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
* native_endian_dtype = "=f4" # Use native float32 instead of float16
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_native_endian_dtype = __pyx_t_4;
__pyx_t_4 = 0;
@@ -23741,11 +23567,11 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
}
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_native_endian_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 364, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_5 = __pyx_t_6;
__pyx_L4_bool_binop_done:;
if (__pyx_t_5) {
@@ -23776,25 +23602,25 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
*
* # Make colors a contiguous array of native endian type
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 366, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_data);
- __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 366, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_native_endian_dtype) < 0) __PYX_ERR(0, 366, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 366, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 366, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_v_native_endian_dtype) < 0) __PYX_ERR(0, 366, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
__pyx_t_2 = 0;
@@ -23805,24 +23631,24 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* nb_channels = colors.shape[colors.ndim - 1]
* colors = numpy.ascontiguousarray(colors,
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_colors);
__Pyx_GIVEREF(__pyx_v_colors);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_colors);
- __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 369, __pyx_L1_error)
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 369, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF_SET(__pyx_v_colors, __pyx_t_4);
__pyx_t_4 = 0;
@@ -23835,17 +23661,17 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
*/
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 370, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 370, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_nb_channels = __pyx_t_7;
/* "silx/math/colormap.pyx":371
@@ -23855,16 +23681,16 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* dtype=colors.dtype.newbyteorder('N'))
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_colors);
__Pyx_GIVEREF(__pyx_v_colors);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_colors);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_colors);
/* "silx/math/colormap.pyx":372
* nb_channels = colors.shape[colors.ndim - 1]
@@ -23875,16 +23701,28 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
*/
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 372, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/colormap.pyx":371
* colors = numpy.array(colors, copy=False)
@@ -23893,13 +23731,13 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* dtype=colors.dtype.newbyteorder('N'))
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 371, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF_SET(__pyx_v_colors, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_colors, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "silx/math/colormap.pyx":375
*
@@ -23919,34 +23757,34 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* else:
* nan_color = numpy.ascontiguousarray(
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
- __pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
__pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 376, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF_SET(__pyx_v_nan_color, __pyx_t_2);
__pyx_t_2 = 0;
@@ -23976,11 +23814,11 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* nan_color, dtype=colors.dtype).reshape(-1)
* assert nan_color.shape == (nb_channels,)
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 378, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/colormap.pyx":379
* else:
@@ -23989,17 +23827,17 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* assert nan_color.shape == (nb_channels,)
*
*/
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_nan_color);
__Pyx_GIVEREF(__pyx_v_nan_color);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_nan_color);
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nan_color);
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/math/colormap.pyx":378
* nan_color = numpy.zeros((nb_channels,), dtype=colors.dtype)
@@ -24008,11 +23846,11 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* nan_color, dtype=colors.dtype).reshape(-1)
* assert nan_color.shape == (nb_channels,)
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 378, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/colormap.pyx":379
* else:
@@ -24021,14 +23859,26 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* assert nan_color.shape == (nb_channels,)
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_nan_color, __pyx_t_4);
- __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 379, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_nan_color, __pyx_t_2);
+ __pyx_t_2 = 0;
}
__pyx_L6:;
@@ -24041,20 +23891,20 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
*/
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nan_color, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_nan_color, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_4);
+ PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
+ __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 380, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_6)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 380, __pyx_L1_error)
@@ -24069,8 +23919,8 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* data.reshape(-1),
* colors.reshape(-1, nb_channels),
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cmap); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_cmap); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
/* "silx/math/colormap.pyx":383
*
@@ -24079,11 +23929,23 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* colors.reshape(-1, nb_channels),
* normalization,
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 383, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 383, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/colormap.pyx":384
* image = _cmap(
@@ -24092,38 +23954,38 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* normalization,
* vmin, vmax, nan_color)
*/
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_colors, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 384, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = NULL;
__pyx_t_7 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_10)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_8, function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
__pyx_t_7 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_neg_1, __pyx_t_9};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 384, __pyx_L1_error)
+ if (PyFunction_Check(__pyx_t_3)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_neg_1, __pyx_t_8};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_neg_1, __pyx_t_9};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 384, __pyx_L1_error)
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_int_neg_1, __pyx_t_8};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
} else
#endif
{
@@ -24135,14 +23997,14 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_7, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_t_9);
- __pyx_t_9 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 384, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_8);
+ PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_t_8);
+ __pyx_t_8 = 0;
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/colormap.pyx":386
* colors.reshape(-1, nb_channels),
@@ -24151,77 +24013,77 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
* image.shape = data.shape + (nb_channels,)
*
*/
- __pyx_t_8 = PyFloat_FromDouble(__pyx_v_vmin); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 386, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_3 = PyFloat_FromDouble(__pyx_v_vmin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 386, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__pyx_t_11 = PyFloat_FromDouble(__pyx_v_vmax); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 386, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
- __pyx_t_9 = NULL;
+ __pyx_t_8 = NULL;
__pyx_t_7 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_9);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_9, function);
__pyx_t_7 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_3, __pyx_t_4, __pyx_v_normalization, __pyx_t_8, __pyx_t_11, __pyx_v_nan_color};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (PyFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_2, __pyx_t_1, __pyx_v_normalization, __pyx_t_3, __pyx_t_11, __pyx_v_nan_color};
+ __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_3, __pyx_t_4, __pyx_v_normalization, __pyx_t_8, __pyx_t_11, __pyx_v_nan_color};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+ PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_2, __pyx_t_1, __pyx_v_normalization, __pyx_t_3, __pyx_t_11, __pyx_v_nan_color};
+ __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 6+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
__pyx_t_10 = PyTuple_New(6+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 382, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- if (__pyx_t_9) {
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
+ if (__pyx_t_8) {
+ __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_7, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_7, __pyx_t_4);
+ __Pyx_GIVEREF(__pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_7, __pyx_t_2);
+ __Pyx_GIVEREF(__pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_7, __pyx_t_1);
__Pyx_INCREF(__pyx_v_normalization);
__Pyx_GIVEREF(__pyx_v_normalization);
PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_7, __pyx_v_normalization);
- __Pyx_GIVEREF(__pyx_t_8);
- PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_7, __pyx_t_8);
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_7, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_7, __pyx_t_11);
__Pyx_INCREF(__pyx_v_nan_color);
__Pyx_GIVEREF(__pyx_v_nan_color);
PyTuple_SET_ITEM(__pyx_t_10, 5+__pyx_t_7, __pyx_v_nan_color);
+ __pyx_t_2 = 0;
+ __pyx_t_1 = 0;
__pyx_t_3 = 0;
- __pyx_t_4 = 0;
- __pyx_t_8 = 0;
__pyx_t_11 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_image = __pyx_t_1;
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_v_image = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/colormap.pyx":387
* normalization,
@@ -24230,21 +24092,21 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
*
* return image
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 387, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 387, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_nb_channels); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 387, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 387, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 387, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GIVEREF(__pyx_t_9);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9);
+ __pyx_t_9 = 0;
+ __pyx_t_9 = PyNumber_Add(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 387, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- if (__Pyx_PyObject_SetAttrStr(__pyx_v_image, __pyx_n_s_shape, __pyx_t_2) < 0) __PYX_ERR(0, 387, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_image, __pyx_n_s_shape, __pyx_t_9) < 0) __PYX_ERR(0, 387, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/math/colormap.pyx":389
* image.shape = data.shape + (nb_channels,)
@@ -24287,7 +24149,7 @@ static PyObject *__pyx_pf_4silx_4math_8colormap_2cmap(CYTHON_UNUSED PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -24325,8 +24187,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -24335,7 +24198,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -24344,7 +24207,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -24353,7 +24216,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -24362,11 +24225,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -24376,53 +24239,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 229, __pyx_L1_error)
+ __PYX_ERR(1, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -24432,49 +24295,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 233, __pyx_L1_error)
+ __PYX_ERR(1, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -24483,7 +24346,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -24492,7 +24355,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -24502,7 +24365,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -24511,7 +24374,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -24520,7 +24383,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -24532,7 +24395,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -24541,7 +24404,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -24551,7 +24414,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -24561,7 +24424,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -24571,7 +24434,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -24582,7 +24445,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -24591,7 +24454,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -24600,7 +24463,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -24609,28 +24472,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -24643,7 +24507,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -24653,7 +24517,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -24663,7 +24527,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -24683,7 +24547,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -24700,7 +24564,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -24709,20 +24573,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 263, __pyx_L1_error)
+ __PYX_ERR(1, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -24731,7 +24595,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -24742,206 +24606,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 282, __pyx_L1_error)
+ __PYX_ERR(1, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -24950,7 +24814,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -24960,7 +24824,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -24969,7 +24833,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -24979,7 +24843,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -24988,7 +24852,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -24997,17 +24861,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(1, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -25017,7 +24881,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -25030,7 +24894,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -25049,7 +24913,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -25073,7 +24937,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -25083,7 +24947,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -25092,7 +24956,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -25101,7 +24965,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -25111,7 +24975,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -25120,7 +24984,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -25129,7 +24993,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -25141,7 +25005,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -25155,7 +25019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -25163,13 +25027,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -25188,7 +25052,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -25202,7 +25066,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -25210,13 +25074,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -25235,7 +25099,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -25249,7 +25113,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -25257,13 +25121,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -25282,7 +25146,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -25296,7 +25160,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -25304,13 +25168,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -25329,7 +25193,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -25343,7 +25207,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -25351,13 +25215,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -25376,7 +25240,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -25390,7 +25254,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -25400,7 +25264,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -25412,7 +25276,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -25421,7 +25285,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -25435,7 +25299,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -25450,7 +25314,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -25479,7 +25343,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -25488,7 +25352,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -25497,7 +25361,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -25506,21 +25370,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(1, 805, __pyx_L1_error)
+ __PYX_ERR(1, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -25529,15 +25393,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 806, __pyx_L1_error)
+ __PYX_ERR(1, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -25550,7 +25414,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(1, 807, __pyx_L1_error)
+ __PYX_ERR(1, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -25558,51 +25422,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 810, __pyx_L1_error)
+ __PYX_ERR(1, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -25611,7 +25475,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -25631,7 +25495,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -25648,7 +25512,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -25657,20 +25521,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 814, __pyx_L1_error)
+ __PYX_ERR(1, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -25679,7 +25543,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -25687,15 +25551,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -25704,7 +25568,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -25713,7 +25577,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -25724,7 +25588,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -25734,7 +25598,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -25744,19 +25608,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -25766,20 +25630,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 834, __pyx_L1_error)
+ __PYX_ERR(1, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -25788,252 +25652,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -26042,18 +25906,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -26062,18 +25926,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -26082,25 +25946,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -26108,18 +25972,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 855, __pyx_L1_error)
+ __PYX_ERR(1, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -26128,7 +25992,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -26138,7 +26002,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -26146,12 +26010,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -26161,7 +26025,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -26171,7 +26035,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -26196,166 +26060,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -26365,7 +26183,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -26386,7 +26204,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26402,16 +26220,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26425,7 +26243,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -26435,28 +26253,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __PYX_ERR(1, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26471,7 +26289,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -26494,7 +26312,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -26515,7 +26333,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26531,16 +26349,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26554,7 +26372,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -26564,28 +26382,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __PYX_ERR(1, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26600,7 +26418,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -26623,7 +26441,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -26644,7 +26462,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26660,16 +26478,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26683,7 +26501,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -26692,26 +26510,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __PYX_ERR(1, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -26726,7 +26544,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -26897,10 +26715,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -26946,7 +26764,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26978,7 +26796,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -27011,13 +26829,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -27036,13 +26866,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -27055,8 +26885,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(2, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -27093,10 +26923,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(2, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -27115,21 +26945,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -27148,24 +26978,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 152, __pyx_L1_error)
@@ -27196,7 +27026,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -27290,11 +27120,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 163, __pyx_L1_error)
@@ -27367,7 +27197,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -27417,8 +27247,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(2, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -27472,7 +27302,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -27608,7 +27438,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -28324,7 +28154,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -28377,7 +28207,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -28853,7 +28683,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -28899,7 +28729,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -30021,7 +29851,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31048,7 +30878,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -31404,7 +31234,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -31944,7 +31774,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32058,7 +31888,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__54, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__24, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -33059,7 +32889,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -33112,7 +32942,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -33463,9 +33293,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__57);
- __Pyx_GIVEREF(__pyx_slice__57);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__57);
+ __Pyx_INCREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__27);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 677, __pyx_L1_error)
@@ -33498,7 +33328,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__58); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__27); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -33548,7 +33378,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -33638,9 +33468,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__59);
- __Pyx_GIVEREF(__pyx_slice__59);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__59);
+ __Pyx_INCREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__27);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 691, __pyx_L1_error)
@@ -33764,7 +33594,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -35927,7 +35757,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -35980,7 +35810,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37861,7 +37691,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -37894,41 +37723,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -37948,7 +37747,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -37975,7 +37773,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -38012,41 +37809,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -38087,7 +37854,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -39195,7 +38961,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -39276,8 +39042,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -39334,41 +39099,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -39391,48 +39126,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -39445,8 +39152,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -39493,7 +39200,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -39523,7 +39229,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -39594,41 +39299,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -39656,7 +39331,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -40371,6 +40045,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
@@ -40411,7 +40094,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Unsupported_normalization_s, __pyx_k_Unsupported_normalization_s, sizeof(__pyx_k_Unsupported_normalization_s), 0, 0, 1, 0},
{&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
{&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
- {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
+ {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
{&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
{&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
{&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1},
@@ -40568,12 +40251,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 189, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 277, __pyx_L1_error)
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 307, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1000, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1038, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 147, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 150, __pyx_L1_error)
__pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(2, 399, __pyx_L1_error)
@@ -40584,7 +40267,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -40595,18 +40278,12 @@ static int __Pyx_InitCachedConstants(void) {
* image_types[:, ::1] colors,
* str normalization,
*/
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__4);
__Pyx_GIVEREF(__pyx_tuple__4);
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
/* "silx/math/colormap.pyx":313
*
@@ -40615,213 +40292,169 @@ static int __Pyx_InitCachedConstants(void) {
*
* # Proxy for calling the right implementation depending on data type
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 313, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
-
- /* "silx/math/colormap.pyx":363
- * # Make data a numpy array of native endian type (no need for contiguity)
- * data = numpy.array(data, copy=False)
- * native_endian_dtype = data.dtype.newbyteorder('N') # <<<<<<<<<<<<<<
- * if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
- * native_endian_dtype = "=f4" # Use native float32 instead of float16
- */
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
-
- /* "silx/math/colormap.pyx":372
- * nb_channels = colors.shape[colors.ndim - 1]
- * colors = numpy.ascontiguousarray(colors,
- * dtype=colors.dtype.newbyteorder('N')) # <<<<<<<<<<<<<<
- *
- * # Check nan_color
- */
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
-
- /* "silx/math/colormap.pyx":379
- * else:
- * nan_color = numpy.ascontiguousarray(
- * nan_color, dtype=colors.dtype).reshape(-1) # <<<<<<<<<<<<<<
- * assert nan_color.shape == (nb_channels,)
- *
- */
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 379, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
-
- /* "silx/math/colormap.pyx":383
- *
- * image = _cmap(
- * data.reshape(-1), # <<<<<<<<<<<<<<
- * colors.reshape(-1, nb_channels),
- * normalization,
- */
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 383, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Colormap_range_is_not_valid); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 313, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":132
*
@@ -40830,9 +40463,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(2, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":135
*
@@ -40841,20 +40474,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(2, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":147
*
@@ -40863,9 +40485,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -40874,9 +40496,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(2, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -40885,9 +40507,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(2, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -40895,18 +40517,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -40915,9 +40537,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(2, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -40926,9 +40548,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(2, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -40937,9 +40559,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(2, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -40948,9 +40570,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(2, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__53);
- __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -40959,12 +40581,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__54 = PyTuple_New(1); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(2, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
+ __pyx_tuple__24 = PyTuple_New(1); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__54, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__54);
+ PyTuple_SET_ITEM(__pyx_tuple__24, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -40972,18 +40594,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__55);
- __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -40992,9 +40614,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__57 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__57)) __PYX_ERR(2, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__57);
- __Pyx_GIVEREF(__pyx_slice__57);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(2, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -41003,9 +40625,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__58 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__58)) __PYX_ERR(2, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__58);
- __Pyx_GIVEREF(__pyx_slice__58);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(2, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -41014,9 +40636,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__59 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__59)) __PYX_ERR(2, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__59);
- __Pyx_GIVEREF(__pyx_slice__59);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(2, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -41025,9 +40647,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(2, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -41035,18 +40657,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__61);
- __Pyx_GIVEREF(__pyx_tuple__61);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__62);
- __Pyx_GIVEREF(__pyx_tuple__62);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "silx/math/colormap.pyx":113
* # Initialize log approximation LUT
@@ -41055,9 +40677,9 @@ static int __Pyx_InitCachedConstants(void) {
* endpoint=True).astype(numpy.float64))
* # index_lut can overflow of 1
*/
- __pyx_tuple__63 = PyTuple_Pack(3, __pyx_float_0_5, __pyx_float_1_, __pyx_int_4097); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__63);
- __Pyx_GIVEREF(__pyx_tuple__63);
+ __pyx_tuple__31 = PyTuple_Pack(3, __pyx_float_0_5, __pyx_float_1_, __pyx_int_4097); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "silx/math/colormap.pyx":277
* @cython.nonecheck(False)
@@ -41066,10 +40688,10 @@ static int __Pyx_InitCachedConstants(void) {
* image_types[:, ::1] colors,
* str normalization,
*/
- __pyx_tuple__64 = PyTuple_Pack(10, __pyx_n_s_data, __pyx_n_s_colors, __pyx_n_s_normalization, __pyx_n_s_vmin, __pyx_n_s_vmax, __pyx_n_s_nan_color, __pyx_n_s_normalized_vmin, __pyx_n_s_normalized_vmax, __pyx_n_s_scale_func, __pyx_n_s_output); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 277, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__64);
- __Pyx_GIVEREF(__pyx_tuple__64);
- __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(6, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_colormap_pyx, __pyx_n_s_cmap, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_tuple__32 = PyTuple_Pack(10, __pyx_n_s_data, __pyx_n_s_colors, __pyx_n_s_normalization, __pyx_n_s_vmin, __pyx_n_s_vmax, __pyx_n_s_nan_color, __pyx_n_s_normalized_vmin, __pyx_n_s_normalized_vmax, __pyx_n_s_scale_func, __pyx_n_s_output); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(6, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_colormap_pyx, __pyx_n_s_cmap, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 277, __pyx_L1_error)
/* "silx/math/colormap.pyx":332
*
@@ -41078,10 +40700,10 @@ static int __Pyx_InitCachedConstants(void) {
* colors,
* double vmin,
*/
- __pyx_tuple__66 = PyTuple_Pack(9, __pyx_n_s_data, __pyx_n_s_colors, __pyx_n_s_vmin, __pyx_n_s_vmax, __pyx_n_s_normalization, __pyx_n_s_nan_color, __pyx_n_s_nb_channels, __pyx_n_s_native_endian_dtype, __pyx_n_s_image); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 332, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__66);
- __Pyx_GIVEREF(__pyx_tuple__66);
- __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_colormap_pyx, __pyx_n_s_cmap_2, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __pyx_tuple__34 = PyTuple_Pack(9, __pyx_n_s_data, __pyx_n_s_colors, __pyx_n_s_vmin, __pyx_n_s_vmax, __pyx_n_s_normalization, __pyx_n_s_nan_color, __pyx_n_s_nb_channels, __pyx_n_s_native_endian_dtype, __pyx_n_s_image); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 332, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_colormap_pyx, __pyx_n_s_cmap_2, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 332, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -41090,9 +40712,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(2, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__68);
- __Pyx_GIVEREF(__pyx_tuple__68);
+ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
/* "View.MemoryView":286
*
@@ -41101,9 +40723,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(2, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__69);
- __Pyx_GIVEREF(__pyx_tuple__69);
+ __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -41112,9 +40734,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(2, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
/* "View.MemoryView":290
*
@@ -41123,9 +40745,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(2, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__71);
- __Pyx_GIVEREF(__pyx_tuple__71);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "View.MemoryView":291
*
@@ -41134,19 +40756,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(2, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__72);
- __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__73 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(2, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__73);
- __Pyx_GIVEREF(__pyx_tuple__73);
- __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_tuple__41 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -41154,7 +40776,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
/* InitThreads.init */
#ifdef WITH_THREAD
PyEval_InitThreads();
@@ -41177,13 +40799,13 @@ if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -41270,23 +40892,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -41321,15 +40957,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -41342,7 +40969,30 @@ __Pyx_PyMODINIT_FUNC PyInit_colormap(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -41355,8 +41005,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -41377,7 +41029,7 @@ bad:
}
-static int __pyx_pymod_exec_colormap(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_colormap(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -41392,7 +41044,11 @@ static int __pyx_pymod_exec_colormap(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_9[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'colormap' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -41407,6 +41063,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_colormap(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -41461,7 +41120,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__colormap) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -41567,12 +41226,12 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -41588,7 +41247,7 @@ if (!__Pyx_RefNanny) {
* numpy.linspace(0.5, 1., LOG_LUT_SIZE + 1,
* endpoint=True).astype(numpy.float64))
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -41601,7 +41260,7 @@ if (!__Pyx_RefNanny) {
* endpoint=True).astype(numpy.float64))
* # index_lut can overflow of 1
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -41625,7 +41284,7 @@ if (!__Pyx_RefNanny) {
* endpoint=True).astype(numpy.float64))
* # index_lut can overflow of 1
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__63, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__31, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -41640,7 +41299,7 @@ if (!__Pyx_RefNanny) {
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -41708,117 +41367,117 @@ if (!__Pyx_RefNanny) {
*/
__pyx_t_2 = __Pyx_PyDict_NewPresized(22); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0__pyx_mdef_4silx_4math_8colormap_5_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_0__pyx_mdef_4silx_4math_8colormap_5_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint8_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1__pyx_mdef_4silx_4math_8colormap_7_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0_1__pyx_mdef_4silx_4math_8colormap_7_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint8_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0__pyx_mdef_4silx_4math_8colormap_9_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_0__pyx_mdef_4silx_4math_8colormap_9_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int8_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1__pyx_mdef_4silx_4math_8colormap_11_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1_1__pyx_mdef_4silx_4math_8colormap_11_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int8_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0__pyx_mdef_4silx_4math_8colormap_13_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_0__pyx_mdef_4silx_4math_8colormap_13_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint16_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1__pyx_mdef_4silx_4math_8colormap_15_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2_1__pyx_mdef_4silx_4math_8colormap_15_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint16_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0__pyx_mdef_4silx_4math_8colormap_17_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_0__pyx_mdef_4silx_4math_8colormap_17_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int16_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1__pyx_mdef_4silx_4math_8colormap_19_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3_1__pyx_mdef_4silx_4math_8colormap_19_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int16_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4_0__pyx_mdef_4silx_4math_8colormap_21_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4_0__pyx_mdef_4silx_4math_8colormap_21_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint32_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4_1__pyx_mdef_4silx_4math_8colormap_23_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4_1__pyx_mdef_4silx_4math_8colormap_23_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint32_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5_0__pyx_mdef_4silx_4math_8colormap_25_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5_0__pyx_mdef_4silx_4math_8colormap_25_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int32_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5_1__pyx_mdef_4silx_4math_8colormap_27_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5_1__pyx_mdef_4silx_4math_8colormap_27_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int32_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6_0__pyx_mdef_4silx_4math_8colormap_29_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6_0__pyx_mdef_4silx_4math_8colormap_29_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint64_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6_1__pyx_mdef_4silx_4math_8colormap_31_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6_1__pyx_mdef_4silx_4math_8colormap_31_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_uint64_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7_0__pyx_mdef_4silx_4math_8colormap_33_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7_0__pyx_mdef_4silx_4math_8colormap_33_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int64_t_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7_1__pyx_mdef_4silx_4math_8colormap_35_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7_1__pyx_mdef_4silx_4math_8colormap_35_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_int64_t_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8_0__pyx_mdef_4silx_4math_8colormap_37_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8_0__pyx_mdef_4silx_4math_8colormap_37_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_float_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8_1__pyx_mdef_4silx_4math_8colormap_39_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8_1__pyx_mdef_4silx_4math_8colormap_39_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_float_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9_0__pyx_mdef_4silx_4math_8colormap_41_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9_0__pyx_mdef_4silx_4math_8colormap_41_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_double_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9_1__pyx_mdef_4silx_4math_8colormap_43_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9_1__pyx_mdef_4silx_4math_8colormap_43_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_double_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10_0__pyx_mdef_4silx_4math_8colormap_45_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10_0__pyx_mdef_4silx_4math_8colormap_45_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_long_double_uint8_t, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10_1__pyx_mdef_4silx_4math_8colormap_47_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10_1__pyx_mdef_4silx_4math_8colormap_47_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
if (PyDict_SetItem(__pyx_t_2, __pyx_kp_s_long_double_float, __pyx_t_4) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_8colormap_1_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
+ __pyx_t_4 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_8colormap_1_cmap, 0, __pyx_n_s_cmap, NULL, __pyx_n_s_silx_math_colormap, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_empty_tuple);
((__pyx_FusedFunctionObject *) __pyx_t_4)->__signatures__ = __pyx_t_2;
@@ -41868,7 +41527,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_1);
@@ -41882,7 +41541,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_1);
@@ -41896,7 +41555,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_1);
@@ -41910,7 +41569,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_1);
@@ -41924,7 +41583,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1);
@@ -42012,9 +41671,9 @@ if (!__Pyx_RefNanny) {
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.colormap", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.colormap", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.colormap");
}
@@ -42035,9 +41694,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -42158,34 +41817,42 @@ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -42205,7 +41872,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#endif
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -42343,14 +42010,14 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -42358,16 +42025,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -42385,7 +42051,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -42485,8 +42151,37 @@ done:
#endif
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -42506,7 +42201,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -42546,7 +42241,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* RaiseArgTupleInvalid */
- static void __Pyx_RaiseArgtupleInvalid(
+static void __Pyx_RaiseArgtupleInvalid(
const char* func_name,
int exact,
Py_ssize_t num_min,
@@ -42572,7 +42267,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
/* RaiseDoubleKeywords */
- static void __Pyx_RaiseDoubleKeywordsError(
+static void __Pyx_RaiseDoubleKeywordsError(
const char* func_name,
PyObject* kw_name)
{
@@ -42586,7 +42281,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
/* ParseKeywords */
- static int __Pyx_ParseOptionalKeywords(
+static int __Pyx_ParseOptionalKeywords(
PyObject *kwds,
PyObject **argnames[],
PyObject *kwds2,
@@ -42688,16 +42383,21 @@ bad:
}
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -42707,7 +42407,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -42866,7 +42566,7 @@ bad:
#endif
/* UnicodeAsUCS4 */
- static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
+static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
Py_ssize_t length;
#if CYTHON_PEP393_ENABLED
length = PyUnicode_GET_LENGTH(x);
@@ -42897,7 +42597,7 @@ bad:
}
/* object_ord */
- static long __Pyx__PyObject_Ord(PyObject* c) {
+static long __Pyx__PyObject_Ord(PyObject* c) {
Py_ssize_t size;
if (PyBytes_Check(c)) {
size = PyBytes_GET_SIZE(c);
@@ -42926,7 +42626,7 @@ bad:
}
/* SetItemInt */
- static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
+static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
int r;
if (!j) return -1;
r = PyObject_SetItem(o, j, v);
@@ -42938,7 +42638,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
- if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
PyObject* old = PyList_GET_ITEM(o, n);
Py_INCREF(v);
PyList_SET_ITEM(o, n, v);
@@ -42963,10 +42663,11 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
#else
#if CYTHON_COMPILING_IN_PYPY
- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
+ if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
- if (is_list || PySequence_Check(o)) {
+ if (is_list || PySequence_Check(o))
#endif
+ {
return PySequence_SetItem(o, i, v);
}
#endif
@@ -42974,7 +42675,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -43009,7 +42710,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -43017,10 +42718,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -43029,22 +42731,112 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
-/* PyObjectCallMethod0 */
- static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
- PyObject *method, *result = NULL;
- method = __Pyx_PyObject_GetAttrStr(obj, method_name);
- if (unlikely(!method)) goto bad;
-#if CYTHON_UNPACK_METHODS
- if (likely(PyMethod_Check(method))) {
- PyObject *self = PyMethod_GET_SELF(method);
- if (likely(self)) {
- PyObject *function = PyMethod_GET_FUNCTION(method);
- result = __Pyx_PyObject_CallOneArg(function, self);
- Py_DECREF(method);
- return result;
+/* PyObjectGetMethod */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
+ PyObject *attr;
+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyObject *descr;
+ descrgetfunc f = NULL;
+ PyObject **dictptr, *dict;
+ int meth_found = 0;
+ assert (*method == NULL);
+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+ }
+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
+ return 0;
+ }
+ descr = _PyType_Lookup(tp, name);
+ if (likely(descr != NULL)) {
+ Py_INCREF(descr);
+#if PY_MAJOR_VERSION >= 3
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
+ #endif
+#else
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr)))
+ #endif
+#endif
+ {
+ meth_found = 1;
+ } else {
+ f = Py_TYPE(descr)->tp_descr_get;
+ if (f != NULL && PyDescr_IsData(descr)) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ }
+ }
+ dictptr = _PyObject_GetDictPtr(obj);
+ if (dictptr != NULL && (dict = *dictptr) != NULL) {
+ Py_INCREF(dict);
+ attr = __Pyx_PyDict_GetItemStr(dict, name);
+ if (attr != NULL) {
+ Py_INCREF(attr);
+ Py_DECREF(dict);
+ Py_XDECREF(descr);
+ goto try_unpack;
}
+ Py_DECREF(dict);
+ }
+ if (meth_found) {
+ *method = descr;
+ return 1;
+ }
+ if (f != NULL) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ if (descr != NULL) {
+ *method = descr;
+ return 0;
+ }
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'%.50s' object has no attribute '%U'",
+ tp->tp_name, name);
+#else
+ "'%.50s' object has no attribute '%.400s'",
+ tp->tp_name, PyString_AS_STRING(name));
+#endif
+ return 0;
+#else
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+#endif
+try_unpack:
+#if CYTHON_UNPACK_METHODS
+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
+ PyObject *function = PyMethod_GET_FUNCTION(attr);
+ Py_INCREF(function);
+ Py_DECREF(attr);
+ *method = function;
+ return 1;
}
#endif
+ *method = attr;
+ return 0;
+}
+
+/* PyObjectCallMethod0 */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+ PyObject *method = NULL, *result = NULL;
+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+ if (likely(is_method)) {
+ result = __Pyx_PyObject_CallOneArg(method, obj);
+ Py_DECREF(method);
+ return result;
+ }
+ if (unlikely(!method)) goto bad;
result = __Pyx_PyObject_CallNoArg(method);
Py_DECREF(method);
bad:
@@ -43052,20 +42844,20 @@ bad:
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -43077,12 +42869,12 @@ bad:
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* UnpackTupleError */
- static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
if (t == Py_None) {
__Pyx_RaiseNoneNotIterableError();
} else if (PyTuple_GET_SIZE(t) < index) {
@@ -43093,7 +42885,7 @@ bad:
}
/* UnpackTuple2 */
- static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
@@ -43145,7 +42937,7 @@ bad:
}
/* dict_iter */
- static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
Py_ssize_t* p_orig_length, int* p_source_is_dict) {
is_dict = is_dict || likely(PyDict_CheckExact(iterable));
*p_source_is_dict = is_dict;
@@ -43258,7 +43050,7 @@ static CYTHON_INLINE int __Pyx_dict_iter_next(
}
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -43273,7 +43065,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -43291,7 +43083,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -43307,7 +43099,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -43315,7 +43107,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -43345,7 +43137,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -43366,7 +43158,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -43413,7 +43205,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -43492,6 +43284,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -43511,9 +43306,8 @@ return_ne:
#endif
}
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -43521,89 +43315,66 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -43725,7 +43496,7 @@ static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_U
#endif
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -43754,7 +43525,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* PyObjectSetAttrStr */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
PyTypeObject* tp = Py_TYPE(obj);
if (likely(tp->tp_setattro))
@@ -43768,7 +43539,7 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#endif
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -43780,13 +43551,29 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -43798,13 +43585,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -43820,7 +43608,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -43845,11 +43633,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -43882,13 +43671,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -43915,7 +43707,7 @@ bad:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -43923,7 +43715,7 @@ bad:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -43936,7 +43728,7 @@ bad:
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -43969,7 +43761,7 @@ bad:
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -43984,16 +43776,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -44018,7 +43811,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -44065,7 +43858,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -44083,7 +43876,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -44138,14 +43931,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -44155,7 +43976,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -44277,7 +44098,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -44285,7 +44106,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -44299,7 +44120,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -44317,7 +44138,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -44357,7 +44178,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -44367,7 +44188,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -44385,7 +44206,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -44460,14 +44281,75 @@ GOOD:
return ret;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -44506,7 +44388,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -44528,7 +44410,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -44540,7 +44422,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -44555,14 +44437,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -44574,20 +44457,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -44609,7 +44493,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -44620,7 +44504,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -44640,19 +44524,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -44681,7 +44565,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -44697,7 +44581,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -44711,7 +44595,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -44727,7 +44611,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -44741,7 +44625,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -44757,7 +44641,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -44937,7 +44821,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -45100,7 +44984,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* FusedFunction */
- static PyObject *
+static PyObject *
__pyx_FusedFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags,
PyObject *qualname, PyObject *self,
PyObject *module, PyObject *globals,
@@ -45430,8 +45314,8 @@ static int __pyx_FusedFunction_init(void) {
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -45444,7 +45328,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -45461,7 +45347,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -45470,7 +45356,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -45550,7 +45436,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -45658,8 +45544,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -45681,7 +45567,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -45717,7 +45603,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -45730,7 +45616,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -45741,7 +45627,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -46243,7 +46129,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -46284,7 +46170,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -46466,7 +46352,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46489,7 +46375,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int8_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46512,7 +46398,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint16_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint16_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46535,7 +46421,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46558,7 +46444,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46581,7 +46467,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46604,7 +46490,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46627,7 +46513,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46650,7 +46536,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46673,7 +46559,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46696,7 +46582,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_long__double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_long__double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -46719,7 +46605,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -46742,7 +46628,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -46765,7 +46651,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_uint8_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -46788,7 +46674,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -46811,8 +46697,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint32(npy_uint32 value) {
- const npy_uint32 neg_one = (npy_uint32) -1, const_zero = (npy_uint32) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint32(npy_uint32 value) {
+ const npy_uint32 neg_one = (npy_uint32) ((npy_uint32) 0 - (npy_uint32) 1), const_zero = (npy_uint32) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_uint32) < sizeof(long)) {
@@ -46842,7 +46728,7 @@ __pyx_fail:
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -46864,7 +46750,7 @@ __pyx_fail:
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint32_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint32_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_uint32(*(__pyx_t_5numpy_uint32_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint32_t(const char *itemp, PyObject *obj) {
@@ -46876,8 +46762,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint32_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint8(npy_uint8 value) {
- const npy_uint8 neg_one = (npy_uint8) -1, const_zero = (npy_uint8) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint8(npy_uint8 value) {
+ const npy_uint8 neg_one = (npy_uint8) ((npy_uint8) 0 - (npy_uint8) 1), const_zero = (npy_uint8) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_uint8) < sizeof(long)) {
@@ -46907,7 +46793,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint32_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint8_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint8_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_uint8(*(__pyx_t_5numpy_uint8_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint8_t(const char *itemp, PyObject *obj) {
@@ -46919,8 +46805,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint8_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -46950,7 +46836,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint8_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(float *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj) {
@@ -46962,8 +46848,8 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int32(npy_int32 value) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_int32) < sizeof(long)) {
@@ -46993,7 +46879,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int32_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int32_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_int32(*(__pyx_t_5numpy_int32_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char *itemp, PyObject *obj) {
@@ -47005,8 +46891,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value) {
- const npy_uint64 neg_one = (npy_uint64) -1, const_zero = (npy_uint64) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint64(npy_uint64 value) {
+ const npy_uint64 neg_one = (npy_uint64) ((npy_uint64) 0 - (npy_uint64) 1), const_zero = (npy_uint64) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_uint64) < sizeof(long)) {
@@ -47036,7 +46922,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int32_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint64_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint64_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_uint64(*(__pyx_t_5numpy_uint64_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint64_t(const char *itemp, PyObject *obj) {
@@ -47048,8 +46934,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint64_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value) {
- const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int64(npy_int64 value) {
+ const npy_int64 neg_one = (npy_int64) ((npy_int64) 0 - (npy_int64) 1), const_zero = (npy_int64) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_int64) < sizeof(long)) {
@@ -47079,7 +46965,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint64_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int64_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int64_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_int64(*(__pyx_t_5numpy_int64_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int64_t(const char *itemp, PyObject *obj) {
@@ -47091,7 +46977,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int64_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -47103,7 +46989,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_long__double(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_long__double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(long double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObject *obj) {
@@ -47115,8 +47001,8 @@ static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -47146,8 +47032,8 @@ static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int8(npy_int8 value) {
- const npy_int8 neg_one = (npy_int8) -1, const_zero = (npy_int8) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int8(npy_int8 value) {
+ const npy_int8 neg_one = (npy_int8) ((npy_int8) 0 - (npy_int8) 1), const_zero = (npy_int8) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_int8) < sizeof(long)) {
@@ -47177,7 +47063,7 @@ static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int8_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int8_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_int8(*(__pyx_t_5numpy_int8_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int8_t(const char *itemp, PyObject *obj) {
@@ -47189,8 +47075,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int8_t(const char *
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint16(npy_uint16 value) {
- const npy_uint16 neg_one = (npy_uint16) -1, const_zero = (npy_uint16) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_uint16(npy_uint16 value) {
+ const npy_uint16 neg_one = (npy_uint16) ((npy_uint16) 0 - (npy_uint16) 1), const_zero = (npy_uint16) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_uint16) < sizeof(long)) {
@@ -47220,7 +47106,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int8_t(const char *
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint16_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_uint16_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_uint16(*(__pyx_t_5numpy_uint16_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint16_t(const char *itemp, PyObject *obj) {
@@ -47232,8 +47118,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint16_t(const char
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int16(npy_int16 value) {
- const npy_int16 neg_one = (npy_int16) -1, const_zero = (npy_int16) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_int16(npy_int16 value) {
+ const npy_int16 neg_one = (npy_int16) ((npy_int16) 0 - (npy_int16) 1), const_zero = (npy_int16) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(npy_int16) < sizeof(long)) {
@@ -47263,7 +47149,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_uint16_t(const char
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int16_t(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_nn___pyx_t_5numpy_int16_t(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_npy_int16(*(__pyx_t_5numpy_int16_t *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char *itemp, PyObject *obj) {
@@ -47275,7 +47161,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -47295,7 +47181,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -47430,7 +47316,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -47450,7 +47336,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -47585,8 +47471,8 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -47616,7 +47502,7 @@ static CYTHON_INLINE int __pyx_memview_set_nn___pyx_t_5numpy_int16_t(const char
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -47683,8 +47569,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *x) {
- const npy_uint32 neg_one = (npy_uint32) -1, const_zero = (npy_uint32) 0;
+ static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *x) {
+ const npy_uint32 neg_one = (npy_uint32) ((npy_uint32) 0 - (npy_uint32) 1), const_zero = (npy_uint32) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -47872,8 +47758,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -48061,8 +47947,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_uint8 __Pyx_PyInt_As_npy_uint8(PyObject *x) {
- const npy_uint8 neg_one = (npy_uint8) -1, const_zero = (npy_uint8) 0;
+ static CYTHON_INLINE npy_uint8 __Pyx_PyInt_As_npy_uint8(PyObject *x) {
+ const npy_uint8 neg_one = (npy_uint8) ((npy_uint8) 0 - (npy_uint8) 1), const_zero = (npy_uint8) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -48250,8 +48136,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
- const npy_int32 neg_one = (npy_int32) -1, const_zero = (npy_int32) 0;
+ static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -48439,8 +48325,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_uint64 __Pyx_PyInt_As_npy_uint64(PyObject *x) {
- const npy_uint64 neg_one = (npy_uint64) -1, const_zero = (npy_uint64) 0;
+ static CYTHON_INLINE npy_uint64 __Pyx_PyInt_As_npy_uint64(PyObject *x) {
+ const npy_uint64 neg_one = (npy_uint64) ((npy_uint64) 0 - (npy_uint64) 1), const_zero = (npy_uint64) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -48628,8 +48514,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) {
- const npy_int64 neg_one = (npy_int64) -1, const_zero = (npy_int64) 0;
+ static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) {
+ const npy_int64 neg_one = (npy_int64) ((npy_int64) 0 - (npy_int64) 1), const_zero = (npy_int64) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -48817,8 +48703,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int8 __Pyx_PyInt_As_npy_int8(PyObject *x) {
- const npy_int8 neg_one = (npy_int8) -1, const_zero = (npy_int8) 0;
+ static CYTHON_INLINE npy_int8 __Pyx_PyInt_As_npy_int8(PyObject *x) {
+ const npy_int8 neg_one = (npy_int8) ((npy_int8) 0 - (npy_int8) 1), const_zero = (npy_int8) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -49006,8 +48892,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_uint16 __Pyx_PyInt_As_npy_uint16(PyObject *x) {
- const npy_uint16 neg_one = (npy_uint16) -1, const_zero = (npy_uint16) 0;
+ static CYTHON_INLINE npy_uint16 __Pyx_PyInt_As_npy_uint16(PyObject *x) {
+ const npy_uint16 neg_one = (npy_uint16) ((npy_uint16) 0 - (npy_uint16) 1), const_zero = (npy_uint16) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -49195,8 +49081,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE npy_int16 __Pyx_PyInt_As_npy_int16(PyObject *x) {
- const npy_int16 neg_one = (npy_int16) -1, const_zero = (npy_int16) 0;
+ static CYTHON_INLINE npy_int16 __Pyx_PyInt_As_npy_int16(PyObject *x) {
+ const npy_int16 neg_one = (npy_int16) ((npy_int16) 0 - (npy_int16) 1), const_zero = (npy_int16) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -49384,14 +49270,14 @@ raise_neg_overflow:
}
/* BytesContains */
- static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
+ static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
const Py_ssize_t length = PyBytes_GET_SIZE(bytes);
char* char_start = PyBytes_AS_STRING(bytes);
return memchr(char_start, (unsigned char)character, (size_t)length) != NULL;
}
/* ImportNumPyArray */
- static PyObject* __Pyx__ImportNumPyArray(void) {
+ static PyObject* __Pyx__ImportNumPyArray(void) {
PyObject *numpy_module, *ndarray_object = NULL;
numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0);
if (likely(numpy_module)) {
@@ -49417,8 +49303,8 @@ static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -49606,8 +49492,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -49795,7 +49681,7 @@ raise_neg_overflow:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -49810,91 +49696,8 @@ raise_neg_overflow:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -49917,7 +49720,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -50026,6 +49829,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -50103,7 +49913,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/combo.c b/silx/math/combo.c
index 972ed5c..584a0ed 100644
--- a/silx/math/combo.c
+++ b/silx/math/combo.c
@@ -1,20 +1,20 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
"silx/math/include/math_compatibility.h"
- ],
+ ],
"include_dirs": [
"silx/math/include"
- ],
- "language": "c",
- "name": "silx.math.combo",
+ ],
+ "language": "c",
+ "name": "silx.math.combo",
"sources": [
"silx/math/combo.pyx"
]
- },
+ },
"module_name": "silx.math.combo"
}
END: Cython Metadata */
@@ -26,7 +26,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -97,6 +98,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -134,6 +139,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -187,11 +196,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -327,6 +342,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -340,15 +358,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -456,8 +499,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -615,6 +658,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -673,6 +719,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -753,7 +800,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1288,13 +1335,8 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1375,6 +1417,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCallMethO.proto */
@@ -1417,6 +1471,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
@@ -1453,6 +1510,9 @@ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict,
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
(__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
@@ -1493,7 +1553,25 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
#endif
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* MemviewSliceInit.proto */
#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d
@@ -1596,6 +1674,11 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1756,6 +1839,7 @@ typedef struct {
PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
__Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
@@ -2163,7 +2247,7 @@ static const char __pyx_k_c[] = "c";
static const char __pyx_k_f[] = "f";
static const char __pyx_k__3[] = "";
static const char __pyx_k__4[] = "()";
-static const char __pyx_k__6[] = "|";
+static const char __pyx_k__5[] = "|";
static const char __pyx_k_f4[] = "=f4";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_MIT[] = "MIT";
@@ -2385,7 +2469,7 @@ static PyObject *__pyx_n_s_View_MemoryView;
static PyObject *__pyx_kp_s_Zero_size_array;
static PyObject *__pyx_kp_s__3;
static PyObject *__pyx_kp_s__4;
-static PyObject *__pyx_kp_s__6;
+static PyObject *__pyx_kp_s__5;
static PyObject *__pyx_n_s_allocate_buffer;
static PyObject *__pyx_n_s_argmax;
static PyObject *__pyx_n_s_argmax_2;
@@ -2617,15 +2701,12 @@ static PyObject *__pyx_int_2;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_k__2;
-static PyObject *__pyx_k__23;
+static PyObject *__pyx_k__9;
static PyObject *__pyx_tuple_;
-static PyObject *__pyx_tuple__5;
+static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
-static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__47;
-static PyObject *__pyx_slice__48;
-static PyObject *__pyx_slice__49;
+static PyObject *__pyx_slice__24;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2639,50 +2720,28 @@ static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__54;
-static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__60;
-static PyObject *__pyx_tuple__62;
-static PyObject *__pyx_tuple__64;
-static PyObject *__pyx_tuple__65;
-static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__67;
-static PyObject *__pyx_tuple__68;
-static PyObject *__pyx_tuple__69;
-static PyObject *__pyx_codeobj__55;
-static PyObject *__pyx_codeobj__57;
-static PyObject *__pyx_codeobj__59;
-static PyObject *__pyx_codeobj__61;
-static PyObject *__pyx_codeobj__63;
-static PyObject *__pyx_codeobj__70;
+static PyObject *__pyx_codeobj__30;
+static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__34;
+static PyObject *__pyx_codeobj__36;
+static PyObject *__pyx_codeobj__38;
+static PyObject *__pyx_codeobj__45;
/* Late includes */
/* "silx/math/combo.pyx":80
@@ -2966,7 +3025,7 @@ static PyObject *__pyx_lambda_funcdef_4silx_4math_5combo_13_MinMaxResult_lambda5
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_5combo_13_MinMaxResult_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_5combo_13_MinMaxResult___init__[] = "_MinMaxResult.__init__(self, minimum, min_pos, maximum, argmin, argmin_pos, argmax)";
-static PyMethodDef __pyx_mdef_4silx_4math_5combo_13_MinMaxResult_1__init__ = {"__init__", (PyCFunction)__pyx_pw_4silx_4math_5combo_13_MinMaxResult_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_13_MinMaxResult___init__};
+static PyMethodDef __pyx_mdef_4silx_4math_5combo_13_MinMaxResult_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_5combo_13_MinMaxResult_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_13_MinMaxResult___init__};
static PyObject *__pyx_pw_4silx_4math_5combo_13_MinMaxResult_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_minimum = 0;
@@ -3171,7 +3230,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_13_MinMaxResult___init__(CYTHON_UNU
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_5combo_13_MinMaxResult_3__getitem__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_5combo_13_MinMaxResult_2__getitem__[] = "_MinMaxResult.__getitem__(self, key)";
-static PyMethodDef __pyx_mdef_4silx_4math_5combo_13_MinMaxResult_3__getitem__ = {"__getitem__", (PyCFunction)__pyx_pw_4silx_4math_5combo_13_MinMaxResult_3__getitem__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_13_MinMaxResult_2__getitem__};
+static PyMethodDef __pyx_mdef_4silx_4math_5combo_13_MinMaxResult_3__getitem__ = {"__getitem__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_5combo_13_MinMaxResult_3__getitem__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_13_MinMaxResult_2__getitem__};
static PyObject *__pyx_pw_4silx_4math_5combo_13_MinMaxResult_3__getitem__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_key = 0;
@@ -3355,7 +3414,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_13_MinMaxResult_2__getitem__(CYTHON
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_5combo_1_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_5combo__min_max[] = "_min_max(signatures, args, kwargs, defaults)\n:func:`min_max` implementation including infinite values\n\n See :func:`min_max` for documentation.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_5combo_1_min_max = {"_min_max", (PyCFunction)__pyx_pw_4silx_4math_5combo_1_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_mdef_4silx_4math_5combo_1_min_max = {"_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_5combo_1_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_pw_4silx_4math_5combo_1_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_signatures = 0;
PyObject *__pyx_v_args = 0;
@@ -3478,10 +3537,12 @@ static PyObject *__pyx_pf_4silx_4math_5combo__min_max(CYTHON_UNUSED PyObject *__
int __pyx_t_10;
int __pyx_t_11;
PyObject *__pyx_t_12 = NULL;
- Py_ssize_t __pyx_t_13;
- Py_ssize_t __pyx_t_14;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ Py_ssize_t __pyx_t_16;
+ Py_ssize_t __pyx_t_17;
+ int __pyx_t_18;
__Pyx_RefNannySetupContext("_min_max", 0);
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
@@ -4257,36 +4318,60 @@ static PyObject *__pyx_pf_4silx_4math_5combo__min_max(CYTHON_UNUSED PyObject *__
__Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_v_match_found = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s__4) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__4);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_13 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 118, __pyx_L1_error)
- __pyx_t_14 = __pyx_t_13;
- for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
- __pyx_v_i = __pyx_t_15;
- __pyx_t_12 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__5) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__5);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_16 = __pyx_t_15;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1);
+ __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_v_dst_type != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_12, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_2) {
__pyx_v_match_found = 1;
goto __pyx_L121;
@@ -4301,14 +4386,14 @@ static PyObject *__pyx_pf_4silx_4math_5combo__min_max(CYTHON_UNUSED PyObject *__
__pyx_L119_break:;
__pyx_t_2 = (__pyx_v_match_found != 0);
if (__pyx_t_2) {
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 118, __pyx_L1_error)
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
__pyx_t_3 = ((!__pyx_t_2) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -4317,7 +4402,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo__min_max(CYTHON_UNUSED PyObject *__
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 118, __pyx_L1_error)
__pyx_t_3 = ((__pyx_t_9 > 1) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -4341,6 +4426,8 @@ static PyObject *__pyx_pf_4silx_4math_5combo__min_max(CYTHON_UNUSED PyObject *__
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.math.combo.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4399,7 +4486,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_68__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_0__pyx_pw_4silx_4math_5combo_7_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0__pyx_mdef_4silx_4math_5combo_7_min_max = {"__pyx_fuse_0_min_max", (PyCFunction)__pyx_fuse_0__pyx_pw_4silx_4math_5combo_7_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_0__pyx_mdef_4silx_4math_5combo_7_min_max = {"__pyx_fuse_0_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_4silx_4math_5combo_7_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_0__pyx_pw_4silx_4math_5combo_7_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -4565,7 +4652,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_6_min_max(CYTHON_UNUSED PyObject *_
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -5198,7 +5285,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_6_min_max(CYTHON_UNUSED PyObject *_
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
@@ -5408,7 +5495,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_70__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_1__pyx_pw_4silx_4math_5combo_9_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1__pyx_mdef_4silx_4math_5combo_9_min_max = {"__pyx_fuse_1_min_max", (PyCFunction)__pyx_fuse_1__pyx_pw_4silx_4math_5combo_9_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_1__pyx_mdef_4silx_4math_5combo_9_min_max = {"__pyx_fuse_1_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_4silx_4math_5combo_9_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_1__pyx_pw_4silx_4math_5combo_9_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -5574,7 +5661,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_8_min_max(CYTHON_UNUSED PyObject *_
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6207,7 +6294,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_8_min_max(CYTHON_UNUSED PyObject *_
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
@@ -6417,7 +6504,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_72__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_2__pyx_pw_4silx_4math_5combo_11_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2__pyx_mdef_4silx_4math_5combo_11_min_max = {"__pyx_fuse_2_min_max", (PyCFunction)__pyx_fuse_2__pyx_pw_4silx_4math_5combo_11_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_2__pyx_mdef_4silx_4math_5combo_11_min_max = {"__pyx_fuse_2_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_4silx_4math_5combo_11_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_2__pyx_pw_4silx_4math_5combo_11_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -6583,7 +6670,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_10_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7216,7 +7303,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_10_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
@@ -7426,7 +7513,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_74__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_3__pyx_pw_4silx_4math_5combo_13_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_3__pyx_mdef_4silx_4math_5combo_13_min_max = {"__pyx_fuse_3_min_max", (PyCFunction)__pyx_fuse_3__pyx_pw_4silx_4math_5combo_13_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_3__pyx_mdef_4silx_4math_5combo_13_min_max = {"__pyx_fuse_3_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_3__pyx_pw_4silx_4math_5combo_13_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_3__pyx_pw_4silx_4math_5combo_13_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -7591,7 +7678,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_12_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8136,7 +8223,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_12_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_signed__char(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -8346,7 +8433,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_76__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_4__pyx_pw_4silx_4math_5combo_15_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_4__pyx_mdef_4silx_4math_5combo_15_min_max = {"__pyx_fuse_4_min_max", (PyCFunction)__pyx_fuse_4__pyx_pw_4silx_4math_5combo_15_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_4__pyx_mdef_4silx_4math_5combo_15_min_max = {"__pyx_fuse_4_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_4__pyx_pw_4silx_4math_5combo_15_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_4__pyx_pw_4silx_4math_5combo_15_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -8511,7 +8598,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_14_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9056,7 +9143,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_14_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_short(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -9266,7 +9353,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_78__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_5__pyx_pw_4silx_4math_5combo_17_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_5__pyx_mdef_4silx_4math_5combo_17_min_max = {"__pyx_fuse_5_min_max", (PyCFunction)__pyx_fuse_5__pyx_pw_4silx_4math_5combo_17_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_5__pyx_mdef_4silx_4math_5combo_17_min_max = {"__pyx_fuse_5_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_5__pyx_pw_4silx_4math_5combo_17_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_5__pyx_pw_4silx_4math_5combo_17_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -9431,7 +9518,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_16_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9976,7 +10063,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_16_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_int(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -10186,7 +10273,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_80__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_6__pyx_pw_4silx_4math_5combo_19_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_6__pyx_mdef_4silx_4math_5combo_19_min_max = {"__pyx_fuse_6_min_max", (PyCFunction)__pyx_fuse_6__pyx_pw_4silx_4math_5combo_19_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_6__pyx_mdef_4silx_4math_5combo_19_min_max = {"__pyx_fuse_6_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_6__pyx_pw_4silx_4math_5combo_19_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_6__pyx_pw_4silx_4math_5combo_19_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -10351,7 +10438,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_18_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -10896,7 +10983,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_18_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_long(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -11106,7 +11193,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_82__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_7__pyx_pw_4silx_4math_5combo_21_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_7__pyx_mdef_4silx_4math_5combo_21_min_max = {"__pyx_fuse_7_min_max", (PyCFunction)__pyx_fuse_7__pyx_pw_4silx_4math_5combo_21_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_7__pyx_mdef_4silx_4math_5combo_21_min_max = {"__pyx_fuse_7_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_7__pyx_pw_4silx_4math_5combo_21_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_7__pyx_pw_4silx_4math_5combo_21_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -11271,7 +11358,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_20_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11816,7 +11903,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_20_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -12026,7 +12113,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_84__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_8__pyx_pw_4silx_4math_5combo_23_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_8__pyx_mdef_4silx_4math_5combo_23_min_max = {"__pyx_fuse_8_min_max", (PyCFunction)__pyx_fuse_8__pyx_pw_4silx_4math_5combo_23_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_8__pyx_mdef_4silx_4math_5combo_23_min_max = {"__pyx_fuse_8_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_8__pyx_pw_4silx_4math_5combo_23_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_8__pyx_pw_4silx_4math_5combo_23_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -12191,7 +12278,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_22_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12736,7 +12823,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_22_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_unsigned_char(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -12946,7 +13033,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_86__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_9__pyx_pw_4silx_4math_5combo_25_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_9__pyx_mdef_4silx_4math_5combo_25_min_max = {"__pyx_fuse_9_min_max", (PyCFunction)__pyx_fuse_9__pyx_pw_4silx_4math_5combo_25_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_9__pyx_mdef_4silx_4math_5combo_25_min_max = {"__pyx_fuse_9_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_9__pyx_pw_4silx_4math_5combo_25_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_9__pyx_pw_4silx_4math_5combo_25_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -13111,7 +13198,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_24_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13656,7 +13743,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_24_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_unsigned_short(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -13866,7 +13953,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_88__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_10__pyx_pw_4silx_4math_5combo_27_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_10__pyx_mdef_4silx_4math_5combo_27_min_max = {"__pyx_fuse_10_min_max", (PyCFunction)__pyx_fuse_10__pyx_pw_4silx_4math_5combo_27_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_10__pyx_mdef_4silx_4math_5combo_27_min_max = {"__pyx_fuse_10_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_10__pyx_pw_4silx_4math_5combo_27_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_10__pyx_pw_4silx_4math_5combo_27_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -14031,7 +14118,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_26_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14576,7 +14663,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_26_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_unsigned_int(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -14786,7 +14873,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_90__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_11__pyx_pw_4silx_4math_5combo_29_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_11__pyx_mdef_4silx_4math_5combo_29_min_max = {"__pyx_fuse_11_min_max", (PyCFunction)__pyx_fuse_11__pyx_pw_4silx_4math_5combo_29_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_11__pyx_mdef_4silx_4math_5combo_29_min_max = {"__pyx_fuse_11_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_11__pyx_pw_4silx_4math_5combo_29_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_11__pyx_pw_4silx_4math_5combo_29_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -14951,7 +15038,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_28_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15496,7 +15583,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_28_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_unsigned_long(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -15706,7 +15793,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_92__defaults__(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_fuse_12__pyx_pw_4silx_4math_5combo_31_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_12__pyx_mdef_4silx_4math_5combo_31_min_max = {"__pyx_fuse_12_min_max", (PyCFunction)__pyx_fuse_12__pyx_pw_4silx_4math_5combo_31_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
+static PyMethodDef __pyx_fuse_12__pyx_mdef_4silx_4math_5combo_31_min_max = {"__pyx_fuse_12_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_12__pyx_pw_4silx_4math_5combo_31_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo__min_max};
static PyObject *__pyx_fuse_12__pyx_pw_4silx_4math_5combo_31_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -15871,7 +15958,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_30_min_max(CYTHON_UNUSED PyObject *
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -16416,7 +16503,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_30_min_max(CYTHON_UNUSED PyObject *
* maximum,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyInt_From_unsigned_PY_LONG_LONG(__pyx_v_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 198, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
@@ -16597,7 +16684,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_30_min_max(CYTHON_UNUSED PyObject *
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_5combo_3_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_5combo_2_finite_min_max[] = "_finite_min_max(signatures, args, kwargs, defaults)\n:func:`min_max` implementation for floats skipping infinite values\n\n See :func:`min_max` for documentation.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_5combo_3_finite_min_max = {"_finite_min_max", (PyCFunction)__pyx_pw_4silx_4math_5combo_3_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
+static PyMethodDef __pyx_mdef_4silx_4math_5combo_3_finite_min_max = {"_finite_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_5combo_3_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
static PyObject *__pyx_pw_4silx_4math_5combo_3_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_signatures = 0;
PyObject *__pyx_v_args = 0;
@@ -16609,7 +16696,7 @@ static PyObject *__pyx_pw_4silx_4math_5combo_3_finite_min_max(PyObject *__pyx_se
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,0};
PyObject* values[4] = {0,0,0,0};
- values[1] = __pyx_k__23;
+ values[1] = __pyx_k__9;
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -16710,10 +16797,12 @@ static PyObject *__pyx_pf_4silx_4math_5combo_2_finite_min_max(CYTHON_UNUSED PyOb
int __pyx_t_10;
int __pyx_t_11;
PyObject *__pyx_t_12 = NULL;
- Py_ssize_t __pyx_t_13;
- Py_ssize_t __pyx_t_14;
+ PyObject *__pyx_t_13 = NULL;
+ PyObject *__pyx_t_14 = NULL;
Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ Py_ssize_t __pyx_t_16;
+ Py_ssize_t __pyx_t_17;
+ int __pyx_t_18;
__Pyx_RefNannySetupContext("_finite_min_max", 0);
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
@@ -17029,36 +17118,60 @@ static PyObject *__pyx_pf_4silx_4math_5combo_2_finite_min_max(CYTHON_UNUSED PyOb
__Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1);
__pyx_t_1 = 0;
__pyx_v_match_found = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
+ __pyx_t_14 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_14)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_14);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_12 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_kp_s__4) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__4);
+ __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+ if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_split); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_12);
- __pyx_t_12 = 0;
- __pyx_t_13 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
- __pyx_t_14 = __pyx_t_13;
- for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
- __pyx_v_i = __pyx_t_15;
- __pyx_t_12 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
- __Pyx_INCREF(__pyx_t_12);
- __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_12);
- __pyx_t_12 = 0;
+ __pyx_t_12 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
+ __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
+ if (likely(__pyx_t_12)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+ __Pyx_INCREF(__pyx_t_12);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_13, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_kp_s__5) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_kp_s__5);
+ __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+ __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_1);
+ __pyx_t_1 = 0;
+ __pyx_t_15 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_16 = __pyx_t_15;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_v_dest_sig, __pyx_v_i);
+ __Pyx_INCREF(__pyx_t_1);
+ __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_1);
+ __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_v_dst_type != Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
- __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_12, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_13 = PyObject_RichCompare(__pyx_t_1, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_2) {
__pyx_v_match_found = 1;
goto __pyx_L41;
@@ -17073,14 +17186,14 @@ static PyObject *__pyx_pf_4silx_4math_5combo_2_finite_min_max(CYTHON_UNUSED PyOb
__pyx_L39_break:;
__pyx_t_2 = (__pyx_v_match_found != 0);
if (__pyx_t_2) {
- __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_18 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_18 == ((int)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);
__pyx_t_3 = ((!__pyx_t_2) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -17089,7 +17202,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_2_finite_min_max(CYTHON_UNUSED PyOb
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 209, __pyx_L1_error)
__pyx_t_3 = ((__pyx_t_9 > 1) != 0);
if (__pyx_t_3) {
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -17113,6 +17226,8 @@ static PyObject *__pyx_pf_4silx_4math_5combo_2_finite_min_max(CYTHON_UNUSED PyOb
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("silx.math.combo.__pyx_fused_cpdef", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -17171,7 +17286,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_100__defaults__(CYTHON_UNUSED PyObj
/* Python wrapper */
static PyObject *__pyx_fuse_0__pyx_pw_4silx_4math_5combo_35_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_0__pyx_mdef_4silx_4math_5combo_35_finite_min_max = {"__pyx_fuse_0_finite_min_max", (PyCFunction)__pyx_fuse_0__pyx_pw_4silx_4math_5combo_35_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
+static PyMethodDef __pyx_fuse_0__pyx_mdef_4silx_4math_5combo_35_finite_min_max = {"__pyx_fuse_0_finite_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_0__pyx_pw_4silx_4math_5combo_35_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
static PyObject *__pyx_fuse_0__pyx_pw_4silx_4math_5combo_35_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -17334,7 +17449,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_34_finite_min_max(CYTHON_UNUSED PyO
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -17715,7 +17830,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_34_finite_min_max(CYTHON_UNUSED PyO
* maximum if isfinite(maximum) else None,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if ((isfinite(__pyx_v_minimum) != 0)) {
__pyx_t_11 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 258, __pyx_L1_error)
@@ -17953,7 +18068,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_102__defaults__(CYTHON_UNUSED PyObj
/* Python wrapper */
static PyObject *__pyx_fuse_1__pyx_pw_4silx_4math_5combo_37_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_1__pyx_mdef_4silx_4math_5combo_37_finite_min_max = {"__pyx_fuse_1_finite_min_max", (PyCFunction)__pyx_fuse_1__pyx_pw_4silx_4math_5combo_37_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
+static PyMethodDef __pyx_fuse_1__pyx_mdef_4silx_4math_5combo_37_finite_min_max = {"__pyx_fuse_1_finite_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_1__pyx_pw_4silx_4math_5combo_37_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
static PyObject *__pyx_fuse_1__pyx_pw_4silx_4math_5combo_37_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -18116,7 +18231,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_36_finite_min_max(CYTHON_UNUSED PyO
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18497,7 +18612,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_36_finite_min_max(CYTHON_UNUSED PyO
* maximum if isfinite(maximum) else None,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if ((isfinite(__pyx_v_minimum) != 0)) {
__pyx_t_11 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 258, __pyx_L1_error)
@@ -18735,7 +18850,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_104__defaults__(CYTHON_UNUSED PyObj
/* Python wrapper */
static PyObject *__pyx_fuse_2__pyx_pw_4silx_4math_5combo_39_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_fuse_2__pyx_mdef_4silx_4math_5combo_39_finite_min_max = {"__pyx_fuse_2_finite_min_max", (PyCFunction)__pyx_fuse_2__pyx_pw_4silx_4math_5combo_39_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
+static PyMethodDef __pyx_fuse_2__pyx_mdef_4silx_4math_5combo_39_finite_min_max = {"__pyx_fuse_2_finite_min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_fuse_2__pyx_pw_4silx_4math_5combo_39_finite_min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_2_finite_min_max};
static PyObject *__pyx_fuse_2__pyx_pw_4silx_4math_5combo_39_finite_min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_data = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_min_positive;
@@ -18898,7 +19013,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_38_finite_min_max(CYTHON_UNUSED PyO
*
* with nogil:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 225, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -19279,7 +19394,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_38_finite_min_max(CYTHON_UNUSED PyO
* maximum if isfinite(maximum) else None,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_MinMaxResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if ((isfinite(__pyx_v_minimum) != 0)) {
__pyx_t_11 = PyFloat_FromDouble(__pyx_v_minimum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 258, __pyx_L1_error)
@@ -19488,7 +19603,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_38_finite_min_max(CYTHON_UNUSED PyO
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_5combo_5min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_5combo_4min_max[] = "min_max(data, bool min_positive=False, bool finite=False)\nReturns min, max and optionally strictly positive min of data.\n\n It also computes the indices of first occurrence of min/max.\n\n NaNs are ignored while computing min/max unless all data is NaNs,\n in which case returned min/max are NaNs.\n\n The result data type is that of the input data, except for the following cases.\n For input using non-native bytes order, the result is returned as native\n floating-point or integers. For input using 16-bits floating-point,\n the result is returned as 32-bits floating-point.\n\n Examples:\n\n >>> import numpy\n >>> data = numpy.arange(10)\n\n Usage as a function returning min and max:\n\n >>> min_, max_ = min_max(data)\n\n Usage as a function returning a result object to access all information:\n\n >>> result = min_max(data) # Do not get positive min\n >>> result.minimum, result.argmin\n 0, 0\n >>> result.maximum, result.argmax\n 9, 10\n >>> result.min_positive, result.argmin_positive # Not computed\n None, None\n\n Getting strictly positive min information:\n\n >>> result = min_max(data, min_positive=True)\n >>> result.min_positive, result.argmin_positive # Computed\n 1, 1\n\n If *finite* is True, min/max information is computed only from finite data.\n Then, all result fields (include minimum and maximum) can be None\n when all data is infinity or NaN.\n\n :param data: Array-like dataset\n :param bool min_positive: True to compute the positive min and argmin\n Default: False.\n :param bool finite: True to compute min/max from finite data only\n Default: False.\n :returns: An object with minimum, maximum and min_positive attributes\n and the indices of first occurrence in the flattened data:\n argmin, argmax and argmin_positive attributes.\n If all data is <= 0 or min_positive argum""ent is False, then\n min_positive and argmin_positive are None.\n :raises: ValueError if data is empty\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_5combo_5min_max = {"min_max", (PyCFunction)__pyx_pw_4silx_4math_5combo_5min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_4min_max};
+static PyMethodDef __pyx_mdef_4silx_4math_5combo_5min_max = {"min_max", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_5combo_5min_max, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_5combo_4min_max};
static PyObject *__pyx_pw_4silx_4math_5combo_5min_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
int __pyx_v_min_positive;
@@ -19600,7 +19715,7 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
* native_endian_dtype = data.dtype.newbyteorder('N')
* if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -19628,14 +19743,26 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
* if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
* # Use native float32 instead of float16
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 321, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 321, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_newbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_n_s_N) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_n_s_N);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 321, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_native_endian_dtype = __pyx_t_4;
__pyx_t_4 = 0;
@@ -19657,11 +19784,11 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
}
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_native_endian_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 322, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 322, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 322, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_5 = __pyx_t_6;
__pyx_L4_bool_binop_done:;
if (__pyx_t_5) {
@@ -19692,10 +19819,10 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
* if finite and data.dtype.kind == 'f':
* return _finite_min_max(data, min_positive)
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -19705,9 +19832,9 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_native_endian_dtype) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error)
@@ -19723,16 +19850,13 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (__pyx_t_7) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else {
- __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 325, __pyx_L1_error)
- }
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
- __pyx_t_3 = 0;
+ __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
+ __pyx_t_1 = 0;
/* "silx/math/combo.pyx":326
* native_endian_dtype = "=f4"
@@ -19747,11 +19871,11 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
__pyx_t_5 = __pyx_t_6;
goto __pyx_L7_bool_binop_done;
}
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 326, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_f, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 326, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_5 = __pyx_t_6;
@@ -19766,57 +19890,57 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
* return _min_max(data, min_positive)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_finite_min_max); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_finite_min_max); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_min_positive); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 327, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = NULL;
__pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
+ if (PyFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_data, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_data, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
{
- __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_4) {
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_8, __pyx_v_data);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_8, __pyx_t_7);
__pyx_t_7 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
@@ -19837,38 +19961,38 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_min_max); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_min_positive); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_min_max); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_min_positive); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = NULL;
__pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_7)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ if (PyFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_t_3};
+ __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_t_1};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_t_3};
+ __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
@@ -19880,14 +20004,14 @@ static PyObject *__pyx_pf_4silx_4math_5combo_4min_max(CYTHON_UNUSED PyObject *__
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_data);
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GIVEREF(__pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_3);
+ __pyx_t_3 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L0;
@@ -20066,10 +20190,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -20115,7 +20239,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20147,7 +20271,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20180,13 +20304,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -20205,13 +20341,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -20224,8 +20360,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -20262,10 +20398,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -20284,21 +20420,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -20317,24 +20453,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -20365,7 +20501,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -20459,11 +20595,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -20536,7 +20672,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -20586,8 +20722,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -20641,7 +20777,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -20777,7 +20913,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -21493,7 +21629,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -21546,7 +21682,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22022,7 +22158,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -22068,7 +22204,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -23190,7 +23326,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -24217,7 +24353,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -24573,7 +24709,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25113,7 +25249,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -25227,7 +25363,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__44, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__21, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -26228,7 +26364,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26281,7 +26417,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26632,9 +26768,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__47);
- __Pyx_GIVEREF(__pyx_slice__47);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__47);
+ __Pyx_INCREF(__pyx_slice__24);
+ __Pyx_GIVEREF(__pyx_slice__24);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__24);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -26667,7 +26803,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__48); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__24); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -26717,7 +26853,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -26807,9 +26943,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__49);
- __Pyx_GIVEREF(__pyx_slice__49);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__49);
+ __Pyx_INCREF(__pyx_slice__24);
+ __Pyx_GIVEREF(__pyx_slice__24);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__24);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -26933,7 +27069,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -29096,7 +29232,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -29149,7 +29285,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -31030,7 +31166,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -31063,41 +31198,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -31117,7 +31222,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -31144,7 +31248,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -31181,41 +31284,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -31256,7 +31329,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -32364,7 +32436,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -32445,8 +32517,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -32503,41 +32574,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32560,48 +32601,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -32614,8 +32627,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -32662,7 +32675,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -32692,7 +32704,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -32763,41 +32774,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -32825,7 +32806,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -33540,6 +33520,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_24_04_2018, __pyx_k_24_04_2018, sizeof(__pyx_k_24_04_2018), 0, 0, 1, 0},
@@ -33588,7 +33577,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Zero_size_array, __pyx_k_Zero_size_array, sizeof(__pyx_k_Zero_size_array), 0, 0, 1, 0},
{&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
{&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
- {&__pyx_kp_s__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 0, 1, 0},
+ {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
{&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
{&__pyx_n_s_argmax, __pyx_k_argmax, sizeof(__pyx_k_argmax), 0, 0, 1, 1},
{&__pyx_n_s_argmax_2, __pyx_k_argmax_2, sizeof(__pyx_k_argmax_2), 0, 0, 1, 1},
@@ -33727,7 +33716,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(0, 66, __pyx_L1_error)
__pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_n_s_property); if (!__pyx_builtin_property) __PYX_ERR(0, 79, __pyx_L1_error)
__pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 112, __pyx_L1_error)
@@ -33743,7 +33732,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -33765,18 +33754,12 @@ static int __Pyx_InitCachedConstants(void) {
* """:func:`min_max` implementation including infinite values
*
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s__6); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__7);
__Pyx_GIVEREF(__pyx_tuple__7);
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
/* "silx/math/combo.pyx":134
*
@@ -33785,45 +33768,45 @@ static int __Pyx_InitCachedConstants(void) {
*
* with nogil:
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "silx/math/combo.pyx":209
* @cython.boundscheck(False)
@@ -33832,18 +33815,12 @@ static int __Pyx_InitCachedConstants(void) {
* """:func:`min_max` implementation for floats skipping infinite values
*
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s__6); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "silx/math/combo.pyx":225
*
@@ -33852,26 +33829,15 @@ static int __Pyx_InitCachedConstants(void) {
*
* with nogil:
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 225, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 225, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 225, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
-
- /* "silx/math/combo.pyx":321
- * """
- * data = numpy.array(data, copy=False)
- * native_endian_dtype = data.dtype.newbyteorder('N') # <<<<<<<<<<<<<<
- * if native_endian_dtype.kind == 'f' and native_endian_dtype.itemsize == 2:
- * # Use native float32 instead of float16
- */
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_N); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 321, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Zero_size_array); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 225, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "View.MemoryView":132
*
@@ -33880,9 +33846,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "View.MemoryView":135
*
@@ -33891,20 +33857,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "View.MemoryView":147
*
@@ -33913,9 +33868,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -33924,9 +33879,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -33935,9 +33890,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -33945,18 +33900,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -33965,9 +33920,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -33976,9 +33931,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -33987,9 +33942,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -33998,9 +33953,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -34009,12 +33964,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__44 = PyTuple_New(1); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
+ __pyx_tuple__21 = PyTuple_New(1); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__44, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__44);
+ PyTuple_SET_ITEM(__pyx_tuple__21, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -34022,18 +33977,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -34042,9 +33997,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__47 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__47)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__47);
- __Pyx_GIVEREF(__pyx_slice__47);
+ __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__24);
+ __Pyx_GIVEREF(__pyx_slice__24);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -34053,9 +34008,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__48 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__48)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__48);
- __Pyx_GIVEREF(__pyx_slice__48);
+ __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__24);
+ __Pyx_GIVEREF(__pyx_slice__24);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -34064,9 +34019,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__49 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__49)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__49);
- __Pyx_GIVEREF(__pyx_slice__49);
+ __pyx_slice__24 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__24);
+ __Pyx_GIVEREF(__pyx_slice__24);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -34075,9 +34030,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -34085,18 +34040,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "silx/math/combo.pyx":66
*
@@ -34105,9 +34060,9 @@ static int __Pyx_InitCachedConstants(void) {
* """Object storing result from :func:`min_max`"""
*
*/
- __pyx_tuple__53 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 66, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__53);
- __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "silx/math/combo.pyx":69
* """Object storing result from :func:`min_max`"""
@@ -34116,10 +34071,10 @@ static int __Pyx_InitCachedConstants(void) {
* argmin, argmin_pos, argmax):
* self._minimum = minimum
*/
- __pyx_tuple__54 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_argmin_2, __pyx_n_s_argmin_pos, __pyx_n_s_argmax_2); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 69, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
- __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_init, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 69, __pyx_L1_error)
+ __pyx_tuple__29 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_argmin_2, __pyx_n_s_argmin_pos, __pyx_n_s_argmax_2); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 69, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_init, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 69, __pyx_L1_error)
/* "silx/math/combo.pyx":106
* It is the index of the first occurrence.""")
@@ -34128,10 +34083,10 @@ static int __Pyx_InitCachedConstants(void) {
* if key == 0:
* return self.minimum
*/
- __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
- __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_getitem, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_getitem, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 106, __pyx_L1_error)
/* "silx/math/combo.pyx":118
* @cython.boundscheck(False)
@@ -34140,10 +34095,10 @@ static int __Pyx_InitCachedConstants(void) {
* """:func:`min_max` implementation including infinite values
*
*/
- __pyx_tuple__58 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_value, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_length, __pyx_n_s_index, __pyx_n_s_min_index, __pyx_n_s_min_pos_index, __pyx_n_s_max_index); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
- __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_min_max, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_tuple__33 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_value, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_length, __pyx_n_s_index, __pyx_n_s_min_index, __pyx_n_s_min_pos_index, __pyx_n_s_max_index); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_min_max, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 118, __pyx_L1_error)
/* "silx/math/combo.pyx":209
* @cython.boundscheck(False)
@@ -34152,10 +34107,10 @@ static int __Pyx_InitCachedConstants(void) {
* """:func:`min_max` implementation for floats skipping infinite values
*
*/
- __pyx_tuple__60 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_value, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_length, __pyx_n_s_index, __pyx_n_s_min_index, __pyx_n_s_min_pos_index, __pyx_n_s_max_index); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
- __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_finite_min_max, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_tuple__35 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_value, __pyx_n_s_minimum_2, __pyx_n_s_min_pos, __pyx_n_s_maximum_2, __pyx_n_s_length, __pyx_n_s_index, __pyx_n_s_min_index, __pyx_n_s_min_pos_index, __pyx_n_s_max_index); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_finite_min_max, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 209, __pyx_L1_error)
/* "silx/math/combo.pyx":266
*
@@ -34164,10 +34119,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Returns min, max and optionally strictly positive min of data.
*
*/
- __pyx_tuple__62 = PyTuple_Pack(4, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_finite, __pyx_n_s_native_endian_dtype); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__62);
- __Pyx_GIVEREF(__pyx_tuple__62);
- __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_min_max_2, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_data, __pyx_n_s_min_positive_2, __pyx_n_s_finite, __pyx_n_s_native_endian_dtype); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_combo_pyx, __pyx_n_s_min_max_2, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 266, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -34176,9 +34131,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__64);
- __Pyx_GIVEREF(__pyx_tuple__64);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "View.MemoryView":286
*
@@ -34187,9 +34142,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__65);
- __Pyx_GIVEREF(__pyx_tuple__65);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -34198,9 +34153,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__66);
- __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
/* "View.MemoryView":290
*
@@ -34209,9 +34164,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__67);
- __Pyx_GIVEREF(__pyx_tuple__67);
+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
/* "View.MemoryView":291
*
@@ -34220,19 +34175,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__68);
- __Pyx_GIVEREF(__pyx_tuple__68);
+ __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__69 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__69);
- __Pyx_GIVEREF(__pyx_tuple__69);
- __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__44 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__44);
+ __Pyx_GIVEREF(__pyx_tuple__44);
+ __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -34240,7 +34195,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -34252,13 +34207,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -34381,15 +34336,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -34402,7 +34348,30 @@ __Pyx_PyMODINIT_FUNC PyInit_combo(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -34415,8 +34384,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -34437,7 +34408,7 @@ bad:
}
-static int __pyx_pymod_exec_combo(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_combo(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -34451,7 +34422,11 @@ static int __pyx_pymod_exec_combo(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_8[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'combo' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -34466,6 +34441,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_combo(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -34520,7 +34498,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__combo) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -34599,9 +34577,9 @@ if (!__Pyx_RefNanny) {
* """Object storing result from :func:`min_max`"""
*
*/
- __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__53); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__53, __pyx_n_s_MinMaxResult, __pyx_n_s_MinMaxResult, (PyObject *) NULL, __pyx_n_s_silx_math_combo, __pyx_kp_s_Object_storing_result_from_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__28, __pyx_n_s_MinMaxResult, __pyx_n_s_MinMaxResult, (PyObject *) NULL, __pyx_n_s_silx_math_combo, __pyx_kp_s_Object_storing_result_from_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* "silx/math/combo.pyx":69
@@ -34611,7 +34589,7 @@ if (!__Pyx_RefNanny) {
* argmin, argmin_pos, argmax):
* self._minimum = minimum
*/
- __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_13_MinMaxResult_1__init__, 0, __pyx_n_s_MinMaxResult___init, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_13_MinMaxResult_1__init__, 0, __pyx_n_s_MinMaxResult___init, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_init, __pyx_t_3) < 0) __PYX_ERR(0, 69, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -34911,7 +34889,7 @@ if (!__Pyx_RefNanny) {
* if key == 0:
* return self.minimum
*/
- __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_13_MinMaxResult_3__getitem__, 0, __pyx_n_s_MinMaxResult___getitem, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_13_MinMaxResult_3__getitem__, 0, __pyx_n_s_MinMaxResult___getitem, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_getitem, __pyx_t_3) < 0) __PYX_ERR(0, 106, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -34923,7 +34901,7 @@ if (!__Pyx_RefNanny) {
* """Object storing result from :func:`min_max`"""
*
*/
- __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MinMaxResult, __pyx_tuple__53, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MinMaxResult, __pyx_tuple__28, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_MinMaxResult, __pyx_t_3) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -34951,7 +34929,7 @@ if (!__Pyx_RefNanny) {
__pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_4silx_4math_5combo_7_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_4silx_4math_5combo_7_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults13), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults13, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34959,7 +34937,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_68__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_4silx_4math_5combo_9_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_4silx_4math_5combo_9_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults14), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults14, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34967,7 +34945,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_70__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2__pyx_mdef_4silx_4math_5combo_11_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2__pyx_mdef_4silx_4math_5combo_11_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults15), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults15, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34975,7 +34953,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_72__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_long_double, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3__pyx_mdef_4silx_4math_5combo_13_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_3__pyx_mdef_4silx_4math_5combo_13_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults16), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults16, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34983,7 +34961,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_74__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_signed_char, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4__pyx_mdef_4silx_4math_5combo_15_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_4__pyx_mdef_4silx_4math_5combo_15_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults17), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults17, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34991,7 +34969,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_76__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_short, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5__pyx_mdef_4silx_4math_5combo_17_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_5__pyx_mdef_4silx_4math_5combo_17_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults18), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults18, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -34999,7 +34977,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_78__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_int, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6__pyx_mdef_4silx_4math_5combo_19_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_6__pyx_mdef_4silx_4math_5combo_19_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults19), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults19, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35007,7 +34985,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_80__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_long, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7__pyx_mdef_4silx_4math_5combo_21_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_7__pyx_mdef_4silx_4math_5combo_21_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults20), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults20, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35015,7 +34993,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_82__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_long_long, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8__pyx_mdef_4silx_4math_5combo_23_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_8__pyx_mdef_4silx_4math_5combo_23_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults21), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults21, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35023,7 +35001,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_84__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_unsigned_char, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9__pyx_mdef_4silx_4math_5combo_25_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_9__pyx_mdef_4silx_4math_5combo_25_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults22), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults22, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35031,7 +35009,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_86__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_unsigned_short, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10__pyx_mdef_4silx_4math_5combo_27_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_10__pyx_mdef_4silx_4math_5combo_27_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults23), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults23, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35039,7 +35017,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_88__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_unsigned_int, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_11__pyx_mdef_4silx_4math_5combo_29_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_11__pyx_mdef_4silx_4math_5combo_29_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults24), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults24, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35047,7 +35025,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_90__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_unsigned_long, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_12__pyx_mdef_4silx_4math_5combo_31_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_fuse_12__pyx_mdef_4silx_4math_5combo_31_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults25), 0)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults25, __pyx_t_3)->__pyx_arg_min_positive = 0;
@@ -35055,7 +35033,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_92__defaults__);
if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_unsigned_long_long, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_1_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_3 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_1_min_max, 0, __pyx_n_s_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_2);
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_4silx_4math_5combo_68__defaults__);
@@ -35081,12 +35059,12 @@ if (!__Pyx_RefNanny) {
__pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_k__23 = __pyx_t_4;
+ __pyx_k__9 = __pyx_t_4;
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_4silx_4math_5combo_35_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_4silx_4math_5combo_35_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_6, sizeof(__pyx_defaults29), 0)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults29, __pyx_t_6)->__pyx_arg_min_positive = 0;
@@ -35094,7 +35072,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_6, __pyx_pf_4silx_4math_5combo_100__defaults__);
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_float, __pyx_t_6) < 0) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_4silx_4math_5combo_37_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_4silx_4math_5combo_37_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_6, sizeof(__pyx_defaults30), 0)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults30, __pyx_t_6)->__pyx_arg_min_positive = 0;
@@ -35102,7 +35080,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_6, __pyx_pf_4silx_4math_5combo_102__defaults__);
if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_double, __pyx_t_6) < 0) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2__pyx_mdef_4silx_4math_5combo_39_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_fuse_2__pyx_mdef_4silx_4math_5combo_39_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (!__Pyx_CyFunction_InitDefaults(__pyx_t_6, sizeof(__pyx_defaults31), 0)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_CyFunction_Defaults(__pyx_defaults31, __pyx_t_6)->__pyx_arg_min_positive = 0;
@@ -35110,7 +35088,7 @@ if (!__Pyx_RefNanny) {
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_6, __pyx_pf_4silx_4math_5combo_104__defaults__);
if (PyDict_SetItem(__pyx_t_4, __pyx_kp_s_long_double, __pyx_t_6) < 0) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_3_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __pyx_t_6 = __pyx_FusedFunction_NewEx(&__pyx_mdef_4silx_4math_5combo_3_finite_min_max, 0, __pyx_n_s_finite_min_max, NULL, __pyx_n_s_silx_math_combo, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_t_5);
__Pyx_CyFunction_SetDefaultsGetter(__pyx_t_6, __pyx_pf_4silx_4math_5combo_100__defaults__);
@@ -35163,7 +35141,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_7);
@@ -35177,7 +35155,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_7);
@@ -35191,7 +35169,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_7);
@@ -35205,7 +35183,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_7);
@@ -35219,7 +35197,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_7);
@@ -35309,9 +35287,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_7);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.combo", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.combo", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.combo");
}
@@ -35332,9 +35310,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -35528,9 +35506,8 @@ static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr
}
#endif
-/* PyIntBinop */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -35538,86 +35515,63 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -35829,10 +35783,15 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -35849,7 +35808,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -35857,16 +35816,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -35884,7 +35842,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -36117,7 +36075,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
- if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
PyObject* old = PyList_GET_ITEM(o, n);
Py_INCREF(v);
PyList_SET_ITEM(o, n, v);
@@ -36142,10 +36100,11 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
#else
#if CYTHON_COMPILING_IN_PYPY
- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
+ if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
- if (is_list || PySequence_Check(o)) {
+ if (is_list || PySequence_Check(o))
#endif
+ {
return PySequence_SetItem(o, i, v);
}
#endif
@@ -36153,7 +36112,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* IterFinish */
- static CYTHON_INLINE int __Pyx_IterFinish(void) {
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
PyThreadState *tstate = __Pyx_PyThreadState_Current;
PyObject* exc_type = tstate->curexc_type;
@@ -36188,7 +36147,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* PyObjectCallNoArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(func)) {
@@ -36196,10 +36155,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -36208,22 +36168,112 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
-/* PyObjectCallMethod0 */
- static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
- PyObject *method, *result = NULL;
- method = __Pyx_PyObject_GetAttrStr(obj, method_name);
- if (unlikely(!method)) goto bad;
-#if CYTHON_UNPACK_METHODS
- if (likely(PyMethod_Check(method))) {
- PyObject *self = PyMethod_GET_SELF(method);
- if (likely(self)) {
- PyObject *function = PyMethod_GET_FUNCTION(method);
- result = __Pyx_PyObject_CallOneArg(function, self);
- Py_DECREF(method);
- return result;
+/* PyObjectGetMethod */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
+ PyObject *attr;
+#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyObject *descr;
+ descrgetfunc f = NULL;
+ PyObject **dictptr, *dict;
+ int meth_found = 0;
+ assert (*method == NULL);
+ if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
+ }
+ if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
+ return 0;
+ }
+ descr = _PyType_Lookup(tp, name);
+ if (likely(descr != NULL)) {
+ Py_INCREF(descr);
+#if PY_MAJOR_VERSION >= 3
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
+ #endif
+#else
+ #ifdef __Pyx_CyFunction_USED
+ if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
+ #else
+ if (likely(PyFunction_Check(descr)))
+ #endif
+#endif
+ {
+ meth_found = 1;
+ } else {
+ f = Py_TYPE(descr)->tp_descr_get;
+ if (f != NULL && PyDescr_IsData(descr)) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
}
}
+ dictptr = _PyObject_GetDictPtr(obj);
+ if (dictptr != NULL && (dict = *dictptr) != NULL) {
+ Py_INCREF(dict);
+ attr = __Pyx_PyDict_GetItemStr(dict, name);
+ if (attr != NULL) {
+ Py_INCREF(attr);
+ Py_DECREF(dict);
+ Py_XDECREF(descr);
+ goto try_unpack;
+ }
+ Py_DECREF(dict);
+ }
+ if (meth_found) {
+ *method = descr;
+ return 1;
+ }
+ if (f != NULL) {
+ attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
+ Py_DECREF(descr);
+ goto try_unpack;
+ }
+ if (descr != NULL) {
+ *method = descr;
+ return 0;
+ }
+ PyErr_Format(PyExc_AttributeError,
+#if PY_MAJOR_VERSION >= 3
+ "'%.50s' object has no attribute '%U'",
+ tp->tp_name, name);
+#else
+ "'%.50s' object has no attribute '%.400s'",
+ tp->tp_name, PyString_AS_STRING(name));
+#endif
+ return 0;
+#else
+ attr = __Pyx_PyObject_GetAttrStr(obj, name);
+ goto try_unpack;
#endif
+try_unpack:
+#if CYTHON_UNPACK_METHODS
+ if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
+ PyObject *function = PyMethod_GET_FUNCTION(attr);
+ Py_INCREF(function);
+ Py_DECREF(attr);
+ *method = function;
+ return 1;
+ }
+#endif
+ *method = attr;
+ return 0;
+}
+
+/* PyObjectCallMethod0 */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
+ PyObject *method = NULL, *result = NULL;
+ int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+ if (likely(is_method)) {
+ result = __Pyx_PyObject_CallOneArg(method, obj);
+ Py_DECREF(method);
+ return result;
+ }
+ if (unlikely(!method)) goto bad;
result = __Pyx_PyObject_CallNoArg(method);
Py_DECREF(method);
bad:
@@ -36231,20 +36281,20 @@ bad:
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* UnpackItemEndCheck */
- static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
if (unlikely(retval)) {
Py_DECREF(retval);
__Pyx_RaiseTooManyValuesError(expected);
@@ -36256,12 +36306,12 @@ bad:
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* UnpackTupleError */
- static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
if (t == Py_None) {
__Pyx_RaiseNoneNotIterableError();
} else if (PyTuple_GET_SIZE(t) < index) {
@@ -36272,7 +36322,7 @@ bad:
}
/* UnpackTuple2 */
- static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
@@ -36324,7 +36374,7 @@ bad:
}
/* dict_iter */
- static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
Py_ssize_t* p_orig_length, int* p_source_is_dict) {
is_dict = is_dict || likely(PyDict_CheckExact(iterable));
*p_source_is_dict = is_dict;
@@ -36436,8 +36486,37 @@ static CYTHON_INLINE int __Pyx_dict_iter_next(
return 1;
}
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -36452,7 +36531,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -36470,7 +36549,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -36486,7 +36565,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -36494,7 +36573,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -36524,34 +36603,42 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* GetModuleGlobalName */
- static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -36689,7 +36776,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -36736,7 +36823,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -36815,6 +36902,9 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -36835,7 +36925,7 @@ return_ne:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -36856,7 +36946,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -36864,7 +36954,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -36877,7 +36967,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -36906,7 +36996,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -36939,7 +37029,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -36964,7 +37054,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -36979,7 +37069,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -36991,13 +37081,29 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -37009,13 +37115,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -37031,11 +37138,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -37068,13 +37176,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -37101,16 +37212,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -37135,7 +37247,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -37182,7 +37294,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -37200,7 +37312,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -37255,14 +37367,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -37272,7 +37412,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -37394,12 +37534,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -37407,7 +37547,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -37449,7 +37589,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -37463,7 +37603,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -37481,7 +37621,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -37521,7 +37661,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -37531,7 +37671,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -37549,7 +37689,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -37625,7 +37765,7 @@ GOOD:
}
/* CalculateMetaclass */
- static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
for (i=0; i < nbases; i++) {
PyTypeObject *tmptype;
@@ -37664,7 +37804,7 @@ GOOD:
}
/* FetchCommonType */
- static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
+static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
PyObject* fake_module;
PyTypeObject* cached_type = NULL;
fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
@@ -37703,7 +37843,7 @@ bad:
}
/* CythonFunction */
- #include <structmember.h>
+#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
@@ -37725,7 +37865,7 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
return op->func_doc;
}
static int
-__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp = op->func_doc;
if (value == NULL) {
@@ -37737,7 +37877,7 @@ __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
@@ -37752,14 +37892,15 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
return op->func_name;
}
static int
-__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__name__ must be set to a string object");
return -1;
@@ -37771,20 +37912,21 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_qualname);
return op->func_qualname;
}
static int
-__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
- if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+ if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
- if (unlikely(value == NULL || !PyString_Check(value))) {
+ if (unlikely(value == NULL || !PyString_Check(value)))
#endif
+ {
PyErr_SetString(PyExc_TypeError,
"__qualname__ must be set to a string object");
return -1;
@@ -37806,7 +37948,7 @@ __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure
return self;
}
static PyObject *
-__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
if (unlikely(op->func_dict == NULL)) {
op->func_dict = PyDict_New();
@@ -37817,7 +37959,7 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
return op->func_dict;
}
static int
-__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
PyObject *tmp;
if (unlikely(value == NULL)) {
@@ -37837,19 +37979,19 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(op->func_globals);
return op->func_globals;
}
static PyObject *
-__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
-__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
PyObject* result = (op->func_code) ? op->func_code : Py_None;
Py_INCREF(result);
@@ -37878,7 +38020,7 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -37894,7 +38036,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_tuple;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -37908,7 +38050,7 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value) {
value = Py_None;
@@ -37924,7 +38066,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->defaults_kwdict;
if (unlikely(!result)) {
if (op->defaults_getter) {
@@ -37938,7 +38080,7 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
return result;
}
static int
-__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
+__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
@@ -37954,7 +38096,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
return 0;
}
static PyObject *
-__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
+__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
PyObject* result = op->func_annotations;
if (unlikely(!result)) {
result = PyDict_New();
@@ -38134,7 +38276,7 @@ static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, Py
return (*meth)(self, arg);
break;
case METH_VARARGS | METH_KEYWORDS:
- return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+ return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
case METH_NOARGS:
if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
size = PyTuple_GET_SIZE(arg);
@@ -38297,7 +38439,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py
}
/* Py3ClassCreate */
- static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
PyObject *ns;
if (metaclass) {
@@ -38364,7 +38506,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj
}
/* FusedFunction */
- static PyObject *
+static PyObject *
__pyx_FusedFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags,
PyObject *qualname, PyObject *self,
PyObject *module, PyObject *globals,
@@ -38694,8 +38836,8 @@ static int __pyx_FusedFunction_init(void) {
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -38708,7 +38850,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -38725,7 +38869,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -38734,7 +38878,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -38814,7 +38958,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -38920,8 +39064,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -38943,7 +39087,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -38979,7 +39123,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -38992,7 +39136,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -39003,7 +39147,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -39505,7 +39649,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -39546,7 +39690,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -39728,7 +39872,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39751,7 +39895,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39774,7 +39918,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long__double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long__double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39797,7 +39941,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_signed__char(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_signed__char(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39820,7 +39964,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_short(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_short(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39843,7 +39987,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_int(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_int(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39866,7 +40010,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39889,7 +40033,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_PY_LONG_LONG(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_PY_LONG_LONG(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39912,7 +40056,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_char(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39935,7 +40079,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_short(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_short(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39958,7 +40102,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_int(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_int(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -39981,7 +40125,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_long(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_long(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -40004,7 +40148,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_PY_LONG_LONG(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_unsigned_PY_LONG_LONG(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -40027,8 +40171,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -40058,7 +40202,7 @@ __pyx_fail:
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_float(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(float *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *obj) {
@@ -40070,8 +40214,8 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
- const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
+ const unsigned int neg_one = (unsigned int) ((unsigned int) 0 - (unsigned int) 1), const_zero = (unsigned int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned int) < sizeof(long)) {
@@ -40101,7 +40245,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -40123,7 +40267,7 @@ static CYTHON_INLINE int __pyx_memview_set_float(const char *itemp, PyObject *ob
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -40135,7 +40279,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_long__double(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_long__double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(long double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObject *obj) {
@@ -40147,8 +40291,8 @@ static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_signed__char(signed char value) {
- const signed char neg_one = (signed char) -1, const_zero = (signed char) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_signed__char(signed char value) {
+ const signed char neg_one = (signed char) ((signed char) 0 - (signed char) 1), const_zero = (signed char) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(signed char) < sizeof(long)) {
@@ -40178,7 +40322,7 @@ static CYTHON_INLINE int __pyx_memview_set_long__double(const char *itemp, PyObj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_signed__char(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_signed__char(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_signed__char(*(signed char *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_signed__char(const char *itemp, PyObject *obj) {
@@ -40190,8 +40334,8 @@ static CYTHON_INLINE int __pyx_memview_set_signed__char(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_short(short value) {
- const short neg_one = (short) -1, const_zero = (short) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_short(short value) {
+ const short neg_one = (short) ((short) 0 - (short) 1), const_zero = (short) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(short) < sizeof(long)) {
@@ -40221,7 +40365,7 @@ static CYTHON_INLINE int __pyx_memview_set_signed__char(const char *itemp, PyObj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_short(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_short(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_short(*(short *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_short(const char *itemp, PyObject *obj) {
@@ -40233,8 +40377,8 @@ static CYTHON_INLINE int __pyx_memview_set_short(const char *itemp, PyObject *ob
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -40264,7 +40408,7 @@ static CYTHON_INLINE int __pyx_memview_set_short(const char *itemp, PyObject *ob
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_int(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_int(*(int *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj) {
@@ -40276,7 +40420,7 @@ static CYTHON_INLINE int __pyx_memview_set_int(const char *itemp, PyObject *obj)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_long(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_long(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_long(*(long *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_long(const char *itemp, PyObject *obj) {
@@ -40288,8 +40432,8 @@ static CYTHON_INLINE int __pyx_memview_set_long(const char *itemp, PyObject *obj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PY_LONG_LONG(PY_LONG_LONG value) {
- const PY_LONG_LONG neg_one = (PY_LONG_LONG) -1, const_zero = (PY_LONG_LONG) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_PY_LONG_LONG(PY_LONG_LONG value) {
+ const PY_LONG_LONG neg_one = (PY_LONG_LONG) ((PY_LONG_LONG) 0 - (PY_LONG_LONG) 1), const_zero = (PY_LONG_LONG) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(PY_LONG_LONG) < sizeof(long)) {
@@ -40319,7 +40463,7 @@ static CYTHON_INLINE int __pyx_memview_set_long(const char *itemp, PyObject *obj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_PY_LONG_LONG(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_PY_LONG_LONG(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_PY_LONG_LONG(*(PY_LONG_LONG *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_PY_LONG_LONG(const char *itemp, PyObject *obj) {
@@ -40331,8 +40475,8 @@ static CYTHON_INLINE int __pyx_memview_set_PY_LONG_LONG(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
- const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_char(unsigned char value) {
+ const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned char) < sizeof(long)) {
@@ -40362,7 +40506,7 @@ static CYTHON_INLINE int __pyx_memview_set_PY_LONG_LONG(const char *itemp, PyObj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_char(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_char(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_char(*(unsigned char *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_char(const char *itemp, PyObject *obj) {
@@ -40374,8 +40518,8 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_char(const char *itemp, PyOb
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value) {
- const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_short(unsigned short value) {
+ const unsigned short neg_one = (unsigned short) ((unsigned short) 0 - (unsigned short) 1), const_zero = (unsigned short) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned short) < sizeof(long)) {
@@ -40405,7 +40549,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_char(const char *itemp, PyOb
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_short(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_short(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_short(*(unsigned short *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_short(const char *itemp, PyObject *obj) {
@@ -40417,7 +40561,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_short(const char *itemp, PyO
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_int(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_int(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_int(*(unsigned int *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_int(const char *itemp, PyObject *obj) {
@@ -40429,8 +40573,8 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_int(const char *itemp, PyObj
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
- const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
+ const unsigned long neg_one = (unsigned long) ((unsigned long) 0 - (unsigned long) 1), const_zero = (unsigned long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned long) < sizeof(long)) {
@@ -40460,7 +40604,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_int(const char *itemp, PyObj
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_long(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_long(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_long(*(unsigned long *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_long(const char *itemp, PyObject *obj) {
@@ -40472,8 +40616,8 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_long(const char *itemp, PyOb
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_PY_LONG_LONG(unsigned PY_LONG_LONG value) {
- const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG) -1, const_zero = (unsigned PY_LONG_LONG) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_PY_LONG_LONG(unsigned PY_LONG_LONG value) {
+ const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG) ((unsigned PY_LONG_LONG) 0 - (unsigned PY_LONG_LONG) 1), const_zero = (unsigned PY_LONG_LONG) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned PY_LONG_LONG) < sizeof(long)) {
@@ -40503,7 +40647,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_long(const char *itemp, PyOb
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_PY_LONG_LONG(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_unsigned_PY_LONG_LONG(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_unsigned_PY_LONG_LONG(*(unsigned PY_LONG_LONG *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_unsigned_PY_LONG_LONG(const char *itemp, PyObject *obj) {
@@ -40515,7 +40659,7 @@ static CYTHON_INLINE int __pyx_memview_set_unsigned_PY_LONG_LONG(const char *ite
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -40582,15 +40726,15 @@ no_fail:
}
/* BytesContains */
- static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
+ static CYTHON_INLINE int __Pyx_BytesContains(PyObject* bytes, char character) {
const Py_ssize_t length = PyBytes_GET_SIZE(bytes);
char* char_start = PyBytes_AS_STRING(bytes);
return memchr(char_start, (unsigned char)character, (size_t)length) != NULL;
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
- const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
+ static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
+ const unsigned int neg_one = (unsigned int) ((unsigned int) 0 - (unsigned int) 1), const_zero = (unsigned int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -40778,8 +40922,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE signed char __Pyx_PyInt_As_signed__char(PyObject *x) {
- const signed char neg_one = (signed char) -1, const_zero = (signed char) 0;
+ static CYTHON_INLINE signed char __Pyx_PyInt_As_signed__char(PyObject *x) {
+ const signed char neg_one = (signed char) ((signed char) 0 - (signed char) 1), const_zero = (signed char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -40967,8 +41111,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *x) {
- const short neg_one = (short) -1, const_zero = (short) 0;
+ static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *x) {
+ const short neg_one = (short) ((short) 0 - (short) 1), const_zero = (short) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -41156,8 +41300,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -41345,8 +41489,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -41534,8 +41678,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_As_PY_LONG_LONG(PyObject *x) {
- const PY_LONG_LONG neg_one = (PY_LONG_LONG) -1, const_zero = (PY_LONG_LONG) 0;
+ static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_As_PY_LONG_LONG(PyObject *x) {
+ const PY_LONG_LONG neg_one = (PY_LONG_LONG) ((PY_LONG_LONG) 0 - (PY_LONG_LONG) 1), const_zero = (PY_LONG_LONG) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -41723,8 +41867,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
- const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
+ static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
+ const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -41912,8 +42056,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned short __Pyx_PyInt_As_unsigned_short(PyObject *x) {
- const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0;
+ static CYTHON_INLINE unsigned short __Pyx_PyInt_As_unsigned_short(PyObject *x) {
+ const unsigned short neg_one = (unsigned short) ((unsigned short) 0 - (unsigned short) 1), const_zero = (unsigned short) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -42101,8 +42245,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *x) {
- const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
+ static CYTHON_INLINE unsigned long __Pyx_PyInt_As_unsigned_long(PyObject *x) {
+ const unsigned long neg_one = (unsigned long) ((unsigned long) 0 - (unsigned long) 1), const_zero = (unsigned long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -42290,8 +42434,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_As_unsigned_PY_LONG_LONG(PyObject *x) {
- const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG) -1, const_zero = (unsigned PY_LONG_LONG) 0;
+ static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_As_unsigned_PY_LONG_LONG(PyObject *x) {
+ const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG) ((unsigned PY_LONG_LONG) 0 - (unsigned PY_LONG_LONG) 1), const_zero = (unsigned PY_LONG_LONG) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -42479,7 +42623,7 @@ raise_neg_overflow:
}
/* ImportNumPyArray */
- static PyObject* __Pyx__ImportNumPyArray(void) {
+ static PyObject* __Pyx__ImportNumPyArray(void) {
PyObject *numpy_module, *ndarray_object = NULL;
numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0);
if (likely(numpy_module)) {
@@ -42505,8 +42649,8 @@ static CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -42694,7 +42838,7 @@ raise_neg_overflow:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -42710,7 +42854,7 @@ raise_neg_overflow:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -42819,6 +42963,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -42896,7 +43047,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/fit/filters.c b/silx/math/fit/filters.c
index 1fecd38..ba511ca 100644
--- a/silx/math/fit/filters.c
+++ b/silx/math/fit/filters.c
@@ -1,25 +1,25 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
"silx/math/fit/filters/include/filters.h"
- ],
+ ],
"include_dirs": [
"silx/math/fit/filters/include"
- ],
- "language": "c",
- "name": "silx.math.fit.filters",
+ ],
+ "language": "c",
+ "name": "silx.math.fit.filters",
"sources": [
- "silx/math/fit/filters.pyx",
- "silx/math/fit/filters/src/smoothnd.c",
- "silx/math/fit/filters/src/snip1d.c",
- "silx/math/fit/filters/src/snip2d.c",
- "silx/math/fit/filters/src/snip3d.c",
+ "silx/math/fit/filters.pyx",
+ "silx/math/fit/filters/src/smoothnd.c",
+ "silx/math/fit/filters/src/snip1d.c",
+ "silx/math/fit/filters/src/snip2d.c",
+ "silx/math/fit/filters/src/snip3d.c",
"silx/math/fit/filters/src/strip.c"
]
- },
+ },
"module_name": "silx.math.fit.filters"
}
END: Cython Metadata */
@@ -31,7 +31,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -102,6 +103,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -139,6 +144,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -192,11 +201,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -332,6 +347,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -345,15 +363,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -461,8 +504,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -620,6 +663,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -678,6 +724,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -758,7 +805,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1125,7 +1172,25 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
@@ -1149,6 +1214,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1205,6 +1282,9 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);
@@ -1337,6 +1417,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -2035,9 +2120,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__29;
-static PyObject *__pyx_slice__30;
-static PyObject *__pyx_slice__31;
+static PyObject *__pyx_slice__18;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2046,43 +2129,32 @@ static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
-static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
-static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
+static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__37;
+static PyObject *__pyx_tuple__36;
+static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
+static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
+static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__49;
-static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__54;
-static PyObject *__pyx_tuple__55;
-static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_codeobj__36;
-static PyObject *__pyx_codeobj__38;
-static PyObject *__pyx_codeobj__40;
-static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__23;
+static PyObject *__pyx_codeobj__25;
+static PyObject *__pyx_codeobj__27;
+static PyObject *__pyx_codeobj__29;
+static PyObject *__pyx_codeobj__31;
+static PyObject *__pyx_codeobj__33;
+static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__37;
static PyObject *__pyx_codeobj__44;
-static PyObject *__pyx_codeobj__46;
-static PyObject *__pyx_codeobj__48;
-static PyObject *__pyx_codeobj__50;
-static PyObject *__pyx_codeobj__57;
/* Late includes */
/* "silx/math/fit/filters.pyx":61
@@ -2096,7 +2168,7 @@ static PyObject *__pyx_codeobj__57;
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_1strip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_7filters_strip[] = "strip(data, w=1, niterations=1000, factor=1.0, anchors=None)\nExtract background from data using the strip algorithm, as explained at\n http://pymca.sourceforge.net/stripbackground.html.\n\n In its simplest implementation it is just as an iterative procedure\n depending on two parameters. These parameters are the strip background\n width ``w``, and the number of iterations. At each iteration, if the\n contents of channel ``i``, ``y(i)``, is above the average of the contents\n of the channels at ``w`` channels of distance, ``y(i-w)`` and\n ``y(i+w)``, ``y(i)`` is replaced by the average.\n At the end of the process we are left with something that resembles a spectrum\n in which the peaks have been stripped.\n\n :param data: Data array\n :type data: numpy.ndarray\n :param w: Strip width\n :param niterations: number of iterations\n :param factor: scaling factor applied to the average of ``y(i-w)`` and\n ``y(i+w)`` before comparing to ``y(i)``\n :param anchors: Array of anchors, indices of points that will not be\n modified during the stripping procedure.\n :return: Data with peaks stripped away\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_1strip = {"strip", (PyCFunction)__pyx_pw_4silx_4math_3fit_7filters_1strip, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_strip};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_1strip = {"strip", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_7filters_1strip, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_strip};
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_1strip(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_w = 0;
@@ -2216,19 +2288,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
- int __pyx_t_10;
- __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_12;
- int __pyx_t_13;
- long __pyx_t_14;
- double __pyx_t_15;
- long __pyx_t_16;
- Py_ssize_t __pyx_t_17;
- int __pyx_t_18;
- long __pyx_t_19;
- Py_ssize_t __pyx_t_20;
- PyObject *__pyx_t_21 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ int __pyx_t_11;
+ __Pyx_memviewslice __pyx_t_12 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_13;
+ int __pyx_t_14;
+ long __pyx_t_15;
+ double __pyx_t_16;
+ long __pyx_t_17;
+ Py_ssize_t __pyx_t_18;
+ int __pyx_t_19;
+ long __pyx_t_20;
+ Py_ssize_t __pyx_t_21;
__Pyx_RefNannySetupContext("strip", 0);
/* "silx/math/fit/filters.pyx":89
@@ -2238,7 +2310,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* if not hasattr(data, "__len__"):
* raise TypeError("data must be a sequence (list, tuple) " +
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -2334,16 +2406,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":98
*
@@ -2352,9 +2424,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 98, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 98, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":99
* input_c = numpy.array(data,
@@ -2363,14 +2435,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* order='C').reshape(-1)
*
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 99, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 99, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 99, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 99, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":97
* data_shape = data.shape
@@ -2379,11 +2451,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 97, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/filters.pyx":100
* copy=True,
@@ -2392,17 +2464,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
*
* output = numpy.empty(shape=(input_c.size,),
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_input_c = __pyx_t_9;
- __pyx_t_9.memview = NULL;
- __pyx_t_9.data = NULL;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_input_c = __pyx_t_10;
+ __pyx_t_10.memview = NULL;
+ __pyx_t_10.data = NULL;
/* "silx/math/fit/filters.pyx":102
* order='C').reshape(-1)
@@ -2411,25 +2495,25 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* dtype=numpy.float64)
*
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_input_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_input_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+ PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
__pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_shape, __pyx_t_2) < 0) __PYX_ERR(0, 102, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_9) < 0) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/math/fit/filters.pyx":103
*
@@ -2438,12 +2522,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
*
* if anchors is not None and len(anchors):
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 102, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/fit/filters.pyx":102
@@ -2453,15 +2537,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* dtype=numpy.float64)
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 102, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_output = __pyx_t_9;
- __pyx_t_9.memview = NULL;
- __pyx_t_9.data = NULL;
+ __pyx_v_output = __pyx_t_10;
+ __pyx_t_10.memview = NULL;
+ __pyx_t_10.data = NULL;
/* "silx/math/fit/filters.pyx":105
* dtype=numpy.float64)
@@ -2471,15 +2555,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* anchors_c = numpy.array(anchors,
*/
__pyx_t_4 = (__pyx_v_anchors != Py_None);
- __pyx_t_10 = (__pyx_t_4 != 0);
- if (__pyx_t_10) {
+ __pyx_t_11 = (__pyx_t_4 != 0);
+ if (__pyx_t_11) {
} else {
- __pyx_t_3 = __pyx_t_10;
+ __pyx_t_3 = __pyx_t_11;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_5 = PyObject_Length(__pyx_v_anchors); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 105, __pyx_L1_error)
- __pyx_t_10 = (__pyx_t_5 != 0);
- __pyx_t_3 = __pyx_t_10;
+ __pyx_t_11 = (__pyx_t_5 != 0);
+ __pyx_t_3 = __pyx_t_11;
__pyx_L6_bool_binop_done:;
if (__pyx_t_3) {
@@ -2490,10 +2574,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* copy=False,
* dtype=numpy.int_,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 107, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -2508,9 +2592,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* dtype=numpy.int_,
* order='C')
*/
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 108, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":109
* anchors_c = numpy.array(anchors,
@@ -2519,14 +2603,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* order='C')
* len_anchors = anchors_c.size
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 109, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 109, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 109, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 108, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":107
* if anchors is not None and len(anchors):
@@ -2535,16 +2619,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* copy=False,
* dtype=numpy.int_,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 107, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_long(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 107, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_anchors_c = __pyx_t_11;
- __pyx_t_11.memview = NULL;
- __pyx_t_11.data = NULL;
+ __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dc_long(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 107, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_anchors_c = __pyx_t_12;
+ __pyx_t_12.memview = NULL;
+ __pyx_t_12.data = NULL;
/* "silx/math/fit/filters.pyx":111
* dtype=numpy.int_,
@@ -2553,13 +2637,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* else:
* # Make a dummy length-1 array, because if I use shape=(0,) I get the error
*/
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_anchors_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_long, (int (*)(char *, PyObject *)) __pyx_memview_set_long, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 111, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error)
+ __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_anchors_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_long, (int (*)(char *, PyObject *)) __pyx_memview_set_long, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_len_anchors = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 111, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_v_len_anchors = __pyx_t_7;
+ __pyx_t_7 = 0;
/* "silx/math/fit/filters.pyx":105
* dtype=numpy.float64)
@@ -2579,14 +2663,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* len_anchors = 0
*/
/*else*/ {
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_tuple__2) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_shape, __pyx_tuple_) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":116
* # IndexError: Out of bounds on buffer access (axis 0)
@@ -2595,13 +2679,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* len_anchors = 0
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/math/fit/filters.pyx":115
* # Make a dummy length-1 array, because if I use shape=(0,) I get the error
@@ -2610,15 +2694,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* dtype=numpy.int_)
* len_anchors = 0
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_long(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_anchors_c = __pyx_t_11;
- __pyx_t_11.memview = NULL;
- __pyx_t_11.data = NULL;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dc_long(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_anchors_c = __pyx_t_12;
+ __pyx_t_12.memview = NULL;
+ __pyx_t_12.data = NULL;
/* "silx/math/fit/filters.pyx":117
* anchors_c = numpy.empty(shape=(1,),
@@ -2639,23 +2723,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* factor, niterations, w,
* &anchors_c[0], len_anchors, &output[0])
*/
- __pyx_t_12 = 0;
- __pyx_t_13 = -1;
- if (__pyx_t_12 < 0) {
- __pyx_t_12 += __pyx_v_input_c.shape[0];
- if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
- } else if (unlikely(__pyx_t_12 >= __pyx_v_input_c.shape[0])) __pyx_t_13 = 0;
- if (unlikely(__pyx_t_13 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_13);
+ __pyx_t_13 = 0;
+ __pyx_t_14 = -1;
+ if (__pyx_t_13 < 0) {
+ __pyx_t_13 += __pyx_v_input_c.shape[0];
+ if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
+ } else if (unlikely(__pyx_t_13 >= __pyx_v_input_c.shape[0])) __pyx_t_14 = 0;
+ if (unlikely(__pyx_t_14 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_14);
__PYX_ERR(0, 120, __pyx_L1_error)
}
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_input_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_t_6); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_input_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_15 = __Pyx_PyInt_As_long(__pyx_t_7); if (unlikely((__pyx_t_15 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/filters.pyx":121
*
@@ -2664,9 +2748,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* &anchors_c[0], len_anchors, &output[0])
*
*/
- __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
- __pyx_t_16 = __Pyx_PyInt_As_long(__pyx_v_niterations); if (unlikely((__pyx_t_16 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
- __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
+ __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_v_factor); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
+ __pyx_t_17 = __Pyx_PyInt_As_long(__pyx_v_niterations); if (unlikely((__pyx_t_17 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_w); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":122
* status = filters_wrapper.strip(&input_c[0], input_c.size,
@@ -2675,25 +2759,25 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
*
* return numpy.asarray(output).reshape(data_shape)
*/
- __pyx_t_17 = 0;
- __pyx_t_18 = -1;
- if (__pyx_t_17 < 0) {
- __pyx_t_17 += __pyx_v_anchors_c.shape[0];
- if (unlikely(__pyx_t_17 < 0)) __pyx_t_18 = 0;
- } else if (unlikely(__pyx_t_17 >= __pyx_v_anchors_c.shape[0])) __pyx_t_18 = 0;
- if (unlikely(__pyx_t_18 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_18);
+ __pyx_t_18 = 0;
+ __pyx_t_19 = -1;
+ if (__pyx_t_18 < 0) {
+ __pyx_t_18 += __pyx_v_anchors_c.shape[0];
+ if (unlikely(__pyx_t_18 < 0)) __pyx_t_19 = 0;
+ } else if (unlikely(__pyx_t_18 >= __pyx_v_anchors_c.shape[0])) __pyx_t_19 = 0;
+ if (unlikely(__pyx_t_19 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_19);
__PYX_ERR(0, 122, __pyx_L1_error)
}
- __pyx_t_19 = __Pyx_PyInt_As_long(__pyx_v_len_anchors); if (unlikely((__pyx_t_19 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error)
- __pyx_t_20 = 0;
- __pyx_t_18 = -1;
- if (__pyx_t_20 < 0) {
- __pyx_t_20 += __pyx_v_output.shape[0];
- if (unlikely(__pyx_t_20 < 0)) __pyx_t_18 = 0;
- } else if (unlikely(__pyx_t_20 >= __pyx_v_output.shape[0])) __pyx_t_18 = 0;
- if (unlikely(__pyx_t_18 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_18);
+ __pyx_t_20 = __Pyx_PyInt_As_long(__pyx_v_len_anchors); if (unlikely((__pyx_t_20 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error)
+ __pyx_t_21 = 0;
+ __pyx_t_19 = -1;
+ if (__pyx_t_21 < 0) {
+ __pyx_t_21 += __pyx_v_output.shape[0];
+ if (unlikely(__pyx_t_21 < 0)) __pyx_t_19 = 0;
+ } else if (unlikely(__pyx_t_21 >= __pyx_v_output.shape[0])) __pyx_t_19 = 0;
+ if (unlikely(__pyx_t_19 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_19);
__PYX_ERR(0, 122, __pyx_L1_error)
}
@@ -2704,7 +2788,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
* factor, niterations, w,
* &anchors_c[0], len_anchors, &output[0])
*/
- __pyx_v_status = strip((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_input_c.data) + __pyx_t_12)) )))), __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_13, (&(*((long *) ( /* dim=0 */ ((char *) (((long *) __pyx_v_anchors_c.data) + __pyx_t_17)) )))), __pyx_t_19, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_output.data) + __pyx_t_20)) )))));
+ __pyx_v_status = strip((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_input_c.data) + __pyx_t_13)) )))), __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_14, (&(*((long *) ( /* dim=0 */ ((char *) (((long *) __pyx_v_anchors_c.data) + __pyx_t_18)) )))), __pyx_t_20, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_output.data) + __pyx_t_21)) )))));
/* "silx/math/fit/filters.pyx":124
* &anchors_c[0], len_anchors, &output[0])
@@ -2714,107 +2798,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_output, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = NULL;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_output, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_2)) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_7};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_7};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_21);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_21, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- {
- __pyx_t_21 = PyTuple_New(1+1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_21);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_21, 0+1, __pyx_v_data_shape);
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":61
@@ -2832,9 +2858,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
- __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
- __Pyx_XDECREF(__pyx_t_21);
+ __Pyx_XDECREF(__pyx_t_9);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__Pyx_AddTraceback("silx.math.fit.filters.strip", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -2859,7 +2885,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_strip(CYTHON_UNUSED PyObject
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_3snip1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_7filters_2snip1d[] = "snip1d(data, snip_width)\nEstimate the baseline (background) of a 1D data vector by clipping peaks.\n\n Implementation of the algorithm SNIP in 1D is described in *Miroslav\n Morhac et al. Nucl. Instruments and Methods in Physics Research A401\n (1997) 113-132*.\n\n The original idea for 1D and the low-statistics-digital-filter (lsdf) come\n from *C.G. Ryan et al. Nucl. Instruments and Methods in Physics Research\n B34 (1988) 396-402*.\n\n :param data: Data array, preferably 1D and of type *numpy.float64*.\n Else, the data array will be flattened and converted to\n *dtype=numpy.float64* prior to applying the snip filter.\n :type data: numpy.ndarray\n :param snip_width: Width of the snip operator, in number of samples.\n A sample will be iteratively compared to it's neighbors up to a\n distance of ``snip_width`` samples. This parameters has a direct\n influence on the speed of the algorithm.\n :type width: int\n :return: Baseline of the input array, as an array of the same shape.\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_3snip1d = {"snip1d", (PyCFunction)__pyx_pw_4silx_4math_3fit_7filters_3snip1d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_2snip1d};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_3snip1d = {"snip1d", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_7filters_3snip1d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_2snip1d};
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_3snip1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_snip_width = 0;
@@ -2932,11 +2958,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_10;
- int __pyx_t_11;
+ PyObject *__pyx_t_9 = NULL;
+ __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_11;
int __pyx_t_12;
- PyObject *__pyx_t_13 = NULL;
+ int __pyx_t_13;
__Pyx_RefNannySetupContext("snip1d", 0);
/* "silx/math/fit/filters.pyx":153
@@ -2946,7 +2972,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
* if not hasattr(data, "__len__"):
* raise TypeError("data must be a sequence (list, tuple) " +
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3042,16 +3068,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":162
*
@@ -3060,9 +3086,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 162, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 162, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":163
* data_c = numpy.array(data,
@@ -3071,14 +3097,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
* order='C').reshape(-1)
*
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 162, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":161
* data_shape = data.shape
@@ -3087,11 +3113,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/filters.pyx":164
* copy=True,
@@ -3100,17 +3126,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
*
* filters_wrapper.snip1d(&data_c[0], data_c.size, snip_width)
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_data_c = __pyx_t_9;
- __pyx_t_9.memview = NULL;
- __pyx_t_9.data = NULL;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_data_c = __pyx_t_10;
+ __pyx_t_10.memview = NULL;
+ __pyx_t_10.data = NULL;
/* "silx/math/fit/filters.pyx":166
* order='C').reshape(-1)
@@ -3119,25 +3157,25 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_10 = 0;
- __pyx_t_11 = -1;
- if (__pyx_t_10 < 0) {
- __pyx_t_10 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
- } else if (unlikely(__pyx_t_10 >= __pyx_v_data_c.shape[0])) __pyx_t_11 = 0;
- if (unlikely(__pyx_t_11 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_12 = -1;
+ if (__pyx_t_11 < 0) {
+ __pyx_t_11 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
+ } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
+ if (unlikely(__pyx_t_12 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_12);
__PYX_ERR(0, 166, __pyx_L1_error)
}
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 166, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 166, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L1_error)
- snip1d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_10)) )))), __pyx_t_11, __pyx_t_12);
+ __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 166, __pyx_L1_error)
+ snip1d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13);
/* "silx/math/fit/filters.pyx":168
* filters_wrapper.snip1d(&data_c[0], data_c.size, snip_width)
@@ -3147,107 +3185,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_7)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- {
- __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_data_shape);
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":127
@@ -3265,8 +3245,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
- __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_9);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_AddTraceback("silx.math.fit.filters.snip1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3288,7 +3268,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_2snip1d(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_5snip2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_7filters_4snip2d[] = "snip2d(data, snip_width)\nEstimate the baseline (background) of a 2D data signal by clipping peaks.\n\n Implementation of the algorithm SNIP in 2D described in\n *Miroslav Morhac et al. Nucl. Instruments and Methods in Physics Research\n A401 (1997) 113-132.*\n\n :param data: 2D array\n :type data: numpy.ndarray\n :param width: Width of the snip operator, in number of samples. A wider\n snip operator will result in a smoother result (lower frequency peaks\n will be clipped), and a longer computation time.\n :type width: int\n :return: Baseline of the input array, as an array of the same shape.\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_5snip2d = {"snip2d", (PyCFunction)__pyx_pw_4silx_4math_3fit_7filters_5snip2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_4snip2d};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_5snip2d = {"snip2d", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_7filters_5snip2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_4snip2d};
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_5snip2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_snip_width = 0;
@@ -3364,12 +3344,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
int __pyx_t_13;
int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("snip2d", 0);
/* "silx/math/fit/filters.pyx":190
@@ -3379,7 +3359,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* if not hasattr(data, "__len__") or not hasattr(data[0], "__len__"):
* raise TypeError("data must be a 2D sequence (list, tuple) " +
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3569,7 +3549,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* data_c = numpy.array(data,
*/
/*else*/ {
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 204, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 204, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -3586,16 +3566,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":207
*
@@ -3604,9 +3584,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":208
* data_c = numpy.array(data,
@@ -3615,14 +3595,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* order='C').reshape(-1)
*
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 208, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":206
* raise TypeError("data array must be 2-dimensional")
@@ -3631,11 +3611,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/math/fit/filters.pyx":209
* copy=True,
@@ -3644,17 +3624,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
*
* filters_wrapper.snip2d(&data_c[0], nrows, ncolumns, snip_width)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_data_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 209, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_data_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/filters.pyx":211
* order='C').reshape(-1)
@@ -3663,20 +3655,20 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_data_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 211, __pyx_L1_error)
}
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_nrows); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
- __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_ncolumns); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
- __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
- snip2d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13, __pyx_t_14);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_nrows); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_ncolumns); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
+ snip2d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_12)) )))), __pyx_t_13, __pyx_t_14, __pyx_t_15);
/* "silx/math/fit/filters.pyx":213
* filters_wrapper.snip2d(&data_c[0], nrows, ncolumns, snip_width)
@@ -3686,107 +3678,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_8)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- }
+ __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_1)) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_v_data_shape);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_15, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 213, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":171
@@ -3804,8 +3738,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.filters.snip2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3829,7 +3763,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_4snip2d(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_7snip3d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_7filters_6snip3d[] = "snip3d(data, snip_width)\nEstimate the baseline (background) of a 3D data signal by clipping peaks.\n\n Implementation of the algorithm SNIP in 2D described in\n *Miroslav Morhac et al. Nucl. Instruments and Methods in Physics Research\n A401 (1997) 113-132.*\n\n :param data: 3D array\n :type data: numpy.ndarray\n :param width: Width of the snip operator, in number of samples. A wider\n snip operator will result in a smoother result (lower frequency peaks\n will be clipped), and a longer computation time.\n :type width: int\n\n :return: Baseline of the input array, as an array of the same shape.\n :rtype: numpy.ndarray\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_7snip3d = {"snip3d", (PyCFunction)__pyx_pw_4silx_4math_3fit_7filters_7snip3d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_6snip3d};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_7snip3d = {"snip3d", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_7filters_7snip3d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_6snip3d};
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_7snip3d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_snip_width = 0;
@@ -3907,13 +3841,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
int __pyx_t_13;
int __pyx_t_14;
int __pyx_t_15;
- PyObject *__pyx_t_16 = NULL;
+ int __pyx_t_16;
__Pyx_RefNannySetupContext("snip3d", 0);
/* "silx/math/fit/filters.pyx":236
@@ -3923,7 +3857,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* if not hasattr(data, "__len__") or not hasattr(data[0], "__len__") or\
* not hasattr(data[0][0], "__len__"):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 236, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4197,7 +4131,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* data_c = numpy.array(data,
*/
/*else*/ {
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -4214,16 +4148,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":256
*
@@ -4232,9 +4166,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":257
* data_c = numpy.array(data,
@@ -4243,14 +4177,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* order='C').reshape(-1)
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 256, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":255
* raise TypeError("data array must be 3-dimensional")
@@ -4259,11 +4193,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 255, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/fit/filters.pyx":258
* copy=True,
@@ -4272,17 +4206,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
*
* filters_wrapper.snip3d(&data_c[0], nx, ny, nz, snip_width)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_data_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_data_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/filters.pyx":260
* order='C').reshape(-1)
@@ -4291,21 +4237,21 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_data_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 260, __pyx_L1_error)
}
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_nx); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
- __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_ny); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
- __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_nz); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
- __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
- snip3d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_nx); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_ny); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_nz); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
+ __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_v_snip_width); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L1_error)
+ snip3d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_12)) )))), __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16);
/* "silx/math/fit/filters.pyx":262
* filters_wrapper.snip3d(&data_c[0], nx, ny, nz, snip_width)
@@ -4315,107 +4261,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_1)) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = NULL;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_2)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_16);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_v_data_shape);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_16, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_1, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":216
@@ -4433,8 +4321,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_16);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.filters.snip3d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4460,7 +4348,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_6snip3d(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_9savitsky_golay(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_7filters_8savitsky_golay[] = "savitsky_golay(data, npoints=5)\nSmooth a curve using a Savitsky-Golay filter.\n\n :param data: Input data\n :type data: 1D numpy array\n :param npoints: Size of the smoothing operator in number of samples\n Must be between 3 and 100.\n :return: Smoothed data\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_9savitsky_golay = {"savitsky_golay", (PyCFunction)__pyx_pw_4silx_4math_3fit_7filters_9savitsky_golay, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_8savitsky_golay};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_7filters_9savitsky_golay = {"savitsky_golay", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_7filters_9savitsky_golay, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_7filters_8savitsky_golay};
static PyObject *__pyx_pw_4silx_4math_3fit_7filters_9savitsky_golay(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_npoints = 0;
@@ -4535,14 +4423,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_7;
- int __pyx_t_8;
- long __pyx_t_9;
- Py_ssize_t __pyx_t_10;
- int __pyx_t_11;
+ PyObject *__pyx_t_6 = NULL;
+ __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_8;
+ int __pyx_t_9;
+ long __pyx_t_10;
+ Py_ssize_t __pyx_t_11;
int __pyx_t_12;
- PyObject *__pyx_t_13 = NULL;
+ int __pyx_t_13;
__Pyx_RefNannySetupContext("savitsky_golay", 0);
/* "silx/math/fit/filters.pyx":278
@@ -4552,16 +4440,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":279
*
@@ -4570,16 +4458,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* order='C').reshape(-1)
*
*/
- __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 279, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 279, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 279, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":278
* double[::1] output
@@ -4588,11 +4476,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/filters.pyx":280
* data_c = numpy.array(data,
@@ -4601,17 +4489,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
*
* output = numpy.empty(shape=(data_c.size,),
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 280, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 280, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_data_c = __pyx_t_6;
- __pyx_t_6.memview = NULL;
- __pyx_t_6.data = NULL;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 280, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_data_c = __pyx_t_7;
+ __pyx_t_7.memview = NULL;
+ __pyx_t_7.data = NULL;
/* "silx/math/fit/filters.pyx":282
* order='C').reshape(-1)
@@ -4620,25 +4520,25 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
__pyx_t_2 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_1) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/filters.pyx":283
*
@@ -4647,12 +4547,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
*
* status = filters_wrapper.SavitskyGolay(&data_c[0], data_c.size,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 283, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 283, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 283, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/math/fit/filters.pyx":282
@@ -4662,15 +4562,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 282, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 282, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_output = __pyx_t_6;
- __pyx_t_6.memview = NULL;
- __pyx_t_6.data = NULL;
+ __pyx_v_output = __pyx_t_7;
+ __pyx_t_7.memview = NULL;
+ __pyx_t_7.data = NULL;
/* "silx/math/fit/filters.pyx":285
* dtype=numpy.float64)
@@ -4679,23 +4579,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* npoints, &output[0])
*
*/
- __pyx_t_7 = 0;
- __pyx_t_8 = -1;
- if (__pyx_t_7 < 0) {
- __pyx_t_7 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_7 < 0)) __pyx_t_8 = 0;
- } else if (unlikely(__pyx_t_7 >= __pyx_v_data_c.shape[0])) __pyx_t_8 = 0;
- if (unlikely(__pyx_t_8 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_8);
+ __pyx_t_8 = 0;
+ __pyx_t_9 = -1;
+ if (__pyx_t_8 < 0) {
+ __pyx_t_8 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_8 < 0)) __pyx_t_9 = 0;
+ } else if (unlikely(__pyx_t_8 >= __pyx_v_data_c.shape[0])) __pyx_t_9 = 0;
+ if (unlikely(__pyx_t_9 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_9);
__PYX_ERR(0, 285, __pyx_L1_error)
}
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_9 = __Pyx_PyInt_As_long(__pyx_t_5); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_10 = __Pyx_PyInt_As_long(__pyx_t_1); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/fit/filters.pyx":286
*
@@ -4704,15 +4604,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
*
* if status:
*/
- __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_npoints); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 286, __pyx_L1_error)
- __pyx_t_10 = 0;
- __pyx_t_11 = -1;
- if (__pyx_t_10 < 0) {
- __pyx_t_10 += __pyx_v_output.shape[0];
- if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
- } else if (unlikely(__pyx_t_10 >= __pyx_v_output.shape[0])) __pyx_t_11 = 0;
- if (unlikely(__pyx_t_11 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_11);
+ __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_npoints); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 286, __pyx_L1_error)
+ __pyx_t_11 = 0;
+ __pyx_t_12 = -1;
+ if (__pyx_t_11 < 0) {
+ __pyx_t_11 += __pyx_v_output.shape[0];
+ if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
+ } else if (unlikely(__pyx_t_11 >= __pyx_v_output.shape[0])) __pyx_t_12 = 0;
+ if (unlikely(__pyx_t_12 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_12);
__PYX_ERR(0, 286, __pyx_L1_error)
}
@@ -4723,7 +4623,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* npoints, &output[0])
*
*/
- __pyx_v_status = SavitskyGolay((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_7)) )))), __pyx_t_9, __pyx_t_8, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_output.data) + __pyx_t_10)) )))));
+ __pyx_v_status = SavitskyGolay((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_8)) )))), __pyx_t_10, __pyx_t_9, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_output.data) + __pyx_t_11)) )))));
/* "silx/math/fit/filters.pyx":288
* npoints, &output[0])
@@ -4732,8 +4632,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* _logger.error("Smoothing failed. Check that npoints is greater " +
* "than 3 and smaller than 100.")
*/
- __pyx_t_12 = (__pyx_v_status != 0);
- if (__pyx_t_12) {
+ __pyx_t_13 = (__pyx_v_status != 0);
+ if (__pyx_t_13) {
/* "silx/math/fit/filters.pyx":289
*
@@ -4742,60 +4642,30 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
* "than 3 and smaller than 100.")
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_error); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyNumber_Add(__pyx_kp_s_Smoothing_failed_Check_that_npoi, __pyx_kp_s_than_3_and_smaller_than_100); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
- __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_3, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_2};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 289, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/fit/filters.pyx":288
* npoints, &output[0])
@@ -4814,112 +4684,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_output, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_13);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- }
- }
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_output, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 292, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_13 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_13)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_13);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- if (!__pyx_t_13) {
- __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
- __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
- __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_13); __pyx_t_13 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_2)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 292, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_1;
+ __pyx_t_1 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":265
@@ -4937,8 +4747,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_8savitsky_golay(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
- __Pyx_XDECREF(__pyx_t_13);
+ __Pyx_XDECREF(__pyx_t_6);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("silx.math.fit.filters.savitsky_golay", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4985,10 +4795,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_10;
- int __pyx_t_11;
- PyObject *__pyx_t_12 = NULL;
+ PyObject *__pyx_t_9 = NULL;
+ __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_11;
+ int __pyx_t_12;
__Pyx_RefNannySetupContext("smooth1d", 0);
/* "silx/math/fit/filters.pyx":316
@@ -4998,7 +4808,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
* if not hasattr(data, "__len__"):
* raise TypeError("data must be a sequence (list, tuple) " +
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -5094,16 +4904,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":325
*
@@ -5112,9 +4922,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 325, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":326
* data_c = numpy.array(data,
@@ -5123,14 +4933,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
* order='C').reshape(-1)
*
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 326, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 326, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 326, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":324
* data_shape = data.shape
@@ -5139,11 +4949,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/filters.pyx":327
* copy=True,
@@ -5152,17 +4962,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
*
* filters_wrapper.smooth1d(&data_c[0], data_c.size)
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_v_data_c = __pyx_t_9;
- __pyx_t_9.memview = NULL;
- __pyx_t_9.data = NULL;
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
+ __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+ if (likely(__pyx_t_9)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_9);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_7, function);
+ }
+ }
+ __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 327, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_data_c = __pyx_t_10;
+ __pyx_t_10.memview = NULL;
+ __pyx_t_10.data = NULL;
/* "silx/math/fit/filters.pyx":329
* order='C').reshape(-1)
@@ -5171,24 +4993,24 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_10 = 0;
- __pyx_t_11 = -1;
- if (__pyx_t_10 < 0) {
- __pyx_t_10 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
- } else if (unlikely(__pyx_t_10 >= __pyx_v_data_c.shape[0])) __pyx_t_11 = 0;
- if (unlikely(__pyx_t_11 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_11);
+ __pyx_t_11 = 0;
+ __pyx_t_12 = -1;
+ if (__pyx_t_11 < 0) {
+ __pyx_t_11 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
+ } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
+ if (unlikely(__pyx_t_12 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_12);
__PYX_ERR(0, 329, __pyx_L1_error)
}
- __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- smooth1d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_10)) )))), __pyx_t_11);
+ __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ smooth1d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12);
/* "silx/math/fit/filters.pyx":331
* filters_wrapper.smooth1d(&data_c[0], data_c.size)
@@ -5198,107 +5020,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_7 = NULL;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_7)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_7) {
- __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
- __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_2};
- __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_8)) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data_shape};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else
- #endif
- {
- __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_12);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_data_shape);
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 331, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 331, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":295
@@ -5316,8 +5080,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_10smooth1d(CYTHON_UNUSED PyO
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
- __Pyx_XDECREF(__pyx_t_12);
+ __Pyx_XDECREF(__pyx_t_9);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_AddTraceback("silx.math.fit.filters.smooth1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5367,11 +5131,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
int __pyx_t_13;
- PyObject *__pyx_t_14 = NULL;
+ int __pyx_t_14;
__Pyx_RefNannySetupContext("smooth2d", 0);
/* "silx/math/fit/filters.pyx":346
@@ -5381,7 +5145,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* if not hasattr(data, "__len__") or not hasattr(data[0], "__len__"):
* raise TypeError("data must be a 2D sequence (list, tuple) " +
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -5571,7 +5335,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* data_c = numpy.array(data,
*/
/*else*/ {
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 360, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -5588,16 +5352,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":363
*
@@ -5606,9 +5370,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 363, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":364
* data_c = numpy.array(data,
@@ -5617,14 +5381,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* order='C').reshape(-1)
*
*/
- __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 364, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 364, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 363, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":362
* raise TypeError("data array must be 2-dimensional")
@@ -5633,11 +5397,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 362, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 362, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
/* "silx/math/fit/filters.pyx":365
* copy=True,
@@ -5646,17 +5410,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
*
* filters_wrapper.smooth2d(&data_c[0], nrows, ncolumns)
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_data_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_data_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/filters.pyx":367
* order='C').reshape(-1)
@@ -5665,19 +5441,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_data_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 367, __pyx_L1_error)
}
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_nrows); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error)
- __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_ncolumns); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error)
- smooth2d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_nrows); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_ncolumns); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error)
+ smooth2d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_12)) )))), __pyx_t_13, __pyx_t_14);
/* "silx/math/fit/filters.pyx":369
* filters_wrapper.smooth2d(&data_c[0], nrows, ncolumns)
@@ -5687,107 +5463,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_asarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_8)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_7};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_1)) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_8)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_14);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_v_data_shape);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_14, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 369, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":334
@@ -5805,8 +5523,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_12smooth2d(CYTHON_UNUSED PyO
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_14);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.filters.smooth2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5860,12 +5578,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
int __pyx_t_13;
int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("smooth3d", 0);
/* "silx/math/fit/filters.pyx":385
@@ -5875,7 +5593,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* if not hasattr(data, "__len__") or not hasattr(data[0], "__len__") or\
* not hasattr(data[0][0], "__len__"):
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 385, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -6149,7 +5867,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* data_c = numpy.array(data,
*/
/*else*/ {
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -6166,16 +5884,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_data);
/* "silx/math/fit/filters.pyx":405
*
@@ -6184,9 +5902,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 405, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":406
* data_c = numpy.array(data,
@@ -6195,14 +5913,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* order='C').reshape(-1)
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 406, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 406, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":404
* raise TypeError("data array must be 3-dimensional")
@@ -6211,11 +5929,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/fit/filters.pyx":407
* copy=True,
@@ -6224,17 +5942,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
*
* filters_wrapper.smooth3d(&data_c[0], nx, ny, nz)
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_data_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
+ }
+ }
+ __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_data_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/filters.pyx":409
* order='C').reshape(-1)
@@ -6243,20 +5973,20 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
*
* return numpy.asarray(data_c).reshape(data_shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_data_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_data_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_data_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_data_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 409, __pyx_L1_error)
}
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_nx); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
- __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_ny); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
- __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_nz); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
- smooth3d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_11)) )))), __pyx_t_12, __pyx_t_13, __pyx_t_14);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_nx); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
+ __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_ny); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_nz); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
+ smooth3d((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_data_c.data) + __pyx_t_12)) )))), __pyx_t_13, __pyx_t_14, __pyx_t_15);
/* "silx/math/fit/filters.pyx":411
* filters_wrapper.smooth3d(&data_c[0], nx, ny, nz)
@@ -6264,107 +5994,49 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
* return numpy.asarray(data_c).reshape(data_shape) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_asarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = NULL;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_data_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_1)) {
+ __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_1) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_7};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = NULL;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
- __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
- if (likely(__pyx_t_2)) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
- __Pyx_INCREF(__pyx_t_2);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_data_shape};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_INCREF(__pyx_v_data_shape);
- __Pyx_GIVEREF(__pyx_v_data_shape);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_v_data_shape);
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- }
- }
+ __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_1, __pyx_v_data_shape) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data_shape);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_r = __pyx_t_7;
+ __pyx_t_7 = 0;
goto __pyx_L0;
/* "silx/math/fit/filters.pyx":372
@@ -6382,8 +6054,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_7filters_14smooth3d(CYTHON_UNUSED PyO
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.filters.smooth3d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -6546,10 +6218,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -6595,7 +6267,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6627,7 +6299,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -6660,13 +6332,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -6685,13 +6369,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -6704,8 +6388,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -6742,10 +6426,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -6764,21 +6448,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -6797,24 +6481,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -6845,7 +6529,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -6939,11 +6623,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -7016,7 +6700,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -7066,8 +6750,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -7121,7 +6805,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -7257,7 +6941,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7973,7 +7657,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -8026,7 +7710,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -8502,7 +8186,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -8548,7 +8232,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9670,7 +9354,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -10697,7 +10381,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -11053,7 +10737,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11593,7 +11277,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11707,7 +11391,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__26, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__15, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -12708,7 +12392,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12761,7 +12445,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13112,9 +12796,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__29);
- __Pyx_GIVEREF(__pyx_slice__29);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__29);
+ __Pyx_INCREF(__pyx_slice__18);
+ __Pyx_GIVEREF(__pyx_slice__18);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__18);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -13147,7 +12831,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__30); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__18); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -13197,7 +12881,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -13287,9 +12971,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__31);
- __Pyx_GIVEREF(__pyx_slice__31);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__31);
+ __Pyx_INCREF(__pyx_slice__18);
+ __Pyx_GIVEREF(__pyx_slice__18);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__18);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -13413,7 +13097,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -15576,7 +15260,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15629,7 +15313,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17510,7 +17194,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -17543,41 +17226,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -17597,7 +17250,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -17624,7 +17276,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -17661,41 +17312,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17736,7 +17357,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -18844,7 +18464,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -18925,8 +18545,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -18983,41 +18602,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -19040,48 +18629,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -19094,8 +18655,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -19142,7 +18703,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -19172,7 +18732,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -19243,41 +18802,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -19305,7 +18834,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -20020,6 +19548,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_15_05_2017, __pyx_k_15_05_2017, sizeof(__pyx_k_15_05_2017), 0, 0, 1, 0},
@@ -20171,7 +19708,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 91, __pyx_L1_error)
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 132, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 147, __pyx_L1_error)
@@ -20185,21 +19722,10 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/math/fit/filters.pyx":100
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * output = numpy.empty(shape=(input_c.size,),
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
/* "silx/math/fit/filters.pyx":115
* # Make a dummy length-1 array, because if I use shape=(0,) I get the error
* # IndexError: Out of bounds on buffer access (axis 0)
@@ -20207,20 +19733,9 @@ static int __Pyx_InitCachedConstants(void) {
* dtype=numpy.int_)
* len_anchors = 0
*/
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
- /* "silx/math/fit/filters.pyx":164
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.snip1d(&data_c[0], data_c.size, snip_width)
- */
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 164, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
+ __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple_);
+ __Pyx_GIVEREF(__pyx_tuple_);
/* "silx/math/fit/filters.pyx":204
* ncolumns = data_shape[1]
@@ -20229,20 +19744,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* data_c = numpy.array(data,
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_2_dimensional); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
-
- /* "silx/math/fit/filters.pyx":209
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.snip2d(&data_c[0], nrows, ncolumns, snip_width)
- */
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 209, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_2_dimensional); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "silx/math/fit/filters.pyx":253
* nz = data_shape[2]
@@ -20251,42 +19755,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* data_c = numpy.array(data,
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_3_dimensional); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
-
- /* "silx/math/fit/filters.pyx":258
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.snip3d(&data_c[0], nx, ny, nz, snip_width)
- */
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
-
- /* "silx/math/fit/filters.pyx":280
- * data_c = numpy.array(data,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * output = numpy.empty(shape=(data_c.size,),
- */
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 280, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
-
- /* "silx/math/fit/filters.pyx":327
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.smooth1d(&data_c[0], data_c.size)
- */
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 327, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_3_dimensional); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/filters.pyx":360
* ncolumns = data_shape[1]
@@ -20295,20 +19766,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* data_c = numpy.array(data,
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_2_dimensional); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 360, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
-
- /* "silx/math/fit/filters.pyx":365
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.smooth2d(&data_c[0], nrows, ncolumns)
- */
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_2_dimensional); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 360, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "silx/math/fit/filters.pyx":402
* nz = data_shape[2]
@@ -20317,20 +19777,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* data_c = numpy.array(data,
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_3_dimensional); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
-
- /* "silx/math/fit/filters.pyx":407
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- *
- * filters_wrapper.smooth3d(&data_c[0], nx, ny, nz)
- */
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_data_array_must_be_3_dimensional); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "View.MemoryView":132
*
@@ -20339,9 +19788,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "View.MemoryView":135
*
@@ -20350,20 +19799,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
/* "View.MemoryView":147
*
@@ -20372,9 +19810,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -20383,9 +19821,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -20394,9 +19832,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20404,18 +19842,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -20424,9 +19862,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -20435,9 +19873,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -20446,9 +19884,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -20457,9 +19895,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -20468,12 +19906,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__26 = PyTuple_New(1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
+ __pyx_tuple__15 = PyTuple_New(1); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__26, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ PyTuple_SET_ITEM(__pyx_tuple__15, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20481,18 +19919,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -20501,9 +19939,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__29);
- __Pyx_GIVEREF(__pyx_slice__29);
+ __pyx_slice__18 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__18);
+ __Pyx_GIVEREF(__pyx_slice__18);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -20512,9 +19950,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__30 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__30)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__30);
- __Pyx_GIVEREF(__pyx_slice__30);
+ __pyx_slice__18 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__18);
+ __Pyx_GIVEREF(__pyx_slice__18);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -20523,9 +19961,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__31);
- __Pyx_GIVEREF(__pyx_slice__31);
+ __pyx_slice__18 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__18)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__18);
+ __Pyx_GIVEREF(__pyx_slice__18);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -20534,9 +19972,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -20544,18 +19982,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "silx/math/fit/filters.pyx":61
*
@@ -20564,10 +20002,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Extract background from data using the strip algorithm, as explained at
* http://pymca.sourceforge.net/stripbackground.html.
*/
- __pyx_tuple__35 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_w, __pyx_n_s_niterations, __pyx_n_s_factor, __pyx_n_s_anchors, __pyx_n_s_input_c, __pyx_n_s_output, __pyx_n_s_anchors_c, __pyx_n_s_data_shape, __pyx_n_s_len_anchors, __pyx_n_s_status); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 61, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
- __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(5, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_strip, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __pyx_tuple__22 = PyTuple_Pack(11, __pyx_n_s_data, __pyx_n_s_w, __pyx_n_s_niterations, __pyx_n_s_factor, __pyx_n_s_anchors, __pyx_n_s_input_c, __pyx_n_s_output, __pyx_n_s_anchors_c, __pyx_n_s_data_shape, __pyx_n_s_len_anchors, __pyx_n_s_status); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(5, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_strip, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 61, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":127
*
@@ -20576,10 +20014,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Estimate the baseline (background) of a 1D data vector by clipping peaks.
*
*/
- __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
- __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip1d, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 127, __pyx_L1_error)
+ __pyx_tuple__24 = PyTuple_Pack(4, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 127, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip1d, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(0, 127, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":171
*
@@ -20588,10 +20026,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Estimate the baseline (background) of a 2D data signal by clipping peaks.
*
*/
- __pyx_tuple__39 = PyTuple_Pack(6, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_nrows, __pyx_n_s_ncolumns, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 171, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
- __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip2d, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __pyx_tuple__26 = PyTuple_Pack(6, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_nrows, __pyx_n_s_ncolumns, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip2d, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 171, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":216
*
@@ -20600,10 +20038,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Estimate the baseline (background) of a 3D data signal by clipping peaks.
*
*/
- __pyx_tuple__41 = PyTuple_Pack(8, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_nx, __pyx_n_s_ny, __pyx_n_s_nz, __pyx_n_s_data_shape, __pyx_n_s_nrows); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 216, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
- __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip3d, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __pyx_tuple__28 = PyTuple_Pack(8, __pyx_n_s_data, __pyx_n_s_snip_width, __pyx_n_s_data_c, __pyx_n_s_nx, __pyx_n_s_ny, __pyx_n_s_nz, __pyx_n_s_data_shape, __pyx_n_s_nrows); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_snip3d, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 216, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":265
*
@@ -20612,10 +20050,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Smooth a curve using a Savitsky-Golay filter.
*
*/
- __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_data, __pyx_n_s_npoints, __pyx_n_s_data_c, __pyx_n_s_output, __pyx_n_s_status); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 265, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
- __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_savitsky_golay, 265, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_data, __pyx_n_s_npoints, __pyx_n_s_data_c, __pyx_n_s_output, __pyx_n_s_status); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 265, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_savitsky_golay, 265, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 265, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":295
*
@@ -20624,10 +20062,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Simple smoothing for 1D data.
*
*/
- __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 295, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
- __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth1d, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __pyx_tuple__32 = PyTuple_Pack(3, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 295, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth1d, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 295, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":334
*
@@ -20636,10 +20074,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Simple smoothing for 2D data:
* :func:`smooth1d` is applied succesively along both axis
*/
- __pyx_tuple__47 = PyTuple_Pack(5, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_nrows, __pyx_n_s_ncolumns, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 334, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
- __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth2d, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 334, __pyx_L1_error)
+ __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_nrows, __pyx_n_s_ncolumns, __pyx_n_s_data_shape); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 334, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
+ __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth2d, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 334, __pyx_L1_error)
/* "silx/math/fit/filters.pyx":372
*
@@ -20648,10 +20086,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Simple smoothing for 3D data:
* :func:`smooth2d` is applied on each 2D slice of the data volume along all
*/
- __pyx_tuple__49 = PyTuple_Pack(7, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_nx, __pyx_n_s_ny, __pyx_n_s_nz, __pyx_n_s_data_shape, __pyx_n_s_nrows); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 372, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
- __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth3d, 372, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __pyx_tuple__36 = PyTuple_Pack(7, __pyx_n_s_data, __pyx_n_s_data_c, __pyx_n_s_nx, __pyx_n_s_ny, __pyx_n_s_nz, __pyx_n_s_data_shape, __pyx_n_s_nrows); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 372, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_filters_pyx, __pyx_n_s_smooth3d, 372, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 372, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -20660,9 +20098,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__38);
+ __Pyx_GIVEREF(__pyx_tuple__38);
/* "View.MemoryView":286
*
@@ -20671,9 +20109,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -20682,9 +20120,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__53);
- __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__40);
+ __Pyx_GIVEREF(__pyx_tuple__40);
/* "View.MemoryView":290
*
@@ -20693,9 +20131,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
/* "View.MemoryView":291
*
@@ -20704,19 +20142,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__55);
- __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__42);
+ __Pyx_GIVEREF(__pyx_tuple__42);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__56 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
- __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -20724,7 +20162,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -20738,13 +20176,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -20867,15 +20305,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -20888,7 +20317,30 @@ __Pyx_PyMODINIT_FUNC PyInit_filters(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -20901,8 +20353,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -20923,7 +20377,7 @@ bad:
}
-static int __pyx_pymod_exec_filters(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_filters(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -20933,7 +20387,11 @@ static int __pyx_pymod_exec_filters(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_4[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'filters' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -20948,6 +20406,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_filters(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -21002,7 +20463,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__fit__filters) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -21093,12 +20554,12 @@ if (!__Pyx_RefNanny) {
*
* cimport cython
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -21233,7 +20694,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -21247,7 +20708,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -21261,7 +20722,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -21275,7 +20736,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -21289,7 +20750,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -21375,9 +20836,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.fit.filters", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.fit.filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.fit.filters");
}
@@ -21398,9 +20859,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -21581,34 +21042,42 @@ static void __Pyx_RaiseArgtupleInvalid(
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -21621,7 +21090,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -21639,14 +21108,14 @@ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -21654,16 +21123,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -21681,7 +21149,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -21782,7 +21250,7 @@ done:
#endif
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -21802,7 +21270,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#endif
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -21822,7 +21290,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -21862,7 +21330,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -21886,7 +21354,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -22044,14 +21512,43 @@ bad:
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -22189,7 +21686,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -22204,7 +21701,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -22222,7 +21719,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -22238,7 +21735,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -22246,7 +21743,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -22276,7 +21773,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -22297,7 +21794,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -22344,7 +21841,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -22423,6 +21920,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -22443,7 +21943,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -22451,7 +21951,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -22480,7 +21980,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -22513,7 +22013,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -22538,7 +22038,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -22553,25 +22053,25 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -22583,13 +22083,29 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -22601,13 +22117,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22623,11 +22140,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -22660,13 +22178,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22693,16 +22214,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -22727,7 +22249,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -22774,7 +22296,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -22792,7 +22314,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -22847,14 +22369,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -22864,7 +22414,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -22986,12 +22536,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -22999,7 +22549,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -23041,7 +22591,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -23055,7 +22605,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -23095,7 +22645,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -23105,7 +22655,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -23123,7 +22673,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -23199,8 +22749,8 @@ GOOD:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -23213,7 +22763,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -23230,7 +22782,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -23239,7 +22791,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -23319,7 +22871,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -23425,8 +22977,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -23448,7 +23000,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -23484,7 +23036,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -23497,7 +23049,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -23509,8 +23061,8 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -23540,7 +23092,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -23562,7 +23114,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_long(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_long(const char *itemp) {
return (PyObject *) __Pyx_PyInt_From_long(*(long *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_long(const char *itemp, PyObject *obj) {
@@ -23574,7 +23126,7 @@ static CYTHON_INLINE int __pyx_memview_set_long(const char *itemp, PyObject *obj
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -23641,8 +23193,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -23830,8 +23382,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24019,8 +23571,8 @@ raise_neg_overflow:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -24050,8 +23602,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -24239,7 +23791,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -24250,7 +23802,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -24752,7 +24304,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -24793,7 +24345,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -24975,7 +24527,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -24998,7 +24550,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_long(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -25021,7 +24573,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -25037,7 +24589,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -25146,6 +24698,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -25223,7 +24782,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/fit/fittheory.py b/silx/math/fit/fittheory.py
index 17441ac..fa42e6b 100644
--- a/silx/math/fit/fittheory.py
+++ b/silx/math/fit/fittheory.py
@@ -1,7 +1,7 @@
# coding: utf-8
#/*##########################################################################
#
-# Copyright (c) 2004-2016 European Synchrotron Radiation Facility
+# Copyright (c) 2004-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -69,13 +69,13 @@ class FitTheory(object):
signature, as explained in the documentation for :attr:`function`.
"""
self.function = function
- """Regular fit functions must have the signature *f(x, \*params) -> y*,
+ """Regular fit functions must have the signature ``f(x, *params) -> y``,
where *x* is a 1D array of values for the independent variable,
*params* are the parameters to be fitted and *y* is the output array
that we want to have the best fit to a series of data points.
Background functions used by :class:`FitManager` must have a slightly
- different signature: *f(x, y0, \*params) -> bg*, where *y0* is the
+ different signature: ``f(x, y0, *params) -> bg``, where *y0* is the
array of original data points and *bg* is the background signal that
we want to subtract from the data array prior to fitting the regular
fit function.
@@ -149,7 +149,7 @@ class FitTheory(object):
A background function is an secondary function that needs to be added
to the main fit function to better fit the original data.
If this flag is set to *True*, modules using this theory are informed
- that :attr:`function` has the signature *f(x, y0, \*params) -> bg*,
+ that :attr:`function` has the signature ``f(x, y0, *params) -> bg``,
instead of the usual fit function signature."""
def default_estimate(self, x=None, y=None, bg=None):
diff --git a/silx/math/fit/functions.c b/silx/math/fit/functions.c
index 966a919..b790b2f 100644
--- a/silx/math/fit/functions.c
+++ b/silx/math/fit/functions.c
@@ -1,21 +1,21 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
"silx/math/fit/functions/include/functions.h"
- ],
+ ],
"include_dirs": [
"silx/math/fit/functions/include"
- ],
- "language": "c",
- "name": "silx.math.fit.functions",
+ ],
+ "language": "c",
+ "name": "silx.math.fit.functions",
"sources": [
- "silx/math/fit/functions.pyx",
+ "silx/math/fit/functions.pyx",
"silx/math/fit/functions/src/funs.c"
]
- },
+ },
"module_name": "silx.math.fit.functions"
}
END: Cython Metadata */
@@ -27,7 +27,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -98,6 +99,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -135,6 +140,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -188,11 +197,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -328,6 +343,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -341,15 +359,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -457,8 +500,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -616,6 +659,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -674,6 +720,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -754,7 +801,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1115,7 +1162,25 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
@@ -1133,6 +1198,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1142,6 +1219,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1150,13 +1230,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
@@ -1357,6 +1432,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -2063,18 +2143,14 @@ static PyObject *__pyx_int_8;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_tuple_;
+static PyObject *__pyx_slice__4;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
-static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__50;
-static PyObject *__pyx_slice__67;
-static PyObject *__pyx_slice__68;
-static PyObject *__pyx_slice__69;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2089,96 +2165,50 @@ static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
-static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
-static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__51;
-static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__53;
-static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__55;
-static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__57;
-static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__59;
-static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__64;
static PyObject *__pyx_tuple__65;
static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__70;
-static PyObject *__pyx_tuple__71;
-static PyObject *__pyx_tuple__72;
-static PyObject *__pyx_tuple__73;
-static PyObject *__pyx_tuple__75;
-static PyObject *__pyx_tuple__77;
-static PyObject *__pyx_tuple__79;
-static PyObject *__pyx_tuple__81;
-static PyObject *__pyx_tuple__83;
-static PyObject *__pyx_tuple__85;
-static PyObject *__pyx_tuple__87;
-static PyObject *__pyx_tuple__89;
-static PyObject *__pyx_tuple__91;
-static PyObject *__pyx_tuple__93;
-static PyObject *__pyx_tuple__95;
-static PyObject *__pyx_tuple__97;
-static PyObject *__pyx_tuple__99;
-static PyObject *__pyx_tuple__101;
-static PyObject *__pyx_tuple__103;
-static PyObject *__pyx_tuple__105;
-static PyObject *__pyx_tuple__107;
-static PyObject *__pyx_tuple__109;
-static PyObject *__pyx_tuple__111;
-static PyObject *__pyx_tuple__112;
-static PyObject *__pyx_tuple__113;
-static PyObject *__pyx_tuple__114;
-static PyObject *__pyx_tuple__115;
-static PyObject *__pyx_tuple__116;
-static PyObject *__pyx_codeobj__74;
-static PyObject *__pyx_codeobj__76;
-static PyObject *__pyx_codeobj__78;
-static PyObject *__pyx_codeobj__80;
-static PyObject *__pyx_codeobj__82;
-static PyObject *__pyx_codeobj__84;
-static PyObject *__pyx_codeobj__86;
-static PyObject *__pyx_codeobj__88;
-static PyObject *__pyx_codeobj__90;
-static PyObject *__pyx_codeobj__92;
-static PyObject *__pyx_codeobj__94;
-static PyObject *__pyx_codeobj__96;
-static PyObject *__pyx_codeobj__98;
-static PyObject *__pyx_codeobj__100;
-static PyObject *__pyx_codeobj__102;
-static PyObject *__pyx_codeobj__104;
-static PyObject *__pyx_codeobj__106;
-static PyObject *__pyx_codeobj__108;
-static PyObject *__pyx_codeobj__110;
-static PyObject *__pyx_codeobj__117;
+static PyObject *__pyx_codeobj__24;
+static PyObject *__pyx_codeobj__26;
+static PyObject *__pyx_codeobj__28;
+static PyObject *__pyx_codeobj__30;
+static PyObject *__pyx_codeobj__32;
+static PyObject *__pyx_codeobj__34;
+static PyObject *__pyx_codeobj__36;
+static PyObject *__pyx_codeobj__38;
+static PyObject *__pyx_codeobj__40;
+static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__48;
+static PyObject *__pyx_codeobj__50;
+static PyObject *__pyx_codeobj__52;
+static PyObject *__pyx_codeobj__54;
+static PyObject *__pyx_codeobj__56;
+static PyObject *__pyx_codeobj__58;
+static PyObject *__pyx_codeobj__60;
+static PyObject *__pyx_codeobj__67;
/* Late includes */
/* "silx/math/fit/functions.pyx":67
@@ -2216,16 +2246,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
+ Py_ssize_t __pyx_t_6;
+ PyObject *(*__pyx_t_7)(PyObject *);
+ PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("erf", 0);
__Pyx_INCREF(__pyx_v_x);
@@ -2247,7 +2277,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
*
* for len_dim in x.shape:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 83, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -2262,38 +2292,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_x);
- __Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_x);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_x, __pyx_t_3);
__pyx_t_3 = 0;
@@ -2317,35 +2319,35 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
+ __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
- if (likely(!__pyx_t_8)) {
+ if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 85, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
} else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 85, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
}
} else {
- __pyx_t_3 = __pyx_t_8(__pyx_t_5);
+ __pyx_t_3 = __pyx_t_7(__pyx_t_5);
if (unlikely(!__pyx_t_3)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -2411,43 +2413,55 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
* y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_x);
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 89, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 89, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_x_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_v_x_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/functions.pyx":90
*
@@ -2456,41 +2470,41 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
*
* status = functions_wrapper.erf_array(&x_c[0], x_c.size, &y_c[0])
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
__pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 90, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_10) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 90, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 90, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_y_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_v_y_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/functions.pyx":92
* y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
@@ -2499,34 +2513,34 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_x_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_x_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 92, __pyx_L1_error)
}
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 92, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 92, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 92, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 92, __pyx_L1_error)
}
- __pyx_v_status = erf_array((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = erf_array((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":94
* status = functions_wrapper.erf_array(&x_c[0], x_c.size, &y_c[0])
@@ -2536,112 +2550,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":67
@@ -2657,10 +2611,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_erf(CYTHON_UNUSED PyObject
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.functions.erf", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -2708,16 +2662,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- Py_ssize_t __pyx_t_7;
- PyObject *(*__pyx_t_8)(PyObject *);
+ Py_ssize_t __pyx_t_6;
+ PyObject *(*__pyx_t_7)(PyObject *);
+ PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
- __Pyx_memviewslice __pyx_t_10 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_10 = NULL;
+ __Pyx_memviewslice __pyx_t_11 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("erfc", 0);
__Pyx_INCREF(__pyx_v_x);
@@ -2739,7 +2693,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
*
* for len_dim in x.shape:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -2754,38 +2708,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_x);
- __Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_x);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_x, __pyx_t_3);
__pyx_t_3 = 0;
@@ -2809,35 +2735,35 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
- __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
- __pyx_t_8 = NULL;
+ __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
+ __pyx_t_7 = NULL;
} else {
- __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
for (;;) {
- if (likely(!__pyx_t_8)) {
+ if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
- if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
} else {
- if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
}
} else {
- __pyx_t_3 = __pyx_t_8(__pyx_t_5);
+ __pyx_t_3 = __pyx_t_7(__pyx_t_5);
if (unlikely(!__pyx_t_3)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
@@ -2871,7 +2797,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
*
* x_c = numpy.array(x, copy=False, dtype=numpy.float64, order='C').reshape(-1)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 117, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -2903,43 +2829,55 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
* y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_x);
- __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
+ __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
+ __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
+ if (likely(__pyx_t_10)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+ __Pyx_INCREF(__pyx_t_10);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_8, function);
+ }
+ }
+ __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 119, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_v_x_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_v_x_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/functions.pyx":120
*
@@ -2948,41 +2886,41 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
*
* status = functions_wrapper.erfc_array(&x_c[0], x_c.size, &y_c[0])
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
__pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_shape, __pyx_t_10) < 0) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 120, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 120, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_y_c = __pyx_t_10;
- __pyx_t_10.memview = NULL;
- __pyx_t_10.data = NULL;
+ __pyx_v_y_c = __pyx_t_11;
+ __pyx_t_11.memview = NULL;
+ __pyx_t_11.data = NULL;
/* "silx/math/fit/functions.pyx":122
* y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
@@ -2991,34 +2929,34 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_x_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_x_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 122, __pyx_L1_error)
}
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 122, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 122, __pyx_L1_error)
}
- __pyx_v_status = erfc_array((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = erfc_array((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":124
* status = functions_wrapper.erfc_array(&x_c[0], x_c.size, &y_c[0])
@@ -3028,112 +2966,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_asarray); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_6};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_3};
- __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_t_10, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_9;
- __pyx_t_9 = 0;
+ __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+ __pyx_r = __pyx_t_5;
+ __pyx_t_5 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":97
@@ -3149,10 +3027,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
- __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_10);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("silx.math.fit.functions.erfc", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3176,7 +3054,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_2erfc(CYTHON_UNUSED PyObje
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_5sum_gauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_4sum_gauss[] = "sum_gauss(x, *params)\nReturn a sum of gaussian functions defined by *(height, centroid, fwhm)*,\n where:\n\n - *height* is the peak amplitude\n - *centroid* is the peak x-coordinate\n - *fwhm* is the full-width at half maximum\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of gaussian parameters (length must be a multiple\n of 3):\n *(height1, centroid1, fwhm1, height2, centroid2, fwhm2,...)*\n :return: Array of sum of gaussian functions at each ``x`` coordinate.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_5sum_gauss = {"sum_gauss", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_5sum_gauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_4sum_gauss};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_5sum_gauss = {"sum_gauss", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_5sum_gauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_4sum_gauss};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_5sum_gauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -3253,14 +3131,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_gauss", 0);
/* "silx/math/fit/functions.pyx":147
@@ -3306,16 +3184,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":153
* # ensure float64 (double) type and 1D contiguous data layout in memory
@@ -3324,9 +3202,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 153, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":154
* x_c = numpy.array(x,
@@ -3335,14 +3213,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 154, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 154, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 154, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 153, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":152
*
@@ -3351,11 +3229,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":155
* copy=False,
@@ -3364,17 +3242,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":156
* dtype=numpy.float64,
@@ -3383,16 +3273,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":157
* order='C').reshape(-1)
@@ -3401,9 +3291,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":158
* params_c = numpy.array(params,
@@ -3412,14 +3302,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":156
* dtype=numpy.float64,
@@ -3428,11 +3318,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 156, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 156, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":159
* copy=False,
@@ -3441,17 +3331,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 159, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 159, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":160
* dtype=numpy.float64,
@@ -3460,22 +3362,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 160, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":161
* order='C').reshape(-1)
@@ -3484,12 +3386,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
*
* status = functions_wrapper.sum_gauss(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 161, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":160
@@ -3499,15 +3401,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":164
*
@@ -3516,19 +3418,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 164, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 164, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":165
@@ -3538,23 +3440,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 165, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 165, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 165, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":166
* &x_c[0], x.size,
@@ -3563,14 +3465,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 166, __pyx_L1_error)
}
@@ -3581,7 +3483,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_gauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_gauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":168
* &y_c[0])
@@ -3600,10 +3502,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
*
* # reshape y_c to match original, possibly unusual, data shape
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 169, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 169, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":168
@@ -3623,112 +3525,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 172, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":127
@@ -3746,8 +3588,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_gauss", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3770,7 +3612,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_4sum_gauss(CYTHON_UNUSED P
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_7sum_agauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_6sum_agauss[] = "sum_agauss(x, *params)\nReturn a sum of gaussian functions defined by *(area, centroid, fwhm)*,\n where:\n\n - *area* is the area underneath the peak\n - *centroid* is the peak x-coordinate\n - *fwhm* is the full-width at half maximum\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of gaussian parameters (length must be a multiple\n of 3):\n *(area1, centroid1, fwhm1, area2, centroid2, fwhm2,...)*\n :return: Array of sum of gaussian functions at each ``x`` coordinate.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_7sum_agauss = {"sum_agauss", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_7sum_agauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_6sum_agauss};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_7sum_agauss = {"sum_agauss", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_7sum_agauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_6sum_agauss};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_7sum_agauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -3847,14 +3689,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_agauss", 0);
/* "silx/math/fit/functions.pyx":195
@@ -3900,16 +3742,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":200
*
@@ -3918,9 +3760,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 200, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 200, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":201
* x_c = numpy.array(x,
@@ -3929,14 +3771,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 201, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 201, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 200, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":199
* "At least 3 parameters are required.")
@@ -3945,11 +3787,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 199, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":202
* copy=False,
@@ -3958,17 +3800,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 202, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 202, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 202, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":203
* dtype=numpy.float64,
@@ -3977,16 +3831,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":204
* order='C').reshape(-1)
@@ -3995,9 +3849,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":205
* params_c = numpy.array(params,
@@ -4006,14 +3860,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 205, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 205, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":203
* dtype=numpy.float64,
@@ -4022,11 +3876,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 203, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 203, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":206
* copy=False,
@@ -4035,17 +3889,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":207
* dtype=numpy.float64,
@@ -4054,22 +3920,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 207, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":208
* order='C').reshape(-1)
@@ -4078,12 +3944,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
*
* status = functions_wrapper.sum_agauss(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":207
@@ -4093,15 +3959,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 207, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 207, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":211
*
@@ -4110,19 +3976,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 211, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":212
@@ -4132,23 +3998,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 212, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 212, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 212, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 212, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 212, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":213
* &x_c[0], x.size,
@@ -4157,14 +4023,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 213, __pyx_L1_error)
}
@@ -4175,7 +4041,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_agauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_agauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":215
* &y_c[0])
@@ -4194,10 +4060,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 216, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":215
@@ -4217,112 +4083,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 218, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":175
@@ -4340,8 +4146,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_agauss", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4364,7 +4170,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_6sum_agauss(CYTHON_UNUSED
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_9sum_fastagauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_8sum_fastagauss[] = "sum_fastagauss(x, *params)\nReturn a sum of gaussian functions defined by *(area, centroid, fwhm)*,\n where:\n\n - *area* is the area underneath the peak\n - *centroid* is the peak x-coordinate\n - *fwhm* is the full-width at half maximum\n\n This implementation differs from :func:`sum_agauss` by the usage of a\n lookup table with precalculated exponential values. This might speed up\n the computation for large numbers of individual gaussian functions.\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of gaussian parameters (length must be a multiple\n of 3):\n *(area1, centroid1, fwhm1, area2, centroid2, fwhm2,...)*\n :return: Array of sum of gaussian functions at each ``x`` coordinate.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_9sum_fastagauss = {"sum_fastagauss", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_9sum_fastagauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_8sum_fastagauss};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_9sum_fastagauss = {"sum_fastagauss", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_9sum_fastagauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_8sum_fastagauss};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_9sum_fastagauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -4441,14 +4247,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_fastagauss", 0);
/* "silx/math/fit/functions.pyx":245
@@ -4494,16 +4300,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 249, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":250
*
@@ -4512,9 +4318,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":251
* x_c = numpy.array(x,
@@ -4523,14 +4329,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 251, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 251, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 251, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 251, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 250, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":249
* "At least 3 parameters are required.")
@@ -4539,11 +4345,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 249, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 249, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":252
* copy=False,
@@ -4552,17 +4358,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 252, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 252, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 252, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 252, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":253
* dtype=numpy.float64,
@@ -4571,16 +4389,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":254
* order='C').reshape(-1)
@@ -4589,9 +4407,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":255
* params_c = numpy.array(params,
@@ -4600,14 +4418,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 255, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 254, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":253
* dtype=numpy.float64,
@@ -4616,11 +4434,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 253, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 253, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":256
* copy=False,
@@ -4629,17 +4447,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":257
* dtype=numpy.float64,
@@ -4648,22 +4478,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 257, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":258
* order='C').reshape(-1)
@@ -4672,12 +4502,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
*
* status = functions_wrapper.sum_fastagauss(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 258, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 258, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 257, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":257
@@ -4687,15 +4517,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 257, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 257, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":261
*
@@ -4704,19 +4534,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 261, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":262
@@ -4726,23 +4556,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 262, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 262, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 262, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":263
* &x_c[0], x.size,
@@ -4751,14 +4581,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 263, __pyx_L1_error)
}
@@ -4769,7 +4599,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_fastagauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_fastagauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":265
* &y_c[0])
@@ -4788,10 +4618,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 266, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":265
@@ -4811,112 +4641,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 268, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 268, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":221
@@ -4934,8 +4704,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_fastagauss", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4958,7 +4728,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_8sum_fastagauss(CYTHON_UNU
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_11sum_splitgauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_10sum_splitgauss[] = "sum_splitgauss(x, *params)\nReturn a sum of gaussian functions defined by *(area, centroid, fwhm1, fwhm2)*,\n where:\n\n - *height* is the peak amplitude\n - *centroid* is the peak x-coordinate\n - *fwhm1* is the full-width at half maximum for the distribution\n when ``x < centroid``\n - *fwhm2* is the full-width at half maximum for the distribution\n when ``x > centroid``\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of gaussian parameters (length must be a multiple\n of 4):\n *(height1, centroid1, fwhm11, fwhm21, height2, centroid2, fwhm12, fwhm22,...)*\n :return: Array of sum of split gaussian functions at each ``x`` coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_11sum_splitgauss = {"sum_splitgauss", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_11sum_splitgauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_10sum_splitgauss};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_11sum_splitgauss = {"sum_splitgauss", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_11sum_splitgauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_10sum_splitgauss};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_11sum_splitgauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -5035,14 +4805,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_splitgauss", 0);
/* "silx/math/fit/functions.pyx":294
@@ -5088,16 +4858,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 298, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":299
*
@@ -5106,9 +4876,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 299, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":300
* x_c = numpy.array(x,
@@ -5117,14 +4887,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 300, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 300, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 299, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":298
* "At least 4 parameters are required.")
@@ -5133,11 +4903,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 298, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 298, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":301
* copy=False,
@@ -5146,17 +4916,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 301, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 301, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 301, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 301, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 301, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":302
* dtype=numpy.float64,
@@ -5165,16 +4947,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 302, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 302, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 302, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":303
* order='C').reshape(-1)
@@ -5183,9 +4965,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 303, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 303, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":304
* params_c = numpy.array(params,
@@ -5194,14 +4976,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 304, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 304, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 303, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":302
* dtype=numpy.float64,
@@ -5210,11 +4992,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 302, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 302, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":305
* copy=False,
@@ -5223,17 +5005,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 305, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 305, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 305, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 305, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 305, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 305, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":306
* dtype=numpy.float64,
@@ -5242,22 +5036,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 306, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 306, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 306, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 306, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":307
* order='C').reshape(-1)
@@ -5266,12 +5060,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
*
* status = functions_wrapper.sum_splitgauss(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 307, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 307, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 306, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":306
@@ -5281,15 +5075,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 306, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 306, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":310
*
@@ -5298,19 +5092,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 310, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 310, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 310, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 310, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":311
@@ -5320,23 +5114,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 311, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 311, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 311, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 311, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":312
* &x_c[0], x.size,
@@ -5345,14 +5139,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 312, __pyx_L1_error)
}
@@ -5363,7 +5157,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_splitgauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_splitgauss((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":314
* &y_c[0])
@@ -5382,10 +5176,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 315, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 315, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":314
@@ -5405,112 +5199,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":271
@@ -5528,8 +5262,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_splitgauss", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -5552,7 +5286,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_10sum_splitgauss(CYTHON_UN
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_13sum_apvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_12sum_apvoigt[] = "sum_apvoigt(x, *params)\nReturn a sum of pseudo-Voigt functions, defined by *(area, centroid, fwhm,\n eta)*.\n\n The pseudo-Voigt profile ``PV(x)`` is an approximation of the Voigt\n profile using a linear combination of a Gaussian curve ``G(x)`` and a\n Lorentzian curve ``L(x)`` instead of their convolution.\n\n - *area* is the area underneath both G(x) and L(x)\n - *centroid* is the peak x-coordinate for both functions\n - *fwhm* is the full-width at half maximum of both functions\n - *eta* is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of pseudo-Voigt parameters (length must be a multiple\n of 4):\n *(area1, centroid1, fwhm1, eta1, area2, centroid2, fwhm2, eta2,...)*\n :return: Array of sum of pseudo-Voigt functions at each ``x`` coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_13sum_apvoigt = {"sum_apvoigt", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_13sum_apvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_12sum_apvoigt};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_13sum_apvoigt = {"sum_apvoigt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_13sum_apvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_12sum_apvoigt};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_13sum_apvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -5629,14 +5363,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_apvoigt", 0);
/* "silx/math/fit/functions.pyx":345
@@ -5682,16 +5416,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 348, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":349
* "At least 4 parameters are required.")
@@ -5700,9 +5434,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 349, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":350
* x_c = numpy.array(x,
@@ -5711,14 +5445,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 350, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 350, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 350, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 350, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":348
* raise IndexError("No parameters specified. " +
@@ -5727,11 +5461,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 348, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":351
* copy=False,
@@ -5740,17 +5474,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 351, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 351, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":352
* dtype=numpy.float64,
@@ -5759,16 +5505,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 352, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":353
* order='C').reshape(-1)
@@ -5777,9 +5523,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":354
* params_c = numpy.array(params,
@@ -5788,14 +5534,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 354, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 354, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":352
* dtype=numpy.float64,
@@ -5804,11 +5550,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":355
* copy=False,
@@ -5817,17 +5563,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 355, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":356
* dtype=numpy.float64,
@@ -5836,22 +5594,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 356, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":357
* order='C').reshape(-1)
@@ -5860,12 +5618,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
*
* status = functions_wrapper.sum_apvoigt(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 356, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":356
@@ -5875,15 +5633,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 356, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 356, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":360
*
@@ -5892,19 +5650,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 360, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 360, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 360, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":361
@@ -5914,23 +5672,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 361, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 361, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 361, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":362
* &x_c[0], x.size,
@@ -5939,14 +5697,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 362, __pyx_L1_error)
}
@@ -5957,7 +5715,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_apvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_apvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":364
* &y_c[0])
@@ -5976,10 +5734,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 365, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":364
@@ -5999,112 +5757,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":320
@@ -6122,8 +5820,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_apvoigt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -6146,7 +5844,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_12sum_apvoigt(CYTHON_UNUSE
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_15sum_pvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_14sum_pvoigt[] = "sum_pvoigt(x, *params)\nReturn a sum of pseudo-Voigt functions, defined by *(height, centroid,\n fwhm, eta)*.\n\n The pseudo-Voigt profile ``PV(x)`` is an approximation of the Voigt\n profile using a linear combination of a Gaussian curve ``G(x)`` and a\n Lorentzian curve ``L(x)`` instead of their convolution.\n\n - *height* is the peak amplitude of G(x) and L(x)\n - *centroid* is the peak x-coordinate for both functions\n - *fwhm* is the full-width at half maximum of both functions\n - *eta* is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of pseudo-Voigt parameters (length must be a multiple\n of 4):\n *(height1, centroid1, fwhm1, eta1, height2, centroid2, fwhm2, eta2,...)*\n :return: Array of sum of pseudo-Voigt functions at each ``x`` coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_15sum_pvoigt = {"sum_pvoigt", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_15sum_pvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_14sum_pvoigt};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_15sum_pvoigt = {"sum_pvoigt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_15sum_pvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_14sum_pvoigt};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_15sum_pvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -6223,14 +5921,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_pvoigt", 0);
/* "silx/math/fit/functions.pyx":395
@@ -6276,16 +5974,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":400
*
@@ -6294,9 +5992,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 400, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 400, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":401
* x_c = numpy.array(x,
@@ -6305,14 +6003,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 401, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 401, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":399
* "At least 4 parameters are required.")
@@ -6321,11 +6019,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 399, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 399, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":402
* copy=False,
@@ -6334,17 +6032,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 402, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":403
* dtype=numpy.float64,
@@ -6353,16 +6063,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 403, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 403, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 403, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":404
* order='C').reshape(-1)
@@ -6371,9 +6081,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":405
* params_c = numpy.array(params,
@@ -6382,14 +6092,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 405, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 405, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":403
* dtype=numpy.float64,
@@ -6398,11 +6108,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 403, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 403, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":406
* copy=False,
@@ -6411,17 +6121,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 406, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 406, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 406, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":407
* dtype=numpy.float64,
@@ -6430,22 +6152,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":408
* order='C').reshape(-1)
@@ -6454,12 +6176,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
*
* status = functions_wrapper.sum_pvoigt(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 408, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 408, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":407
@@ -6469,15 +6191,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 407, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 407, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":411
*
@@ -6486,19 +6208,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 411, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":412
@@ -6508,23 +6230,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 412, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 412, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":413
* &x_c[0], x.size,
@@ -6533,14 +6255,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 413, __pyx_L1_error)
}
@@ -6551,7 +6273,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_pvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_pvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":415
* &y_c[0])
@@ -6570,10 +6292,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 416, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 416, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 416, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":415
@@ -6593,112 +6315,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 418, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 418, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":370
@@ -6716,8 +6378,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_pvoigt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -6740,7 +6402,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_14sum_pvoigt(CYTHON_UNUSED
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_17sum_splitpvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_16sum_splitpvoigt[] = "sum_splitpvoigt(x, *params)\nReturn a sum of split pseudo-Voigt functions, defined by *(height,\n centroid, fwhm1, fwhm2, eta)*.\n\n The pseudo-Voigt profile ``PV(x)`` is an approximation of the Voigt\n profile using a linear combination of a Gaussian curve ``G(x)`` and a\n Lorentzian curve ``L(x)`` instead of their convolution.\n\n - *height* is the peak amplitudefor G(x) and L(x)\n - *centroid* is the peak x-coordinate for both functions\n - *fwhm1* is the full-width at half maximum of both functions\n when ``x < centroid``\n - *fwhm2* is the full-width at half maximum of both functions\n when ``x > centroid``\n - *eta* is the Lorentz factor: PV(x) = eta * L(x) + (1 - eta) * G(x)\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of pseudo-Voigt parameters (length must be a multiple\n of 5):\n *(height1, centroid1, fwhm11, fwhm21, eta1,...)*\n :return: Array of sum of split pseudo-Voigt functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_17sum_splitpvoigt = {"sum_splitpvoigt", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_17sum_splitpvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_16sum_splitpvoigt};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_17sum_splitpvoigt = {"sum_splitpvoigt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_17sum_splitpvoigt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_16sum_splitpvoigt};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_17sum_splitpvoigt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -6817,14 +6479,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_splitpvoigt", 0);
/* "silx/math/fit/functions.pyx":450
@@ -6870,16 +6532,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 454, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":455
*
@@ -6888,9 +6550,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 455, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 455, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":456
* x_c = numpy.array(x,
@@ -6899,14 +6561,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 456, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 456, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 456, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 455, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":454
* "At least 5 parameters are required.")
@@ -6915,11 +6577,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 454, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 454, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":457
* copy=False,
@@ -6928,17 +6590,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 457, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 457, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 457, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":458
* dtype=numpy.float64,
@@ -6947,16 +6621,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 458, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 458, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 458, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":459
* order='C').reshape(-1)
@@ -6965,9 +6639,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 459, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":460
* params_c = numpy.array(params,
@@ -6976,14 +6650,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 460, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 460, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 460, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 459, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":458
* dtype=numpy.float64,
@@ -6992,11 +6666,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 458, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 458, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":461
* copy=False,
@@ -7005,17 +6679,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 461, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 461, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 461, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":462
* dtype=numpy.float64,
@@ -7024,22 +6710,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 462, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 462, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":463
* order='C').reshape(-1)
@@ -7048,12 +6734,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
*
* status = functions_wrapper.sum_splitpvoigt(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 463, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 463, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 463, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 463, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":462
@@ -7063,15 +6749,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 462, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 462, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 462, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":466
*
@@ -7080,19 +6766,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 466, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 466, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":467
@@ -7102,23 +6788,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 467, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":468
* &x_c[0], x.size,
@@ -7127,14 +6813,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 468, __pyx_L1_error)
}
@@ -7145,7 +6831,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_splitpvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_splitpvoigt((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":470
* &y_c[0])
@@ -7164,10 +6850,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 471, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 471, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":470
@@ -7187,112 +6873,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 473, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 473, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 473, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":421
@@ -7310,8 +6936,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_splitpvoigt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -7334,7 +6960,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_16sum_splitpvoigt(CYTHON_U
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_19sum_lorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_18sum_lorentz[] = "sum_lorentz(x, *params)\nReturn a sum of Lorentz distributions, also known as Cauchy distribution,\n defined by *(height, centroid, fwhm)*.\n\n - *height* is the peak amplitude\n - *centroid* is the peak x-coordinate\n - *fwhm* is the full-width at half maximum\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of Lorentz parameters (length must be a multiple\n of 3):\n *(height1, centroid1, fwhm1,...)*\n :return: Array of sum Lorentz functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_19sum_lorentz = {"sum_lorentz", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_19sum_lorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_18sum_lorentz};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_19sum_lorentz = {"sum_lorentz", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_19sum_lorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_18sum_lorentz};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_19sum_lorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -7411,14 +7037,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_lorentz", 0);
/* "silx/math/fit/functions.pyx":497
@@ -7464,16 +7090,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 501, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":502
*
@@ -7482,9 +7108,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 502, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 502, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":503
* x_c = numpy.array(x,
@@ -7493,14 +7119,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 503, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 503, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 503, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 503, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 502, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":501
* "At least 3 parameters are required.")
@@ -7509,11 +7135,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 501, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 501, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":504
* copy=False,
@@ -7522,17 +7148,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 504, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 504, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 504, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":505
* dtype=numpy.float64,
@@ -7541,16 +7179,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":506
* order='C').reshape(-1)
@@ -7559,9 +7197,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":507
* params_c = numpy.array(params,
@@ -7570,14 +7208,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 507, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 507, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 506, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":505
* dtype=numpy.float64,
@@ -7586,11 +7224,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 505, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":508
* copy=False,
@@ -7599,17 +7237,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 508, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 508, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 508, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":509
* dtype=numpy.float64,
@@ -7618,22 +7268,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 509, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 509, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":510
* order='C').reshape(-1)
@@ -7642,12 +7292,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
*
* status = functions_wrapper.sum_lorentz(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 510, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 510, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 510, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 510, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 509, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":509
@@ -7657,15 +7307,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 509, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 509, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":513
*
@@ -7674,19 +7324,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 513, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":514
@@ -7696,23 +7346,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 514, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 514, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 514, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 514, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":515
* &x_c[0], x.size,
@@ -7721,14 +7371,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 515, __pyx_L1_error)
}
@@ -7739,7 +7389,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_lorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_lorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":517
* &y_c[0])
@@ -7758,10 +7408,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 518, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 518, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":517
@@ -7781,112 +7431,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":476
@@ -7904,8 +7494,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_lorentz", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -7928,7 +7518,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_18sum_lorentz(CYTHON_UNUSE
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_21sum_alorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_20sum_alorentz[] = "sum_alorentz(x, *params)\nReturn a sum of Lorentz distributions, also known as Cauchy distribution,\n defined by *(area, centroid, fwhm)*.\n\n - *area* is the area underneath the peak\n - *centroid* is the peak x-coordinate for both functions\n - *fwhm* is the full-width at half maximum\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of Lorentz parameters (length must be a multiple\n of 3):\n *(area1, centroid1, fwhm1,...)*\n :return: Array of sum of Lorentz functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_21sum_alorentz = {"sum_alorentz", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_21sum_alorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_20sum_alorentz};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_21sum_alorentz = {"sum_alorentz", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_21sum_alorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_20sum_alorentz};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_21sum_alorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -8005,14 +7595,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_alorentz", 0);
/* "silx/math/fit/functions.pyx":544
@@ -8058,16 +7648,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 548, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 548, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":549
*
@@ -8076,9 +7666,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 549, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":550
* x_c = numpy.array(x,
@@ -8087,14 +7677,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 550, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 550, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 549, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":548
* "At least 3 parameters are required.")
@@ -8103,11 +7693,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 548, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 548, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":551
* copy=False,
@@ -8116,17 +7706,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 551, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 551, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 551, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 551, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 551, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 551, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":552
* dtype=numpy.float64,
@@ -8135,16 +7737,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 552, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":553
* order='C').reshape(-1)
@@ -8153,9 +7755,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":554
* params_c = numpy.array(params,
@@ -8164,14 +7766,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 554, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 554, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":552
* dtype=numpy.float64,
@@ -8180,11 +7782,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 552, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":555
* copy=False,
@@ -8193,17 +7795,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 555, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 555, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 555, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 555, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 555, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 555, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":556
* dtype=numpy.float64,
@@ -8212,22 +7826,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":557
* order='C').reshape(-1)
@@ -8236,12 +7850,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
*
* status = functions_wrapper.sum_alorentz(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 557, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 557, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 557, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 557, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":556
@@ -8251,15 +7865,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 556, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":560
*
@@ -8268,19 +7882,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 560, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 560, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 560, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 560, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":561
@@ -8290,23 +7904,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 561, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 561, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 561, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 561, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 561, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 561, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":562
* &x_c[0], x.size,
@@ -8315,14 +7929,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 562, __pyx_L1_error)
}
@@ -8333,7 +7947,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_alorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_alorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":564
* &y_c[0])
@@ -8352,10 +7966,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 565, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":564
@@ -8375,112 +7989,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 567, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 567, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 567, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":523
@@ -8498,8 +8052,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_alorentz", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -8522,7 +8076,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_20sum_alorentz(CYTHON_UNUS
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_23sum_splitlorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_22sum_splitlorentz[] = "sum_splitlorentz(x, *params)\nReturn a sum of split Lorentz distributions,\n defined by *(height, centroid, fwhm1, fwhm2)*.\n\n - *height* is the peak amplitude\n - *centroid* is the peak x-coordinate for both functions\n - *fwhm1* is the full-width at half maximum for ``x < centroid``\n - *fwhm2* is the full-width at half maximum for ``x > centroid``\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of Lorentz parameters (length must be a multiple\n of 4):\n *(height1, centroid1, fwhm11, fwhm21...)*\n :return: Array of sum of Lorentz functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_23sum_splitlorentz = {"sum_splitlorentz", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_23sum_splitlorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_22sum_splitlorentz};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_23sum_splitlorentz = {"sum_splitlorentz", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_23sum_splitlorentz, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_22sum_splitlorentz};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_23sum_splitlorentz(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -8599,14 +8153,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_splitlorentz", 0);
/* "silx/math/fit/functions.pyx":592
@@ -8652,16 +8206,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 596, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 596, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 596, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 596, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 596, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 596, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":597
*
@@ -8670,9 +8224,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":598
* x_c = numpy.array(x,
@@ -8681,14 +8235,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 598, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 598, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 598, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 598, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 597, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":596
* "At least 4 parameters are required.")
@@ -8697,11 +8251,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 596, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 596, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":599
* copy=False,
@@ -8710,17 +8264,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 599, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 599, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 599, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 599, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 599, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 599, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":600
* dtype=numpy.float64,
@@ -8729,16 +8295,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 600, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 600, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 600, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":601
* order='C').reshape(-1)
@@ -8747,9 +8313,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 601, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":602
* params_c = numpy.array(params,
@@ -8758,14 +8324,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 602, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 602, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 601, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":600
* dtype=numpy.float64,
@@ -8774,11 +8340,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 600, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":603
* copy=False,
@@ -8787,17 +8353,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 603, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 603, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":604
* dtype=numpy.float64,
@@ -8806,22 +8384,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 604, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 604, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":605
* order='C').reshape(-1)
@@ -8830,12 +8408,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
*
* status = functions_wrapper.sum_splitlorentz(
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 605, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 605, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 605, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 604, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 604, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":604
@@ -8845,15 +8423,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 604, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 604, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 604, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":608
*
@@ -8862,19 +8440,19 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* &params_c[0], params_c.size,
* &y_c[0])
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 608, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 608, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 608, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 608, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":609
@@ -8884,23 +8462,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* &y_c[0])
*
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 609, __pyx_L1_error)
}
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 609, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 609, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 609, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":610
* &x_c[0], x.size,
@@ -8909,14 +8487,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 610, __pyx_L1_error)
}
@@ -8927,7 +8505,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
* &x_c[0], x.size,
* &params_c[0], params_c.size,
*/
- __pyx_v_status = sum_splitlorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_splitlorentz((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":612
* &y_c[0])
@@ -8946,10 +8524,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 613, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 613, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":612
@@ -8969,112 +8547,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 615, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 615, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":570
@@ -9092,8 +8610,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_splitlorentz", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -9116,7 +8634,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_22sum_splitlorentz(CYTHON_
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_25sum_stepdown(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_24sum_stepdown[] = "sum_stepdown(x, *params)\nReturn a sum of stepdown functions.\n defined by *(height, centroid, fwhm)*.\n\n - *height* is the step's amplitude\n - *centroid* is the step's x-coordinate\n - *fwhm* is the full-width at half maximum for the derivative,\n which is a measure of the *sharpness* of the step-down's edge\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of stepdown parameters (length must be a multiple\n of 3):\n *(height1, centroid1, fwhm1,...)*\n :return: Array of sum of stepdown functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_25sum_stepdown = {"sum_stepdown", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_25sum_stepdown, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_24sum_stepdown};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_25sum_stepdown = {"sum_stepdown", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_25sum_stepdown, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_24sum_stepdown};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_25sum_stepdown(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -9193,14 +8711,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_stepdown", 0);
/* "silx/math/fit/functions.pyx":640
@@ -9246,16 +8764,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 643, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 643, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 643, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 643, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 643, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":644
* "At least 3 parameters are required.")
@@ -9264,9 +8782,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 644, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 644, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":645
* x_c = numpy.array(x,
@@ -9275,14 +8793,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 645, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 645, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 645, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 645, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 644, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":643
* raise IndexError("No parameters specified. " +
@@ -9291,11 +8809,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 643, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 643, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":646
* copy=False,
@@ -9304,17 +8822,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 646, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":647
* dtype=numpy.float64,
@@ -9323,16 +8853,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":648
* order='C').reshape(-1)
@@ -9341,9 +8871,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 648, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 648, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":649
* params_c = numpy.array(params,
@@ -9352,14 +8882,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 649, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 649, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 649, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 649, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 648, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":647
* dtype=numpy.float64,
@@ -9368,11 +8898,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 647, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":650
* copy=False,
@@ -9381,17 +8911,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 650, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 650, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 650, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 650, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":651
* dtype=numpy.float64,
@@ -9400,22 +8942,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 651, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 651, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":652
* order='C').reshape(-1)
@@ -9424,12 +8966,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*
* status = functions_wrapper.sum_stepdown(&x_c[0],
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 652, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 652, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 652, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 652, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":651
@@ -9439,15 +8981,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 651, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 651, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":654
* dtype=numpy.float64)
@@ -9456,14 +8998,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* x.size,
* &params_c[0],
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 654, __pyx_L1_error)
}
@@ -9476,7 +9018,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*/
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 655, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":656
@@ -9486,14 +9028,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* params_c.size,
* &y_c[0])
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 656, __pyx_L1_error)
}
@@ -9506,11 +9048,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*/
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 657, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 657, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 657, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":658
* &params_c[0],
@@ -9519,14 +9061,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 658, __pyx_L1_error)
}
@@ -9537,7 +9079,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
* x.size,
* &params_c[0],
*/
- __pyx_v_status = sum_stepdown((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_stepdown((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":660
* &y_c[0])
@@ -9556,10 +9098,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 661, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":660
@@ -9579,112 +9121,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 663, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 663, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":618
@@ -9702,8 +9184,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_stepdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -9726,7 +9208,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_24sum_stepdown(CYTHON_UNUS
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_27sum_stepup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_26sum_stepup[] = "sum_stepup(x, *params)\nReturn a sum of stepup functions.\n defined by *(height, centroid, fwhm)*.\n\n - *height* is the step's amplitude\n - *centroid* is the step's x-coordinate\n - *fwhm* is the full-width at half maximum for the derivative,\n which is a measure of the *sharpness* of the step-up's edge\n\n :param x: Independent variable where the gaussians are calculated\n :type x: numpy.ndarray\n :param params: Array of stepup parameters (length must be a multiple\n of 3):\n *(height1, centroid1, fwhm1,...)*\n :return: Array of sum of stepup functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_27sum_stepup = {"sum_stepup", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_27sum_stepup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_26sum_stepup};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_27sum_stepup = {"sum_stepup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_27sum_stepup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_26sum_stepup};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_27sum_stepup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -9803,14 +9285,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_stepup", 0);
/* "silx/math/fit/functions.pyx":688
@@ -9856,16 +9338,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":693
*
@@ -9874,9 +9356,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":694
* x_c = numpy.array(x,
@@ -9885,14 +9367,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 694, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 694, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 693, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":692
* "At least 3 parameters are required.")
@@ -9901,11 +9383,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 692, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 692, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":695
* copy=False,
@@ -9914,17 +9396,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 695, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":696
* dtype=numpy.float64,
@@ -9933,16 +9427,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 696, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 696, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 696, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":697
* order='C').reshape(-1)
@@ -9951,9 +9445,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":698
* params_c = numpy.array(params,
@@ -9962,14 +9456,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":696
* dtype=numpy.float64,
@@ -9978,11 +9472,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 696, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 696, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":699
* copy=False,
@@ -9991,17 +9485,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 699, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 699, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 699, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 699, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 699, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 699, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":700
* dtype=numpy.float64,
@@ -10010,22 +9516,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 700, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 700, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 700, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":701
* order='C').reshape(-1)
@@ -10034,12 +9540,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*
* status = functions_wrapper.sum_stepup(&x_c[0],
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 701, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 701, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 701, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 700, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 700, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":700
@@ -10049,15 +9555,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 700, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 700, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":703
* dtype=numpy.float64)
@@ -10066,14 +9572,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* x.size,
* &params_c[0],
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 703, __pyx_L1_error)
}
@@ -10086,7 +9592,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*/
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 704, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":705
@@ -10096,14 +9602,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* params_c.size,
* &y_c[0])
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 705, __pyx_L1_error)
}
@@ -10116,11 +9622,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*/
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 706, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 706, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 706, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 706, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 706, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":707
* &params_c[0],
@@ -10129,14 +9635,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 707, __pyx_L1_error)
}
@@ -10147,7 +9653,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
* x.size,
* &params_c[0],
*/
- __pyx_v_status = sum_stepup((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_stepup((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":709
* &y_c[0])
@@ -10166,10 +9672,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 710, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 710, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 710, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":709
@@ -10189,112 +9695,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 712, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":666
@@ -10312,8 +9758,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_stepup", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -10336,7 +9782,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_26sum_stepup(CYTHON_UNUSED
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_29sum_slit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_28sum_slit[] = "sum_slit(x, *params)\nReturn a sum of slit functions.\n defined by *(height, position, fwhm, beamfwhm)*.\n\n - *height* is the slit's amplitude\n - *position* is the center of the slit's x-coordinate\n - *fwhm* is the full-width at half maximum of the slit\n - *beamfwhm* is the full-width at half maximum of the\n derivative, which is a measure of the *sharpness*\n of the edges of the slit\n\n :param x: Independent variable where the slits are calculated\n :type x: numpy.ndarray\n :param params: Array of slit parameters (length must be a multiple\n of 4):\n *(height1, centroid1, fwhm1, beamfwhm1,...)*\n :return: Array of sum of slit functions at each ``x``\n coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_29sum_slit = {"sum_slit", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_29sum_slit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_28sum_slit};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_29sum_slit = {"sum_slit", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_29sum_slit, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_28sum_slit};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_29sum_slit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_params = 0;
@@ -10413,14 +9859,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_slit", 0);
/* "silx/math/fit/functions.pyx":739
@@ -10466,16 +9912,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 743, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 743, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":744
*
@@ -10484,9 +9930,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 744, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 744, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":745
* x_c = numpy.array(x,
@@ -10495,14 +9941,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 745, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 745, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 745, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 744, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":743
* "At least 4 parameters are required.")
@@ -10511,11 +9957,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 743, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 743, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":746
* copy=False,
@@ -10524,17 +9970,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 746, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 746, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 746, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 746, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 746, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 746, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":747
* dtype=numpy.float64,
@@ -10543,16 +10001,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 747, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 747, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 747, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":748
* order='C').reshape(-1)
@@ -10561,9 +10019,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 748, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":749
* params_c = numpy.array(params,
@@ -10572,14 +10030,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 749, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 749, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 749, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 748, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":747
* dtype=numpy.float64,
@@ -10588,11 +10046,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 747, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":750
* copy=False,
@@ -10601,17 +10059,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 750, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 750, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 750, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":751
* dtype=numpy.float64,
@@ -10620,22 +10090,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 751, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 751, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 751, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 751, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":752
* order='C').reshape(-1)
@@ -10644,12 +10114,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*
* status = functions_wrapper.sum_slit(&x_c[0],
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 752, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 752, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 752, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 752, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 751, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":751
@@ -10659,15 +10129,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 751, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 751, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":754
* dtype=numpy.float64)
@@ -10676,14 +10146,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* x.size,
* &params_c[0],
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 754, __pyx_L1_error)
}
@@ -10696,7 +10166,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*/
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 755, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 755, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 755, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":756
@@ -10706,14 +10176,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* params_c.size,
* &y_c[0])
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 756, __pyx_L1_error)
}
@@ -10726,11 +10196,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*/
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 757, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 757, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 757, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 757, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":758
* &params_c[0],
@@ -10739,14 +10209,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*
* if status:
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 758, __pyx_L1_error)
}
@@ -10757,7 +10227,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
* x.size,
* &params_c[0],
*/
- __pyx_v_status = sum_slit((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))));
+ __pyx_v_status = sum_slit((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))));
/* "silx/math/fit/functions.pyx":760
* &y_c[0])
@@ -10776,10 +10246,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 761, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 761, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":760
@@ -10799,112 +10269,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 763, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 763, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 763, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":715
@@ -10922,8 +10332,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_slit", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -10946,7 +10356,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_28sum_slit(CYTHON_UNUSED P
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_31sum_ahypermet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_30sum_ahypermet[] = "sum_ahypermet(x, *params, gaussian_term=True, st_term=True, lt_term=True, step_term=True)\nReturn a sum of ahypermet functions.\n defined by *(area, position, fwhm, st_area_r, st_slope_r, lt_area_r,\n lt_slope_r, step_height_r)*.\n\n - *area* is the area underneath the gaussian peak\n - *position* is the center of the various peaks and the position of\n the step down\n - *fwhm* is the full-width at half maximum of the terms\n - *st_area_r* is factor between the gaussian area and the area of the\n short tail term\n - *st_slope_r* is a ratio related to the slope of the short tail\n in the low ``x`` values (the lower, the steeper)\n - *lt_area_r* is ratio between the gaussian area and the area of the\n long tail term\n - *lt_slope_r* is a ratio related to the slope of the long tail\n in the low ``x`` values (the lower, the steeper)\n - *step_height_r* is the ratio between the height of the step down\n and the gaussian height\n\n A hypermet function is a sum of four functions (terms):\n\n - a gaussian term\n - a long tail term\n - a short tail term\n - a step down term\n\n :param x: Independent variable where the hypermets are calculated\n :type x: numpy.ndarray\n :param params: Array of hypermet parameters (length must be a multiple\n of 8):\n *(area1, position1, fwhm1, st_area_r1, st_slope_r1, lt_area_r1,\n lt_slope_r1, step_height_r1...)*\n :param gaussian_term: If ``True``, enable gaussian term. Default ``True``\n :param st_term: If ``True``, enable gaussian term. Default ``True``\n :param lt_term: If ``True``, enable gaussian term. Default ``True``\n :param step_term: If ``True``, enable gaussian term. Default ``True``\n :return: Array of sum of hypermet functions at each ``x`` coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_31sum_ahypermet = {"sum_ahypermet", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_31sum_ahypermet, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_30sum_ahypermet};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_31sum_ahypermet = {"sum_ahypermet", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_31sum_ahypermet, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_30sum_ahypermet};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_31sum_ahypermet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_gaussian_term = 0;
@@ -11059,14 +10469,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_ahypermet", 0);
/* "silx/math/fit/functions.pyx":811
@@ -11223,16 +10633,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 824, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 824, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 824, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 824, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":825
*
@@ -11241,9 +10651,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 825, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 825, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":826
* x_c = numpy.array(x,
@@ -11252,14 +10662,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 826, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 826, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 826, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 826, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":824
* tail_flags += 8
@@ -11268,11 +10678,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 824, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 824, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":827
* copy=False,
@@ -11281,17 +10691,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 827, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 827, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 827, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 827, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 827, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":828
* dtype=numpy.float64,
@@ -11300,16 +10722,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 828, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 828, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":829
* order='C').reshape(-1)
@@ -11318,9 +10740,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 829, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 829, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":830
* params_c = numpy.array(params,
@@ -11329,14 +10751,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 830, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 830, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 830, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 829, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":828
* dtype=numpy.float64,
@@ -11345,11 +10767,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 828, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":831
* copy=False,
@@ -11358,17 +10780,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 831, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 831, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 831, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 831, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":832
* dtype=numpy.float64,
@@ -11377,22 +10811,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 832, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":833
* order='C').reshape(-1)
@@ -11401,12 +10835,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*
* status = functions_wrapper.sum_ahypermet(&x_c[0],
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 833, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 833, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 833, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 833, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 832, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":832
@@ -11416,15 +10850,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 832, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 832, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":835
* dtype=numpy.float64)
@@ -11433,14 +10867,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* x.size,
* &params_c[0],
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 835, __pyx_L1_error)
}
@@ -11453,7 +10887,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*/
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 836, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 836, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 836, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":837
@@ -11463,14 +10897,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* params_c.size,
* &y_c[0],
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 837, __pyx_L1_error)
}
@@ -11483,11 +10917,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*/
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 838, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 838, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 838, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 838, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 838, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":839
* &params_c[0],
@@ -11496,14 +10930,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* tail_flags)
*
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 839, __pyx_L1_error)
}
@@ -11514,7 +10948,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*
* if status:
*/
- __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_tail_flags); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 840, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_tail_flags); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 840, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":835
* dtype=numpy.float64)
@@ -11523,7 +10957,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
* x.size,
* &params_c[0],
*/
- __pyx_v_status = sum_ahypermet((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))), __pyx_t_14);
+ __pyx_v_status = sum_ahypermet((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))), __pyx_t_15);
/* "silx/math/fit/functions.pyx":842
* tail_flags)
@@ -11542,10 +10976,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 843, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":842
@@ -11565,112 +10999,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 845, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 845, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":766
@@ -11688,8 +11062,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_ahypermet", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -11713,7 +11087,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_30sum_ahypermet(CYTHON_UNU
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_33sum_fastahypermet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_32sum_fastahypermet[] = "sum_fastahypermet(x, *params, gaussian_term=True, st_term=True, lt_term=True, step_term=True)\nReturn a sum of hypermet functions defined by *(area, position, fwhm,\n st_area_r, st_slope_r, lt_area_r, lt_slope_r, step_height_r)*.\n\n - *area* is the area underneath the gaussian peak\n - *position* is the center of the various peaks and the position of\n the step down\n - *fwhm* is the full-width at half maximum of the terms\n - *st_area_r* is factor between the gaussian area and the area of the\n short tail term\n - *st_slope_r* is a parameter related to the slope of the short tail\n in the low ``x`` values (the lower, the steeper)\n - *lt_area_r* is factor between the gaussian area and the area of the\n long tail term\n - *lt_slope_r* is a parameter related to the slope of the long tail\n in the low ``x`` values (the lower, the steeper)\n - *step_height_r* is the factor between the height of the step down\n and the gaussian height\n\n A hypermet function is a sum of four functions (terms):\n\n - a gaussian term\n - a long tail term\n - a short tail term\n - a step down term\n\n This function differs from :func:`sum_ahypermet` by the use of a lookup\n table for calculating exponentials. This offers better performance when\n calculating many functions for large ``x`` arrays.\n\n :param x: Independent variable where the hypermets are calculated\n :type x: numpy.ndarray\n :param params: Array of hypermet parameters (length must be a multiple\n of 8):\n *(area1, position1, fwhm1, st_area_r1, st_slope_r1, lt_area_r1,\n lt_slope_r1, step_height_r1...)*\n :param gaussian_term: If ``True``, enable gaussian term. Default ``True``\n :param st_term: If ``True``, enable gaussian term. Default ``True``\n :param lt_term: If ``True``, enable gaussian term. Default ``True``\n :param step_t""erm: If ``True``, enable gaussian term. Default ``True``\n :return: Array of sum of hypermet functions at each ``x`` coordinate\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_33sum_fastahypermet = {"sum_fastahypermet", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_33sum_fastahypermet, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_32sum_fastahypermet};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_33sum_fastahypermet = {"sum_fastahypermet", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_33sum_fastahypermet, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_32sum_fastahypermet};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_33sum_fastahypermet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_gaussian_term = 0;
@@ -11834,14 +11208,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
- __Pyx_memviewslice __pyx_t_8 = { 0, 0, { 0 }, { 0 }, { 0 } };
- Py_ssize_t __pyx_t_9;
- int __pyx_t_10;
- Py_ssize_t __pyx_t_11;
- int __pyx_t_12;
- Py_ssize_t __pyx_t_13;
- int __pyx_t_14;
- PyObject *__pyx_t_15 = NULL;
+ PyObject *__pyx_t_8 = NULL;
+ __Pyx_memviewslice __pyx_t_9 = { 0, 0, { 0 }, { 0 }, { 0 } };
+ Py_ssize_t __pyx_t_10;
+ int __pyx_t_11;
+ Py_ssize_t __pyx_t_12;
+ int __pyx_t_13;
+ Py_ssize_t __pyx_t_14;
+ int __pyx_t_15;
__Pyx_RefNannySetupContext("sum_fastahypermet", 0);
/* "silx/math/fit/functions.pyx":897
@@ -11998,16 +11372,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 917, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_x);
__Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_x);
+ PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
/* "silx/math/fit/functions.pyx":918
*
@@ -12016,9 +11390,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 918, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 918, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":919
* x_c = numpy.array(x,
@@ -12027,14 +11401,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* order='C').reshape(-1)
* params_c = numpy.array(params,
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 919, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 919, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 919, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 919, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 918, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":917
* # lt_slope_r (params[8*i + 6]) and lt_term.
@@ -12043,11 +11417,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 917, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 917, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":920
* copy=False,
@@ -12056,17 +11430,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* params_c = numpy.array(params,
* copy=False,
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 920, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 920, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 920, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_x_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 920, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_6, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 920, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 920, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_v_x_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":921
* dtype=numpy.float64,
@@ -12075,16 +11461,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 921, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_params);
__Pyx_GIVEREF(__pyx_v_params);
- PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_params);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_params);
/* "silx/math/fit/functions.pyx":922
* order='C').reshape(-1)
@@ -12093,9 +11479,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 922, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":923
* params_c = numpy.array(params,
@@ -12104,14 +11490,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* order='C').reshape(-1)
* y_c = numpy.empty(shape=(x.size,),
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 923, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 923, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 923, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 923, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 922, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":921
* dtype=numpy.float64,
@@ -12120,11 +11506,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* copy=False,
* dtype=numpy.float64,
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 921, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "silx/math/fit/functions.pyx":924
* copy=False,
@@ -12133,17 +11519,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* y_c = numpy.empty(shape=(x.size,),
* dtype=numpy.float64)
*/
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 924, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_t_7 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+ __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
+ if (likely(__pyx_t_7)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+ __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_3, function);
+ }
+ }
+ __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 924, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 924, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 924, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_v_params_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_params_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":925
* dtype=numpy.float64,
@@ -12152,22 +11550,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* dtype=numpy.float64)
*
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 925, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 925, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 925, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
__pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 925, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/functions.pyx":926
* order='C').reshape(-1)
@@ -12176,12 +11574,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*
* status = functions_wrapper.sum_fastahypermet(&x_c[0],
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 926, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 926, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 925, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":925
@@ -12191,15 +11589,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* dtype=numpy.float64)
*
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 925, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_y_c = __pyx_t_8;
- __pyx_t_8.memview = NULL;
- __pyx_t_8.data = NULL;
+ __pyx_v_y_c = __pyx_t_9;
+ __pyx_t_9.memview = NULL;
+ __pyx_t_9.data = NULL;
/* "silx/math/fit/functions.pyx":928
* dtype=numpy.float64)
@@ -12208,14 +11606,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* x.size,
* &params_c[0],
*/
- __pyx_t_9 = 0;
- __pyx_t_10 = -1;
- if (__pyx_t_9 < 0) {
- __pyx_t_9 += __pyx_v_x_c.shape[0];
- if (unlikely(__pyx_t_9 < 0)) __pyx_t_10 = 0;
- } else if (unlikely(__pyx_t_9 >= __pyx_v_x_c.shape[0])) __pyx_t_10 = 0;
- if (unlikely(__pyx_t_10 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_10);
+ __pyx_t_10 = 0;
+ __pyx_t_11 = -1;
+ if (__pyx_t_10 < 0) {
+ __pyx_t_10 += __pyx_v_x_c.shape[0];
+ if (unlikely(__pyx_t_10 < 0)) __pyx_t_11 = 0;
+ } else if (unlikely(__pyx_t_10 >= __pyx_v_x_c.shape[0])) __pyx_t_11 = 0;
+ if (unlikely(__pyx_t_11 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_11);
__PYX_ERR(0, 928, __pyx_L1_error)
}
@@ -12228,7 +11626,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*/
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 929, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 929, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* "silx/math/fit/functions.pyx":930
@@ -12238,14 +11636,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* params_c.size,
* &y_c[0],
*/
- __pyx_t_11 = 0;
- __pyx_t_12 = -1;
- if (__pyx_t_11 < 0) {
- __pyx_t_11 += __pyx_v_params_c.shape[0];
- if (unlikely(__pyx_t_11 < 0)) __pyx_t_12 = 0;
- } else if (unlikely(__pyx_t_11 >= __pyx_v_params_c.shape[0])) __pyx_t_12 = 0;
- if (unlikely(__pyx_t_12 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_12);
+ __pyx_t_12 = 0;
+ __pyx_t_13 = -1;
+ if (__pyx_t_12 < 0) {
+ __pyx_t_12 += __pyx_v_params_c.shape[0];
+ if (unlikely(__pyx_t_12 < 0)) __pyx_t_13 = 0;
+ } else if (unlikely(__pyx_t_12 >= __pyx_v_params_c.shape[0])) __pyx_t_13 = 0;
+ if (unlikely(__pyx_t_13 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_13);
__PYX_ERR(0, 930, __pyx_L1_error)
}
@@ -12258,11 +11656,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*/
__pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_params_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 931, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 931, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 931, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 931, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/functions.pyx":932
* &params_c[0],
@@ -12271,14 +11669,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* tail_flags)
*
*/
- __pyx_t_13 = 0;
- __pyx_t_14 = -1;
- if (__pyx_t_13 < 0) {
- __pyx_t_13 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_13 < 0)) __pyx_t_14 = 0;
- } else if (unlikely(__pyx_t_13 >= __pyx_v_y_c.shape[0])) __pyx_t_14 = 0;
- if (unlikely(__pyx_t_14 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_14);
+ __pyx_t_14 = 0;
+ __pyx_t_15 = -1;
+ if (__pyx_t_14 < 0) {
+ __pyx_t_14 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_14 < 0)) __pyx_t_15 = 0;
+ } else if (unlikely(__pyx_t_14 >= __pyx_v_y_c.shape[0])) __pyx_t_15 = 0;
+ if (unlikely(__pyx_t_15 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_15);
__PYX_ERR(0, 932, __pyx_L1_error)
}
@@ -12289,7 +11687,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*
* if status:
*/
- __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_tail_flags); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 933, __pyx_L1_error)
+ __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_tail_flags); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 933, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":928
* dtype=numpy.float64)
@@ -12298,7 +11696,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
* x.size,
* &params_c[0],
*/
- __pyx_v_status = sum_fastahypermet((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_9)) )))), __pyx_t_10, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_11)) )))), __pyx_t_12, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_13)) )))), __pyx_t_14);
+ __pyx_v_status = sum_fastahypermet((&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_x_c.data) + __pyx_t_10)) )))), __pyx_t_11, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_params_c.data) + __pyx_t_12)) )))), __pyx_t_13, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_14)) )))), __pyx_t_15);
/* "silx/math/fit/functions.pyx":935
* tail_flags)
@@ -12317,10 +11715,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 936, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 936, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 936, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":935
@@ -12340,112 +11738,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_8 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_8)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_15);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_15, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 938, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_15 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_15)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_15);
+ __pyx_t_3 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_3)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
- }
- }
- if (!__pyx_t_15) {
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_15, __pyx_t_7};
- __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_15); __pyx_t_15 = NULL;
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 938, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":848
@@ -12463,8 +11801,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
- __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
- __Pyx_XDECREF(__pyx_t_15);
+ __Pyx_XDECREF(__pyx_t_8);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_AddTraceback("silx.math.fit.functions.sum_fastahypermet", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -12488,7 +11826,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_32sum_fastahypermet(CYTHON
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_35atan_stepup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_34atan_stepup[] = "atan_stepup(x, a, b, c)\n\n Step up function using an inverse tangent.\n\n :param x: Independent variable where the function is calculated\n :type x: numpy array\n :param a: Height of the step up\n :param b: Center of the step up\n :param c: Parameter related to the slope of the step. A lower ``c``\n value yields a sharper step.\n :return: ``a * (0.5 + (arctan((x - b) / c) / pi))``\n :rtype: numpy array\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_35atan_stepup = {"atan_stepup", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_35atan_stepup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_34atan_stepup};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_35atan_stepup = {"atan_stepup", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_35atan_stepup, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_34atan_stepup};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_35atan_stepup(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_a = 0;
@@ -12579,7 +11917,6 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
PyObject *__pyx_t_6 = NULL;
- PyObject *__pyx_t_7 = NULL;
__Pyx_RefNannySetupContext("atan_stepup", 0);
__Pyx_INCREF(__pyx_v_x);
@@ -12601,7 +11938,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
* return a * (0.5 + (numpy.arctan((1.0 * x - b) / c) / numpy.pi))
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 955, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 955, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -12616,38 +11953,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_x};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 955, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_x);
- __Pyx_GIVEREF(__pyx_v_x);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_x);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 955, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF_SET(__pyx_v_x, __pyx_t_3);
__pyx_t_3 = 0;
@@ -12669,82 +11978,52 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arctan); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arctan); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = PyNumber_Multiply(__pyx_float_1_0, __pyx_v_x); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyNumber_Subtract(__pyx_t_5, __pyx_v_b); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = PyNumber_Subtract(__pyx_t_5, __pyx_v_b); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_v_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_v_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_4)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_pi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_pi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyFloat_AddCObj(__pyx_float_0_5, __pyx_t_6, 0.5, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyNumber_Multiply(__pyx_v_a, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 956, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_r = __pyx_t_6;
- __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_5 = __Pyx_PyFloat_AddCObj(__pyx_float_0_5, __pyx_t_4, 0.5, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_Multiply(__pyx_v_a, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 956, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_r = __pyx_t_4;
+ __pyx_t_4 = 0;
goto __pyx_L0;
/* "silx/math/fit/functions.pyx":941
@@ -12761,7 +12040,6 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
- __Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("silx.math.fit.functions.atan_stepup", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -12782,7 +12060,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_34atan_stepup(CYTHON_UNUSE
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_37periodic_gauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_9functions_36periodic_gauss[] = "periodic_gauss(x, *pars)\n\n Return a sum of gaussian functions defined by\n *(npeaks, delta, height, centroid, fwhm)*,\n where:\n\n - *npeaks* is the number of gaussians peaks\n - *delta* is the constant distance between 2 peaks\n - *height* is the peak amplitude of all the gaussians\n - *centroid* is the peak x-coordinate of the first gaussian\n - *fwhm* is the full-width at half maximum for all the gaussians\n\n :param x: Independent variable where the function is calculated\n :param pars: *(npeaks, delta, height, centroid, fwhm)*\n :return: Sum of ``npeaks`` gaussians\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_37periodic_gauss = {"periodic_gauss", (PyCFunction)__pyx_pw_4silx_4math_3fit_9functions_37periodic_gauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_36periodic_gauss};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_9functions_37periodic_gauss = {"periodic_gauss", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_9functions_37periodic_gauss, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_9functions_36periodic_gauss};
static PyObject *__pyx_pw_4silx_4math_3fit_9functions_37periodic_gauss(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_pars = 0;
@@ -12905,7 +12183,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_36periodic_gauss(CYTHON_UN
* for i in range(int(pars[0])):
* newpars[i, 0] = pars[2]
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -12920,7 +12198,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_36periodic_gauss(CYTHON_UN
__Pyx_GIVEREF(__pyx_int_3);
PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
__pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
@@ -13094,7 +12372,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_36periodic_gauss(CYTHON_UN
*/
__pyx_t_9 = __Pyx_GetItemInt_Tuple(__pyx_v_pars, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 984, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- if (unlikely(PyObject_SetItem(__pyx_v_newpars, __pyx_tuple__51, __pyx_t_9) < 0)) __PYX_ERR(0, 984, __pyx_L1_error)
+ if (unlikely(PyObject_SetItem(__pyx_v_newpars, __pyx_tuple__5, __pyx_t_9) < 0)) __PYX_ERR(0, 984, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* "silx/math/fit/functions.pyx":981
@@ -13113,7 +12391,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_9functions_36periodic_gauss(CYTHON_UN
* return sum_gauss(x, newpars) # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sum_gauss); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 985, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sum_gauss); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 985, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_7 = NULL;
__pyx_t_8 = 0;
@@ -13338,10 +12616,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -13387,7 +12665,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13419,7 +12697,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13452,13 +12730,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -13477,13 +12767,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -13496,8 +12786,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -13534,10 +12824,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -13556,21 +12846,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -13589,24 +12879,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -13637,7 +12927,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -13731,11 +13021,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -13808,7 +13098,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -13858,8 +13148,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -13913,7 +13203,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -14049,7 +13339,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14765,7 +14055,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14818,7 +14108,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15294,7 +14584,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -15340,7 +14630,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -16462,7 +15752,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -17489,7 +16779,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -17845,7 +17135,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18385,7 +17675,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -18499,7 +17789,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__64, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__17, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -19500,7 +18790,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -19553,7 +18843,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -19904,9 +19194,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__67);
- __Pyx_GIVEREF(__pyx_slice__67);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__67);
+ __Pyx_INCREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__4);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -19939,7 +19229,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__68); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__4); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -19989,7 +19279,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -20079,9 +19369,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__69);
- __Pyx_GIVEREF(__pyx_slice__69);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__69);
+ __Pyx_INCREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__4);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -20205,7 +19495,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -22368,7 +21658,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22421,7 +21711,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24302,7 +23592,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -24335,41 +23624,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24389,7 +23648,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -24416,7 +23674,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -24453,41 +23710,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -24528,7 +23755,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -25636,7 +24862,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -25717,8 +24943,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -25775,41 +25000,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25832,48 +25027,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -25886,8 +25053,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -25934,7 +25101,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -25964,7 +25130,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -26035,41 +25200,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26097,7 +25232,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -26812,6 +25946,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_16_08_2017, __pyx_k_16_08_2017, sizeof(__pyx_k_16_08_2017), 0, 0, 1, 0},
@@ -26972,7 +26115,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 87, __pyx_L1_error)
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 981, __pyx_L1_error)
__pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 132, __pyx_L1_error)
@@ -26986,7 +26129,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -27001,17 +26144,6 @@ static int __Pyx_InitCachedConstants(void) {
__Pyx_GOTREF(__pyx_tuple_);
__Pyx_GIVEREF(__pyx_tuple_);
- /* "silx/math/fit/functions.pyx":89
- * raise IndexError("Cannot compute erf for an empty array")
- *
- * x_c = numpy.array(x, copy=False, dtype=numpy.float64, order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
- *
- */
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__2);
- __Pyx_GIVEREF(__pyx_tuple__2);
-
/* "silx/math/fit/functions.pyx":117
* for len_dim in x.shape:
* if len_dim == 0:
@@ -27019,42 +26151,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* x_c = numpy.array(x, copy=False, dtype=numpy.float64, order='C').reshape(-1)
*/
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Cannot_compute_erfc_for_an_empty); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
-
- /* "silx/math/fit/functions.pyx":119
- * raise IndexError("Cannot compute erfc for an empty array")
- *
- * x_c = numpy.array(x, copy=False, dtype=numpy.float64, order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x_c.size,), dtype=numpy.float64)
- *
- */
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
-
- /* "silx/math/fit/functions.pyx":155
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
-
- /* "silx/math/fit/functions.pyx":159
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 159, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Cannot_compute_erfc_for_an_empty); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 117, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "silx/math/fit/functions.pyx":169
*
@@ -27063,31 +26162,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* # reshape y_c to match original, possibly unusual, data shape
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 169, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
-
- /* "silx/math/fit/functions.pyx":202
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 202, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
-
- /* "silx/math/fit/functions.pyx":206
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 206, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 169, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":216
*
@@ -27096,31 +26173,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 216, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
-
- /* "silx/math/fit/functions.pyx":252
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 252, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
-
- /* "silx/math/fit/functions.pyx":256
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 256, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 216, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":266
*
@@ -27129,31 +26184,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
-
- /* "silx/math/fit/functions.pyx":301
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 301, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
-
- /* "silx/math/fit/functions.pyx":305
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 305, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":315
*
@@ -27162,31 +26195,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 315, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
-
- /* "silx/math/fit/functions.pyx":351
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 351, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
-
- /* "silx/math/fit/functions.pyx":355
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 355, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 315, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":365
*
@@ -27195,31 +26206,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 365, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
-
- /* "silx/math/fit/functions.pyx":402
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 402, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
-
- /* "silx/math/fit/functions.pyx":406
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 406, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 365, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":416
*
@@ -27228,31 +26217,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 416, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
-
- /* "silx/math/fit/functions.pyx":457
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 457, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
-
- /* "silx/math/fit/functions.pyx":461
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 461, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 416, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":471
*
@@ -27261,31 +26228,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 471, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
-
- /* "silx/math/fit/functions.pyx":504
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 504, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
-
- /* "silx/math/fit/functions.pyx":508
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 508, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 471, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":518
*
@@ -27294,31 +26239,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 518, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
-
- /* "silx/math/fit/functions.pyx":551
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 551, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
-
- /* "silx/math/fit/functions.pyx":555
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 555, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 518, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":565
*
@@ -27327,31 +26250,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
-
- /* "silx/math/fit/functions.pyx":599
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 599, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
-
- /* "silx/math/fit/functions.pyx":603
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 603, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":613
*
@@ -27360,31 +26261,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 613, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
-
- /* "silx/math/fit/functions.pyx":646
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 646, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
-
- /* "silx/math/fit/functions.pyx":650
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 650, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 613, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":661
*
@@ -27393,31 +26272,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 661, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
-
- /* "silx/math/fit/functions.pyx":695
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 695, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
-
- /* "silx/math/fit/functions.pyx":699
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 699, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 661, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":710
*
@@ -27426,31 +26283,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 710, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
-
- /* "silx/math/fit/functions.pyx":746
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 746, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
-
- /* "silx/math/fit/functions.pyx":750
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 750, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 710, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":761
*
@@ -27459,31 +26294,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 761, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
-
- /* "silx/math/fit/functions.pyx":827
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__44 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 827, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
-
- /* "silx/math/fit/functions.pyx":831
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__45 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 831, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__45);
- __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 761, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":843
*
@@ -27492,31 +26305,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 843, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
-
- /* "silx/math/fit/functions.pyx":920
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * params_c = numpy.array(params,
- * copy=False,
- */
- __pyx_tuple__47 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 920, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__47);
- __Pyx_GIVEREF(__pyx_tuple__47);
-
- /* "silx/math/fit/functions.pyx":924
- * copy=False,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * y_c = numpy.empty(shape=(x.size,),
- * dtype=numpy.float64)
- */
- __pyx_tuple__48 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 924, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 843, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":936
*
@@ -27525,9 +26316,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return numpy.asarray(y_c).reshape(x.shape)
*/
- __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 936, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__49);
- __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Wrong_number_of_parameters_for_f); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 936, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/fit/functions.pyx":984
* newpars[i, 0] = pars[2]
@@ -27535,12 +26326,12 @@ static int __Pyx_InitCachedConstants(void) {
* newpars[:, 2] = pars[4] # <<<<<<<<<<<<<<
* return sum_gauss(x, newpars)
*/
- __pyx_slice__50 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__50)) __PYX_ERR(0, 984, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__50);
- __Pyx_GIVEREF(__pyx_slice__50);
- __pyx_tuple__51 = PyTuple_Pack(2, __pyx_slice__50, __pyx_int_2); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 984, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__51);
- __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 984, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
+ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_slice__4, __pyx_int_2); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 984, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
/* "View.MemoryView":132
*
@@ -27549,9 +26340,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "View.MemoryView":135
*
@@ -27560,20 +26351,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__53);
- __Pyx_GIVEREF(__pyx_tuple__53);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "View.MemoryView":147
*
@@ -27582,9 +26362,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__55);
- __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -27593,9 +26373,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -27604,9 +26384,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__57);
- __Pyx_GIVEREF(__pyx_tuple__57);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27614,18 +26394,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__59);
- __Pyx_GIVEREF(__pyx_tuple__59);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -27634,9 +26414,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -27645,9 +26425,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__61);
- __Pyx_GIVEREF(__pyx_tuple__61);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -27656,9 +26436,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__62);
- __Pyx_GIVEREF(__pyx_tuple__62);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -27667,9 +26447,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__63);
- __Pyx_GIVEREF(__pyx_tuple__63);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -27678,12 +26458,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__64 = PyTuple_New(1); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__64);
+ __pyx_tuple__17 = PyTuple_New(1); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__64, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__64);
+ PyTuple_SET_ITEM(__pyx_tuple__17, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27691,18 +26471,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__65);
- __Pyx_GIVEREF(__pyx_tuple__65);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__66);
- __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -27711,9 +26491,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__67 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__67)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__67);
- __Pyx_GIVEREF(__pyx_slice__67);
+ __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -27722,9 +26502,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__68 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__68);
- __Pyx_GIVEREF(__pyx_slice__68);
+ __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -27733,9 +26513,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__69 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__69)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__69);
- __Pyx_GIVEREF(__pyx_slice__69);
+ __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__4);
+ __Pyx_GIVEREF(__pyx_slice__4);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -27744,9 +26524,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -27754,18 +26534,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__71);
- __Pyx_GIVEREF(__pyx_tuple__71);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__72);
- __Pyx_GIVEREF(__pyx_tuple__72);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "silx/math/fit/functions.pyx":67
*
@@ -27774,10 +26554,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return the gaussian error function
*
*/
- __pyx_tuple__73 = PyTuple_Pack(5, __pyx_n_s_x, __pyx_n_s_x_c, __pyx_n_s_y_c, __pyx_n_s_len_dim, __pyx_n_s_status); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 67, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__73);
- __Pyx_GIVEREF(__pyx_tuple__73);
- __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_erf, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 67, __pyx_L1_error)
+ __pyx_tuple__23 = PyTuple_Pack(5, __pyx_n_s_x, __pyx_n_s_x_c, __pyx_n_s_y_c, __pyx_n_s_len_dim, __pyx_n_s_status); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 67, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_erf, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 67, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":97
*
@@ -27786,10 +26566,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return the gaussian complementary error function
*
*/
- __pyx_tuple__75 = PyTuple_Pack(5, __pyx_n_s_x, __pyx_n_s_x_c, __pyx_n_s_y_c, __pyx_n_s_len_dim, __pyx_n_s_status); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 97, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__75);
- __Pyx_GIVEREF(__pyx_tuple__75);
- __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_erfc, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __pyx_tuple__25 = PyTuple_Pack(5, __pyx_n_s_x, __pyx_n_s_x_c, __pyx_n_s_y_c, __pyx_n_s_len_dim, __pyx_n_s_status); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 97, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_erfc, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 97, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":127
*
@@ -27798,10 +26578,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of gaussian functions defined by *(height, centroid, fwhm)*,
* where:
*/
- __pyx_tuple__77 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__77);
- __Pyx_GIVEREF(__pyx_tuple__77);
- __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_gauss, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 127, __pyx_L1_error)
+ __pyx_tuple__27 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 127, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_gauss, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 127, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":175
*
@@ -27810,10 +26590,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of gaussian functions defined by *(area, centroid, fwhm)*,
* where:
*/
- __pyx_tuple__79 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__79);
- __Pyx_GIVEREF(__pyx_tuple__79);
- __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_agauss, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __pyx_tuple__29 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_agauss, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 175, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":221
*
@@ -27822,10 +26602,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of gaussian functions defined by *(area, centroid, fwhm)*,
* where:
*/
- __pyx_tuple__81 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 221, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__81);
- __Pyx_GIVEREF(__pyx_tuple__81);
- __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_fastagauss, 221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 221, __pyx_L1_error)
+ __pyx_tuple__31 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 221, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_fastagauss, 221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 221, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":271
*
@@ -27834,10 +26614,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of gaussian functions defined by *(area, centroid, fwhm1, fwhm2)*,
* where:
*/
- __pyx_tuple__83 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 271, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__83);
- __Pyx_GIVEREF(__pyx_tuple__83);
- __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitgauss, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __pyx_tuple__33 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 271, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitgauss, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 271, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":320
*
@@ -27846,10 +26626,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of pseudo-Voigt functions, defined by *(area, centroid, fwhm,
* eta)*.
*/
- __pyx_tuple__85 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 320, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__85);
- __Pyx_GIVEREF(__pyx_tuple__85);
- __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_apvoigt, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __pyx_tuple__35 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 320, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_apvoigt, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 320, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":370
*
@@ -27858,10 +26638,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of pseudo-Voigt functions, defined by *(height, centroid,
* fwhm, eta)*.
*/
- __pyx_tuple__87 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 370, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__87);
- __Pyx_GIVEREF(__pyx_tuple__87);
- __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_pvoigt, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __pyx_tuple__37 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 370, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_pvoigt, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 370, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":421
*
@@ -27870,10 +26650,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of split pseudo-Voigt functions, defined by *(height,
* centroid, fwhm1, fwhm2, eta)*.
*/
- __pyx_tuple__89 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 421, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__89);
- __Pyx_GIVEREF(__pyx_tuple__89);
- __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitpvoigt, 421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 421, __pyx_L1_error)
+ __pyx_tuple__39 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 421, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitpvoigt, 421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 421, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":476
*
@@ -27882,10 +26662,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of Lorentz distributions, also known as Cauchy distribution,
* defined by *(height, centroid, fwhm)*.
*/
- __pyx_tuple__91 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 476, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__91);
- __Pyx_GIVEREF(__pyx_tuple__91);
- __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_lorentz, 476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(0, 476, __pyx_L1_error)
+ __pyx_tuple__41 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 476, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_lorentz, 476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 476, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":523
*
@@ -27894,10 +26674,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of Lorentz distributions, also known as Cauchy distribution,
* defined by *(area, centroid, fwhm)*.
*/
- __pyx_tuple__93 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 523, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__93);
- __Pyx_GIVEREF(__pyx_tuple__93);
- __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_alorentz, 523, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 523, __pyx_L1_error)
+ __pyx_tuple__43 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 523, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_alorentz, 523, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 523, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":570
*
@@ -27906,10 +26686,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of split Lorentz distributions,
* defined by *(height, centroid, fwhm1, fwhm2)*.
*/
- __pyx_tuple__95 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 570, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__95);
- __Pyx_GIVEREF(__pyx_tuple__95);
- __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitlorentz, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 570, __pyx_L1_error)
+ __pyx_tuple__45 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 570, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__45);
+ __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_splitlorentz, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 570, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":618
*
@@ -27918,10 +26698,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of stepdown functions.
* defined by *(height, centroid, fwhm)*.
*/
- __pyx_tuple__97 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 618, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__97);
- __Pyx_GIVEREF(__pyx_tuple__97);
- __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__97, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_stepdown, 618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(0, 618, __pyx_L1_error)
+ __pyx_tuple__47 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 618, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__47);
+ __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_stepdown, 618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 618, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":666
*
@@ -27930,10 +26710,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of stepup functions.
* defined by *(height, centroid, fwhm)*.
*/
- __pyx_tuple__99 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 666, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__99);
- __Pyx_GIVEREF(__pyx_tuple__99);
- __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__99, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_stepup, 666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(0, 666, __pyx_L1_error)
+ __pyx_tuple__49 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 666, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__49);
+ __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_stepup, 666, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 666, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":715
*
@@ -27942,10 +26722,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return a sum of slit functions.
* defined by *(height, position, fwhm, beamfwhm)*.
*/
- __pyx_tuple__101 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(0, 715, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__101);
- __Pyx_GIVEREF(__pyx_tuple__101);
- __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_slit, 715, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 715, __pyx_L1_error)
+ __pyx_tuple__51 = PyTuple_Pack(6, __pyx_n_s_x, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_status); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 715, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__51);
+ __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_slit, 715, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 715, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":766
*
@@ -27954,10 +26734,10 @@ static int __Pyx_InitCachedConstants(void) {
* gaussian_term=True, st_term=True, lt_term=True, step_term=True):
* """Return a sum of ahypermet functions.
*/
- __pyx_tuple__103 = PyTuple_Pack(11, __pyx_n_s_x, __pyx_n_s_gaussian_term, __pyx_n_s_st_term, __pyx_n_s_lt_term, __pyx_n_s_step_term, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_tail_flags, __pyx_n_s_status); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 766, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__103);
- __Pyx_GIVEREF(__pyx_tuple__103);
- __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(1, 4, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__103, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_ahypermet, 766, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(0, 766, __pyx_L1_error)
+ __pyx_tuple__53 = PyTuple_Pack(11, __pyx_n_s_x, __pyx_n_s_gaussian_term, __pyx_n_s_st_term, __pyx_n_s_lt_term, __pyx_n_s_step_term, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_tail_flags, __pyx_n_s_status); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 766, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__53);
+ __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 4, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_ahypermet, 766, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 766, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":848
*
@@ -27966,10 +26746,10 @@ static int __Pyx_InitCachedConstants(void) {
* gaussian_term=True, st_term=True,
* lt_term=True, step_term=True):
*/
- __pyx_tuple__105 = PyTuple_Pack(11, __pyx_n_s_x, __pyx_n_s_gaussian_term, __pyx_n_s_st_term, __pyx_n_s_lt_term, __pyx_n_s_step_term, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_tail_flags, __pyx_n_s_status); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 848, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__105);
- __Pyx_GIVEREF(__pyx_tuple__105);
- __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 4, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__105, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_fastahypermet, 848, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(0, 848, __pyx_L1_error)
+ __pyx_tuple__55 = PyTuple_Pack(11, __pyx_n_s_x, __pyx_n_s_gaussian_term, __pyx_n_s_st_term, __pyx_n_s_lt_term, __pyx_n_s_step_term, __pyx_n_s_params, __pyx_n_s_x_c, __pyx_n_s_params_c, __pyx_n_s_y_c, __pyx_n_s_tail_flags, __pyx_n_s_status); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 848, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__55);
+ __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 4, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_sum_fastahypermet, 848, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 848, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":941
*
@@ -27978,10 +26758,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* Step up function using an inverse tangent.
*/
- __pyx_tuple__107 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_a, __pyx_n_s_b, __pyx_n_s_c); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 941, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__107);
- __Pyx_GIVEREF(__pyx_tuple__107);
- __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_atan_stepup, 941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(0, 941, __pyx_L1_error)
+ __pyx_tuple__57 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_a, __pyx_n_s_b, __pyx_n_s_c); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 941, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__57);
+ __Pyx_GIVEREF(__pyx_tuple__57);
+ __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_atan_stepup, 941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 941, __pyx_L1_error)
/* "silx/math/fit/functions.pyx":959
*
@@ -27990,10 +26770,10 @@ static int __Pyx_InitCachedConstants(void) {
* """
* Return a sum of gaussian functions defined by
*/
- __pyx_tuple__109 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_pars, __pyx_n_s_newpars, __pyx_n_s_i); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 959, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__109);
- __Pyx_GIVEREF(__pyx_tuple__109);
- __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_periodic_gauss, 959, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(0, 959, __pyx_L1_error)
+ __pyx_tuple__59 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_pars, __pyx_n_s_newpars, __pyx_n_s_i); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 959, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__59);
+ __Pyx_GIVEREF(__pyx_tuple__59);
+ __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_functions_pyx, __pyx_n_s_periodic_gauss, 959, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 959, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -28002,9 +26782,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__111 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__111);
- __Pyx_GIVEREF(__pyx_tuple__111);
+ __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__61);
+ __Pyx_GIVEREF(__pyx_tuple__61);
/* "View.MemoryView":286
*
@@ -28013,9 +26793,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__112 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__112);
- __Pyx_GIVEREF(__pyx_tuple__112);
+ __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__62);
+ __Pyx_GIVEREF(__pyx_tuple__62);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -28024,9 +26804,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__113 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__113);
- __Pyx_GIVEREF(__pyx_tuple__113);
+ __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__63);
+ __Pyx_GIVEREF(__pyx_tuple__63);
/* "View.MemoryView":290
*
@@ -28035,9 +26815,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__114);
- __Pyx_GIVEREF(__pyx_tuple__114);
+ __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__64);
+ __Pyx_GIVEREF(__pyx_tuple__64);
/* "View.MemoryView":291
*
@@ -28046,19 +26826,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__115);
- __Pyx_GIVEREF(__pyx_tuple__115);
+ __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__65);
+ __Pyx_GIVEREF(__pyx_tuple__65);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__116 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__116);
- __Pyx_GIVEREF(__pyx_tuple__116);
- __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__116, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__66 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__66);
+ __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -28066,7 +26846,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -28083,13 +26863,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -28212,15 +26992,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -28233,7 +27004,30 @@ __Pyx_PyMODINIT_FUNC PyInit_functions(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -28246,8 +27040,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -28268,7 +27064,7 @@ bad:
}
-static int __pyx_pymod_exec_functions(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_functions(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -28278,7 +27074,11 @@ static int __pyx_pymod_exec_functions(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_4[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'functions' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -28293,6 +27093,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_functions(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -28347,7 +27150,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__fit__functions) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -28438,12 +27241,12 @@ if (!__Pyx_RefNanny) {
*
* cimport cython
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -28710,7 +27513,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -28724,7 +27527,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -28738,7 +27541,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__113, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -28752,7 +27555,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -28766,7 +27569,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -28852,9 +27655,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.fit.functions", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.fit.functions", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.fit.functions");
}
@@ -28875,9 +27678,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -28947,41 +27750,49 @@ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -28989,16 +27800,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -29016,7 +27826,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -29117,7 +27927,7 @@ done:
#endif
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -29136,8 +27946,37 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -29157,7 +27996,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -29196,9 +28035,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -29206,89 +28044,66 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -29312,7 +28127,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -29471,13 +28286,13 @@ bad:
#endif
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -29615,7 +28430,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* RaiseDoubleKeywords */
- static void __Pyx_RaiseDoubleKeywordsError(
+static void __Pyx_RaiseDoubleKeywordsError(
const char* func_name,
PyObject* kw_name)
{
@@ -29629,7 +28444,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* ParseKeywords */
- static int __Pyx_ParseOptionalKeywords(
+static int __Pyx_ParseOptionalKeywords(
PyObject *kwds,
PyObject **argnames[],
PyObject *kwds2,
@@ -29731,7 +28546,7 @@ bad:
}
/* RaiseArgTupleInvalid */
- static void __Pyx_RaiseArgtupleInvalid(
+static void __Pyx_RaiseArgtupleInvalid(
const char* func_name,
int exact,
Py_ssize_t num_min,
@@ -29757,7 +28572,7 @@ bad:
}
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -29879,7 +28694,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* PyFloatBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
const double a = floatval;
double b, result;
@@ -29950,7 +28765,7 @@ static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floa
#endif
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -29965,7 +28780,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29983,7 +28798,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -29999,7 +28814,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -30007,7 +28822,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -30037,7 +28852,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -30058,7 +28873,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -30105,7 +28920,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -30184,6 +28999,9 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -30204,7 +29022,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -30212,7 +29030,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+ #if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -30241,7 +29059,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+ static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -30274,7 +29092,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+ #if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -30299,7 +29117,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+ static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -30314,25 +29132,25 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -30344,13 +29162,29 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
return 0;
}
+/* GetTopmostException */
+ #if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+ #if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -30362,13 +29196,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -30384,11 +29219,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+ #if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -30421,13 +29257,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -30454,16 +29293,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+ #if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -30488,7 +29328,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -30535,7 +29375,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -30553,7 +29393,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+ #if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -30608,14 +29448,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -30625,12 +29493,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+ static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -30638,7 +29506,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -30680,7 +29548,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -30694,7 +29562,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -30734,7 +29602,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -30744,7 +29612,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+ static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -30762,7 +29630,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -30838,8 +29706,8 @@ GOOD:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+ #ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -30852,7 +29720,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -30869,7 +29739,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -30878,7 +29748,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -30958,7 +29828,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+ #include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -31064,8 +29934,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+ /* MemviewSliceIsContig */
+ static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -31087,7 +29957,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+ static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -31123,7 +29993,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+ static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -31136,7 +30006,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+ static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -31148,7 +30018,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -31170,8 +30040,8 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -31201,7 +30071,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -31268,8 +30138,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -31457,8 +30327,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -31646,8 +30516,8 @@ raise_neg_overflow:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -31677,8 +30547,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -31866,7 +30736,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -31877,7 +30747,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+ static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -32379,7 +31249,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -32420,7 +31290,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -32602,7 +31472,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -32625,7 +31495,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -32641,7 +31511,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -32750,6 +31620,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -32827,7 +31704,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/fit/peaks.c b/silx/math/fit/peaks.c
index fa14a1b..865df87 100644
--- a/silx/math/fit/peaks.c
+++ b/silx/math/fit/peaks.c
@@ -1,21 +1,21 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
"silx/math/fit/peaks/include/peaks.h"
- ],
+ ],
"include_dirs": [
"silx/math/fit/peaks/include"
- ],
- "language": "c",
- "name": "silx.math.fit.peaks",
+ ],
+ "language": "c",
+ "name": "silx.math.fit.peaks",
"sources": [
- "silx/math/fit/peaks.pyx",
+ "silx/math/fit/peaks.pyx",
"silx/math/fit/peaks/src/peaks.c"
]
- },
+ },
"module_name": "silx.math.fit.peaks"
}
END: Cython Metadata */
@@ -27,7 +27,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -98,6 +99,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -135,6 +140,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -188,11 +197,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -328,6 +343,9 @@ END: Cython Metadata */
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -341,15 +359,40 @@ END: Cython Metadata */
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -457,8 +500,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -616,6 +659,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -674,6 +720,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -754,7 +801,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -1121,7 +1168,25 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
const char* function_name);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1130,28 +1195,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
- (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
-#endif
-
-/* BufferIndexError.proto */
-static void __Pyx_RaiseBufferIndexError(int axis);
-
-/* py_abs.proto */
-#if CYTHON_USE_PYLONG_INTERNALS
-static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num);
-#define __Pyx_PyNumber_Absolute(x)\
- ((likely(PyLong_CheckExact(x))) ?\
- (likely(Py_SIZE(x) >= 0) ? (Py_INCREF(x), (x)) : __Pyx_PyLong_AbsNeg(x)) :\
- PyNumber_Absolute(x))
-#else
-#define __Pyx_PyNumber_Absolute(x) PyNumber_Absolute(x)
-#endif
-
/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
@@ -1168,8 +1211,23 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1178,6 +1236,31 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
+/* PyIntBinop.proto */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
+#else
+#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
+ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
+#endif
+
+/* BufferIndexError.proto */
+static void __Pyx_RaiseBufferIndexError(int axis);
+
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
+/* py_abs.proto */
+#if CYTHON_USE_PYLONG_INTERNALS
+static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num);
+#define __Pyx_PyNumber_Absolute(x)\
+ ((likely(PyLong_CheckExact(x))) ?\
+ (likely(Py_SIZE(x) >= 0) ? (Py_INCREF(x), (x)) : __Pyx_PyLong_AbsNeg(x)) :\
+ PyNumber_Absolute(x))
+#else
+#define __Pyx_PyNumber_Absolute(x) PyNumber_Absolute(x)
+#endif
+
/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;
@@ -1217,13 +1300,8 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
@@ -1375,6 +1453,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1703,13 +1786,13 @@ static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_Ellipsis;
static PyObject *__pyx_builtin_id;
static PyObject *__pyx_builtin_IndexError;
+static const char __pyx_k_[] = "";
static const char __pyx_k_C[] = "C";
static const char __pyx_k_O[] = "O";
static const char __pyx_k_c[] = "c";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_w[] = "w";
static const char __pyx_k_y[] = "y";
-static const char __pyx_k__2[] = "";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_MIT[] = "MIT";
static const char __pyx_k_idx[] = "idx";
@@ -1850,6 +1933,7 @@ static const char __pyx_k_Unable_to_convert_item_to_object[] = "Unable to conver
static const char __pyx_k_got_differing_extents_in_dimensi[] = "got differing extents in dimension %d (got %d and %d)";
static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
static const char __pyx_k_unable_to_allocate_shape_and_str[] = "unable to allocate shape and strides.";
+static PyObject *__pyx_kp_s_;
static PyObject *__pyx_kp_s_15_05_2017;
static PyObject *__pyx_n_s_ASCII;
static PyObject *__pyx_kp_s_Before_memory_allocation_error_h;
@@ -1880,7 +1964,6 @@ static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_View_MemoryView;
-static PyObject *__pyx_kp_s__2;
static PyObject *__pyx_n_s_allocate_buffer;
static PyObject *__pyx_n_s_array;
static PyObject *__pyx_n_s_authors;
@@ -2054,7 +2137,7 @@ static PyObject *__pyx_int_1000;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_int_neg_123456;
-static PyObject *__pyx_tuple_;
+static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
@@ -2062,9 +2145,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__19;
-static PyObject *__pyx_slice__20;
-static PyObject *__pyx_slice__21;
+static PyObject *__pyx_slice__17;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2072,22 +2153,20 @@ static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
-static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
-static PyObject *__pyx_tuple__22;
+static PyObject *__pyx_tuple__19;
+static PyObject *__pyx_tuple__20;
+static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__23;
-static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
+static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__31;
-static PyObject *__pyx_tuple__32;
-static PyObject *__pyx_tuple__33;
-static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_codeobj__26;
-static PyObject *__pyx_codeobj__28;
-static PyObject *__pyx_codeobj__35;
+static PyObject *__pyx_codeobj__22;
+static PyObject *__pyx_codeobj__24;
+static PyObject *__pyx_codeobj__31;
/* Late includes */
/* "silx/math/fit/peaks.pyx":45
@@ -2101,7 +2180,7 @@ static PyObject *__pyx_codeobj__35;
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_3fit_5peaks_1peak_search(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_3fit_5peaks_peak_search[] = "peak_search(y, fwhm, sensitivity=3.5, begin_index=None, end_index=None, debug=False, relevance_info=False)\nFind peaks in a curve.\n\n :param y: Data array\n :type y: numpy.ndarray\n :param fwhm: Estimated full width at half maximum of the typical peaks we\n are interested in (expressed in number of samples)\n :param sensitivity: Threshold factor used for peak detection. Only peaks\n with amplitudes higher than ``\317\203 * sensitivity`` - where ``\317\203`` is the\n standard deviation of the noise - qualify as peaks.\n :param begin_index: Index of the first sample of the region of interest\n in the ``y`` array. If ``None``, start from the first sample.\n :param end_index: Index of the last sample of the region of interest in\n the ``y`` array. If ``None``, process until the last sample.\n :param debug: If ``True``, print debug messages. Default: ``False``\n :param relevance_info: If ``True``, add a second dimension with relevance\n information to the output array. Default: ``False``\n :return: 1D sequence with indices of peaks in the data\n if ``relevance_info`` is ``False``.\n Else, sequence of ``(peak_index, peak_relevance)`` tuples (one tuple\n per peak).\n :raise: ``IndexError`` if the number of peaks is too large to fit in the\n output array.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_3fit_5peaks_1peak_search = {"peak_search", (PyCFunction)__pyx_pw_4silx_4math_3fit_5peaks_1peak_search, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_5peaks_peak_search};
+static PyMethodDef __pyx_mdef_4silx_4math_3fit_5peaks_1peak_search = {"peak_search", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_3fit_5peaks_1peak_search, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_3fit_5peaks_peak_search};
static PyObject *__pyx_pw_4silx_4math_3fit_5peaks_1peak_search(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_y = 0;
PyObject *__pyx_v_fwhm = 0;
@@ -2268,17 +2347,18 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- __Pyx_memviewslice __pyx_t_6 = { 0, 0, { 0 }, { 0 }, { 0 } };
- int __pyx_t_7;
+ PyObject *__pyx_t_6 = NULL;
+ __Pyx_memviewslice __pyx_t_7 = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_t_8;
- long __pyx_t_9;
+ int __pyx_t_9;
long __pyx_t_10;
long __pyx_t_11;
- double __pyx_t_12;
+ long __pyx_t_12;
double __pyx_t_13;
double __pyx_t_14;
- Py_ssize_t __pyx_t_15;
- int __pyx_t_16;
+ double __pyx_t_15;
+ Py_ssize_t __pyx_t_16;
+ int __pyx_t_17;
__Pyx_RefNannySetupContext("peak_search", 0);
__Pyx_INCREF(__pyx_v_begin_index);
__Pyx_INCREF(__pyx_v_end_index);
@@ -2291,16 +2371,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_y);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y);
/* "silx/math/fit/peaks.pyx":78
*
@@ -2309,9 +2389,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* dtype=numpy.float64,
* order='C').reshape(-1)
*/
- __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 78, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":79
* y_c = numpy.array(y,
@@ -2320,14 +2400,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* order='C').reshape(-1)
* if debug:
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":77
* double* relevances_c
@@ -2336,11 +2416,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* copy=True,
* dtype=numpy.float64,
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":80
* copy=True,
@@ -2349,17 +2429,29 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* if debug:
* debug = 1
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 80, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_y_c = __pyx_t_6;
- __pyx_t_6.memview = NULL;
- __pyx_t_6.data = NULL;
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_4, function);
+ }
+ }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_int_neg_1) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_int_neg_1);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dc_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_y_c = __pyx_t_7;
+ __pyx_t_7.memview = NULL;
+ __pyx_t_7.data = NULL;
/* "silx/math/fit/peaks.pyx":81
* dtype=numpy.float64,
@@ -2368,8 +2460,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* debug = 1
* else:
*/
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_debug); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 81, __pyx_L1_error)
- if (__pyx_t_7) {
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_debug); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 81, __pyx_L1_error)
+ if (__pyx_t_8) {
/* "silx/math/fit/peaks.pyx":82
* order='C').reshape(-1)
@@ -2411,9 +2503,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* begin_index = 0
* if end_index is None:
*/
- __pyx_t_7 = (__pyx_v_begin_index == Py_None);
- __pyx_t_8 = (__pyx_t_7 != 0);
- if (__pyx_t_8) {
+ __pyx_t_8 = (__pyx_v_begin_index == Py_None);
+ __pyx_t_9 = (__pyx_t_8 != 0);
+ if (__pyx_t_9) {
/* "silx/math/fit/peaks.pyx":87
*
@@ -2441,9 +2533,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* end_index = y_c.size - 1
*
*/
- __pyx_t_8 = (__pyx_v_end_index == Py_None);
- __pyx_t_7 = (__pyx_t_8 != 0);
- if (__pyx_t_7) {
+ __pyx_t_9 = (__pyx_v_end_index == Py_None);
+ __pyx_t_8 = (__pyx_t_9 != 0);
+ if (__pyx_t_8) {
/* "silx/math/fit/peaks.pyx":89
* begin_index = 0
@@ -2452,16 +2544,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
*
* n_peaks = peaks_wrapper.seek(begin_index, end_index, y_c.size,
*/
- __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_end_index, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF_SET(__pyx_v_end_index, __pyx_t_1);
+ __pyx_t_1 = 0;
/* "silx/math/fit/peaks.pyx":88
* if begin_index is None:
@@ -2479,15 +2571,15 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* fwhm, sensitivity, debug,
* &y_c[0], &peaks_c, &relevances_c)
*/
- __pyx_t_9 = __Pyx_PyInt_As_long(__pyx_v_begin_index); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
- __pyx_t_10 = __Pyx_PyInt_As_long(__pyx_v_end_index); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
- __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_11 = __Pyx_PyInt_As_long(__pyx_t_3); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_10 = __Pyx_PyInt_As_long(__pyx_v_begin_index); if (unlikely((__pyx_t_10 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
+ __pyx_t_11 = __Pyx_PyInt_As_long(__pyx_v_end_index); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
+ __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_y_c, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_12 = __Pyx_PyInt_As_long(__pyx_t_4); if (unlikely((__pyx_t_12 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":92
*
@@ -2496,9 +2588,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* &y_c[0], &peaks_c, &relevances_c)
*
*/
- __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_fwhm); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
- __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_sensitivity); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
- __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_debug); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
+ __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_fwhm); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
+ __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_sensitivity); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
+ __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_v_debug); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":93
* n_peaks = peaks_wrapper.seek(begin_index, end_index, y_c.size,
@@ -2507,14 +2599,14 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
*
*
*/
- __pyx_t_15 = 0;
- __pyx_t_16 = -1;
- if (__pyx_t_15 < 0) {
- __pyx_t_15 += __pyx_v_y_c.shape[0];
- if (unlikely(__pyx_t_15 < 0)) __pyx_t_16 = 0;
- } else if (unlikely(__pyx_t_15 >= __pyx_v_y_c.shape[0])) __pyx_t_16 = 0;
- if (unlikely(__pyx_t_16 != -1)) {
- __Pyx_RaiseBufferIndexError(__pyx_t_16);
+ __pyx_t_16 = 0;
+ __pyx_t_17 = -1;
+ if (__pyx_t_16 < 0) {
+ __pyx_t_16 += __pyx_v_y_c.shape[0];
+ if (unlikely(__pyx_t_16 < 0)) __pyx_t_17 = 0;
+ } else if (unlikely(__pyx_t_16 >= __pyx_v_y_c.shape[0])) __pyx_t_17 = 0;
+ if (unlikely(__pyx_t_17 != -1)) {
+ __Pyx_RaiseBufferIndexError(__pyx_t_17);
__PYX_ERR(0, 93, __pyx_L1_error)
}
@@ -2525,10 +2617,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* fwhm, sensitivity, debug,
* &y_c[0], &peaks_c, &relevances_c)
*/
- __pyx_t_3 = __Pyx_PyInt_From_long(seek(__pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_15)) )))), (&__pyx_v_peaks_c), (&__pyx_v_relevances_c))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_v_n_peaks = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_4 = __Pyx_PyInt_From_long(seek(__pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, (&(*((double *) ( /* dim=0 */ ((char *) (((double *) __pyx_v_y_c.data) + __pyx_t_16)) )))), (&__pyx_v_peaks_c), (&__pyx_v_relevances_c))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 91, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_n_peaks = __pyx_t_4;
+ __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":98
* # A negative return value means that peaks were found but not enough
@@ -2537,20 +2629,21 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* msg = "Before memory allocation error happened, "
* msg += "we found %d peaks.\n" % abs(n_peaks)
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_n_peaks, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error)
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 98, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_8) {
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_n_peaks, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 98, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (__pyx_t_9) {
} else {
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_8 = __pyx_t_9;
goto __pyx_L7_bool_binop_done;
}
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_n_peaks, __pyx_int_neg_123456, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error)
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 98, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_4 = __Pyx_PyInt_NeObjC(__pyx_v_n_peaks, __pyx_int_neg_123456, -123456L, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 98, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_8 = __pyx_t_9;
__pyx_L7_bool_binop_done:;
- if (__pyx_t_7) {
+ if (__pyx_t_8) {
/* "silx/math/fit/peaks.pyx":99
* # memory could be allocated for all
@@ -2569,16 +2662,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* _logger.debug(msg)
* msg = ""
*/
- __pyx_t_3 = __Pyx_PyNumber_Absolute(__pyx_v_n_peaks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_we_found_d_peaks, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_4 = __Pyx_PyNumber_Absolute(__pyx_v_n_peaks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_we_found_d_peaks, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":101
* msg = "Before memory allocation error happened, "
@@ -2587,55 +2680,27 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* msg = ""
* for i in range(abs(n_peaks)):
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
- __Pyx_INCREF(__pyx_t_5);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 101, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+ __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
+ if (likely(__pyx_t_1)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_1, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_msg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_msg};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_msg};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_INCREF(__pyx_v_msg);
- __Pyx_GIVEREF(__pyx_v_msg);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_msg);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_t_6, function);
}
}
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_v_msg) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_msg);
+ __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":102
* msg += "we found %d peaks.\n" % abs(n_peaks)
@@ -2644,8 +2709,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* for i in range(abs(n_peaks)):
* msg += "peak index %f, " % peaks_c[i]
*/
- __Pyx_INCREF(__pyx_kp_s__2);
- __Pyx_DECREF_SET(__pyx_v_msg, __pyx_kp_s__2);
+ __Pyx_INCREF(__pyx_kp_s_);
+ __Pyx_DECREF_SET(__pyx_v_msg, __pyx_kp_s_);
/* "silx/math/fit/peaks.pyx":103
* _logger.debug(msg)
@@ -2654,13 +2719,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* msg += "peak index %f, " % peaks_c[i]
* msg += "relevance %f\n" % relevances_c[i]
*/
- __pyx_t_3 = __Pyx_PyNumber_Absolute(__pyx_v_n_peaks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_11 = __Pyx_PyInt_As_long(__pyx_t_3); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_10 = __pyx_t_11;
- for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_10; __pyx_t_16+=1) {
- __pyx_v_i = __pyx_t_16;
+ __pyx_t_4 = __Pyx_PyNumber_Absolute(__pyx_v_n_peaks); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_12 = __Pyx_PyInt_As_long(__pyx_t_4); if (unlikely((__pyx_t_12 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_11 = __pyx_t_12;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_11; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
/* "silx/math/fit/peaks.pyx":104
* msg = ""
@@ -2669,16 +2734,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* msg += "relevance %f\n" % relevances_c[i]
* _logger.debug(msg)
*/
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_peaks_c[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_peak_index_f, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 104, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_4 = PyFloat_FromDouble((__pyx_v_peaks_c[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_peak_index_f, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 104, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 104, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_4);
+ __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":105
* for i in range(abs(n_peaks)):
@@ -2687,16 +2752,16 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* _logger.debug(msg)
* free(peaks_c)
*/
- __pyx_t_3 = PyFloat_FromDouble((__pyx_v_relevances_c[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_relevance_f, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_3);
- __pyx_t_3 = 0;
+ __pyx_t_4 = PyFloat_FromDouble((__pyx_v_relevances_c[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_relevance_f, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 105, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_msg, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 105, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_v_msg, __pyx_t_4);
+ __pyx_t_4 = 0;
}
/* "silx/math/fit/peaks.pyx":106
@@ -2706,55 +2771,27 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* free(peaks_c)
* free(relevances_c)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_logger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_debug); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_debug); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_1)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_2, function);
- }
- }
- if (!__pyx_t_1) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_msg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_msg};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_msg};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
- __Pyx_INCREF(__pyx_v_msg);
- __Pyx_GIVEREF(__pyx_v_msg);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_msg);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_msg) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_msg);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":107
* msg += "relevance %f\n" % relevances_c[i]
@@ -2781,10 +2818,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* # Special value -123456 is returned if the initial memory allocation
* #fails, before any search could be performed
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 109, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_Raise(__pyx_t_3, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 109, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(0, 109, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":98
@@ -2803,11 +2840,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* raise MemoryError("Failed to allocate initial memory for " +
* "output arrays")
*/
- __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_n_peaks, __pyx_int_neg_123456, -123456L, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (unlikely(__pyx_t_7)) {
+ __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_n_peaks, __pyx_int_neg_123456, -123456L, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 112, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(__pyx_t_8)) {
/* "silx/math/fit/peaks.pyx":113
* #fails, before any search could be performed
@@ -2816,13 +2853,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* "output arrays")
*
*/
- __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Failed_to_allocate_initial_memor, __pyx_kp_s_output_arrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_MemoryError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_Raise(__pyx_t_2, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_4 = PyNumber_Add(__pyx_kp_s_Failed_to_allocate_initial_memor, __pyx_kp_s_output_arrays); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_MemoryError, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(0, 113, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":112
@@ -2841,20 +2878,20 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* dtype=numpy.float64)
* relevances = numpy.empty(shape=(n_peaks,),
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_n_peaks);
__Pyx_GIVEREF(__pyx_v_n_peaks);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_n_peaks);
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_5) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_n_peaks);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_6) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/peaks.pyx":117
*
@@ -2863,13 +2900,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* relevances = numpy.empty(shape=(n_peaks,),
* dtype=numpy.float64)
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* "silx/math/fit/peaks.pyx":116
* "output arrays")
@@ -2878,12 +2915,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* dtype=numpy.float64)
* relevances = numpy.empty(shape=(n_peaks,),
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_v_peaks = __pyx_t_1;
- __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_v_peaks = __pyx_t_2;
+ __pyx_t_2 = 0;
/* "silx/math/fit/peaks.pyx":118
* peaks = numpy.empty(shape=(n_peaks,),
@@ -2892,20 +2929,20 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* dtype=numpy.float64)
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_n_peaks);
__Pyx_GIVEREF(__pyx_v_n_peaks);
- PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_n_peaks);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_t_3) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_n_peaks);
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_t_4) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* "silx/math/fit/peaks.pyx":119
* dtype=numpy.float64)
@@ -2914,13 +2951,13 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
*
* for i in range(n_peaks):
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/peaks.pyx":118
* peaks = numpy.empty(shape=(n_peaks,),
@@ -2929,12 +2966,12 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* dtype=numpy.float64)
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 118, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 118, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_relevances = __pyx_t_5;
- __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_v_relevances = __pyx_t_6;
+ __pyx_t_6 = 0;
/* "silx/math/fit/peaks.pyx":121
* dtype=numpy.float64)
@@ -2943,10 +2980,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* peaks[i] = peaks_c[i]
* relevances[i] = relevances_c[i]
*/
- __pyx_t_11 = __Pyx_PyInt_As_long(__pyx_v_n_peaks); if (unlikely((__pyx_t_11 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
- __pyx_t_10 = __pyx_t_11;
- for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_10; __pyx_t_16+=1) {
- __pyx_v_i = __pyx_t_16;
+ __pyx_t_12 = __Pyx_PyInt_As_long(__pyx_v_n_peaks); if (unlikely((__pyx_t_12 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
+ __pyx_t_11 = __pyx_t_12;
+ for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_11; __pyx_t_17+=1) {
+ __pyx_v_i = __pyx_t_17;
/* "silx/math/fit/peaks.pyx":122
*
@@ -2955,10 +2992,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* relevances[i] = relevances_c[i]
*
*/
- __pyx_t_5 = PyFloat_FromDouble((__pyx_v_peaks_c[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(__Pyx_SetItemInt(__pyx_v_peaks, __pyx_v_i, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) __PYX_ERR(0, 122, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_6 = PyFloat_FromDouble((__pyx_v_peaks_c[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__Pyx_SetItemInt(__pyx_v_peaks, __pyx_v_i, __pyx_t_6, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) __PYX_ERR(0, 122, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "silx/math/fit/peaks.pyx":123
* for i in range(n_peaks):
@@ -2967,10 +3004,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
*
* free(peaks_c)
*/
- __pyx_t_5 = PyFloat_FromDouble((__pyx_v_relevances_c[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (unlikely(__Pyx_SetItemInt(__pyx_v_relevances, __pyx_v_i, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_6 = PyFloat_FromDouble((__pyx_v_relevances_c[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ if (unlikely(__Pyx_SetItemInt(__pyx_v_relevances, __pyx_v_i, __pyx_t_6, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
/* "silx/math/fit/peaks.pyx":125
@@ -2998,9 +3035,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
* return peaks
* else:
*/
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_relevance_info); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 128, __pyx_L1_error)
- __pyx_t_8 = ((!__pyx_t_7) != 0);
- if (__pyx_t_8) {
+ __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_relevance_info); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 128, __pyx_L1_error)
+ __pyx_t_9 = ((!__pyx_t_8) != 0);
+ if (__pyx_t_9) {
/* "silx/math/fit/peaks.pyx":129
*
@@ -3032,22 +3069,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(__pyx_v_peaks);
__Pyx_GIVEREF(__pyx_v_peaks);
- PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_peaks);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_peaks);
__Pyx_INCREF(__pyx_v_relevances);
__Pyx_GIVEREF(__pyx_v_relevances);
- PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_relevances);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_r = __pyx_t_5;
- __pyx_t_5 = 0;
+ PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_relevances);
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_r = __pyx_t_6;
+ __pyx_t_6 = 0;
goto __pyx_L0;
}
@@ -3066,7 +3103,8 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_peak_search(CYTHON_UNUSED PyOb
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
+ __Pyx_XDECREF(__pyx_t_6);
+ __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("silx.math.fit.peaks.peak_search", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3123,11 +3161,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
- Py_ssize_t __pyx_t_6;
+ Py_ssize_t __pyx_t_5;
+ int __pyx_t_6;
int __pyx_t_7;
- int __pyx_t_8;
- long __pyx_t_9;
+ long __pyx_t_8;
__Pyx_RefNannySetupContext("guess_fwhm", 0);
/* "silx/math/fit/peaks.pyx":149
@@ -3146,7 +3183,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
* yfit = y - background
*
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_filters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_filters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3199,7 +3236,7 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
* # take the last one (if any)
* if not len(idx):
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_nonzero); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3215,41 +3252,11 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_3};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3264,9 +3271,9 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
* return 0
* posindex = idx[-1]
*/
- __pyx_t_6 = PyObject_Length(__pyx_v_idx); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 160, __pyx_L1_error)
- __pyx_t_7 = ((!(__pyx_t_6 != 0)) != 0);
- if (__pyx_t_7) {
+ __pyx_t_5 = PyObject_Length(__pyx_v_idx); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 160, __pyx_L1_error)
+ __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
+ if (__pyx_t_6) {
/* "silx/math/fit/peaks.pyx":161
* # take the last one (if any)
@@ -3335,22 +3342,22 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_height); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (__pyx_t_8) {
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (__pyx_t_7) {
} else {
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_6 = __pyx_t_7;
goto __pyx_L6_bool_binop_done;
}
- __pyx_t_5 = PyObject_RichCompare(__pyx_v_imin, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 167, __pyx_L1_error)
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 167, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_imin, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_6 = __pyx_t_7;
__pyx_L6_bool_binop_done:;
- if (!__pyx_t_7) break;
+ if (!__pyx_t_6) break;
/* "silx/math/fit/peaks.pyx":168
* imin = posindex
@@ -3359,10 +3366,10 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
* imax = posindex
* while yfit[imax] > 0.5 * height and imax < len(yfit) - 1:
*/
- __pyx_t_5 = __Pyx_PyInt_SubtractObjC(__pyx_v_imin, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF_SET(__pyx_v_imin, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_v_imin, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF_SET(__pyx_v_imin, __pyx_t_3);
+ __pyx_t_3 = 0;
}
/* "silx/math/fit/peaks.pyx":169
@@ -3383,30 +3390,30 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
*
*/
while (1) {
- __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_yfit, __pyx_v_imax); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_yfit, __pyx_v_imax); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_height); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- if (__pyx_t_8) {
+ if (__pyx_t_7) {
} else {
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_6 = __pyx_t_7;
goto __pyx_L10_bool_binop_done;
}
- __pyx_t_6 = PyObject_Length(__pyx_v_yfit); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 170, __pyx_L1_error)
- __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_6 - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_5 = PyObject_Length(__pyx_v_yfit); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_5 - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = PyObject_RichCompare(__pyx_v_imax, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_7 = __pyx_t_8;
+ __pyx_t_6 = __pyx_t_7;
__pyx_L10_bool_binop_done:;
- if (!__pyx_t_7) break;
+ if (!__pyx_t_6) break;
/* "silx/math/fit/peaks.pyx":171
* imax = posindex
@@ -3428,23 +3435,23 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
*
* return fwhm
*/
- __pyx_t_9 = __pyx_v_fwhm_min;
+ __pyx_t_8 = __pyx_v_fwhm_min;
__pyx_t_4 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- if (__pyx_t_7) {
- __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __pyx_t_3;
- __pyx_t_3 = 0;
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (__pyx_t_6) {
+ __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_4 = __pyx_t_2;
+ __pyx_t_2 = 0;
} else {
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
@@ -3480,7 +3487,6 @@ static PyObject *__pyx_pf_4silx_4math_3fit_5peaks_2guess_fwhm(CYTHON_UNUSED PyOb
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("silx.math.fit.peaks.guess_fwhm", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -3646,10 +3652,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -3695,7 +3701,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3727,7 +3733,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3760,13 +3766,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -3785,13 +3803,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -3804,8 +3822,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -3842,10 +3860,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -3864,21 +3882,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -3897,24 +3915,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -3945,7 +3963,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -4039,11 +4057,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -4116,7 +4134,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -4166,8 +4184,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -4221,7 +4239,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -4357,7 +4375,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -5073,7 +5091,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5126,7 +5144,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5602,7 +5620,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -5648,7 +5666,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -6770,7 +6788,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -7797,7 +7815,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8153,7 +8171,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8693,7 +8711,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -8807,7 +8825,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__16, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__14, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -9808,7 +9826,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9861,7 +9879,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -10212,9 +10230,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__19);
- __Pyx_GIVEREF(__pyx_slice__19);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__19);
+ __Pyx_INCREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__17);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -10247,7 +10265,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__20); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__17); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -10297,7 +10315,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -10387,9 +10405,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__21);
- __Pyx_GIVEREF(__pyx_slice__21);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__21);
+ __Pyx_INCREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__17);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -10513,7 +10531,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -12676,7 +12694,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -12729,7 +12747,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14610,7 +14628,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -14643,41 +14660,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14697,7 +14684,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -14724,7 +14710,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -14761,41 +14746,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -14836,7 +14791,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -15944,7 +15898,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -16025,8 +15979,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -16083,41 +16036,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -16140,48 +16063,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -16194,8 +16089,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -16242,7 +16137,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -16272,7 +16166,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -16343,41 +16236,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16405,7 +16268,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -17120,8 +16982,18 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
+ {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
{&__pyx_kp_s_15_05_2017, __pyx_k_15_05_2017, sizeof(__pyx_k_15_05_2017), 0, 0, 1, 0},
{&__pyx_n_s_ASCII, __pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 0, 1, 1},
{&__pyx_kp_s_Before_memory_allocation_error_h, __pyx_k_Before_memory_allocation_error_h, sizeof(__pyx_k_Before_memory_allocation_error_h), 0, 0, 1, 0},
@@ -17152,7 +17024,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
{&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
{&__pyx_n_s_View_MemoryView, __pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 0, 1, 1},
- {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
{&__pyx_n_s_allocate_buffer, __pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 0, 1, 1},
{&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
{&__pyx_n_s_authors, __pyx_k_authors, sizeof(__pyx_k_authors), 0, 0, 1, 1},
@@ -17272,7 +17143,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 103, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 109, __pyx_L1_error)
__pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 131, __pyx_L1_error)
@@ -17288,21 +17159,10 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/math/fit/peaks.pyx":80
- * copy=True,
- * dtype=numpy.float64,
- * order='C').reshape(-1) # <<<<<<<<<<<<<<
- * if debug:
- * debug = 1
- */
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 80, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple_);
- __Pyx_GIVEREF(__pyx_tuple_);
-
/* "silx/math/fit/peaks.pyx":109
* free(peaks_c)
* free(relevances_c)
@@ -17310,9 +17170,9 @@ static int __Pyx_InitCachedConstants(void) {
* # Special value -123456 is returned if the initial memory allocation
* #fails, before any search could be performed
*/
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Failed_to_reallocate_memory_for); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 109, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__3);
- __Pyx_GIVEREF(__pyx_tuple__3);
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Failed_to_reallocate_memory_for); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 109, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__2);
+ __Pyx_GIVEREF(__pyx_tuple__2);
/* "View.MemoryView":132
*
@@ -17321,9 +17181,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "View.MemoryView":135
*
@@ -17332,20 +17192,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "View.MemoryView":147
*
@@ -17354,9 +17203,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -17365,9 +17214,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -17376,9 +17225,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -17386,18 +17235,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -17406,9 +17255,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -17417,9 +17266,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -17428,9 +17277,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -17439,9 +17288,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -17450,12 +17299,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__16 = PyTuple_New(1); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
+ __pyx_tuple__14 = PyTuple_New(1); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__16, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ PyTuple_SET_ITEM(__pyx_tuple__14, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -17463,18 +17312,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -17483,9 +17332,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__19 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__19);
- __Pyx_GIVEREF(__pyx_slice__19);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -17494,9 +17343,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__20 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__20);
- __Pyx_GIVEREF(__pyx_slice__20);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -17505,9 +17354,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__21 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__21);
- __Pyx_GIVEREF(__pyx_slice__21);
+ __pyx_slice__17 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__17);
+ __Pyx_GIVEREF(__pyx_slice__17);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -17516,9 +17365,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -17526,18 +17375,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "silx/math/fit/peaks.pyx":45
*
@@ -17546,10 +17395,10 @@ static int __Pyx_InitCachedConstants(void) {
* begin_index=None, end_index=None,
* debug=False, relevance_info=False):
*/
- __pyx_tuple__25 = PyTuple_Pack(15, __pyx_n_s_y, __pyx_n_s_fwhm, __pyx_n_s_sensitivity, __pyx_n_s_begin_index, __pyx_n_s_end_index, __pyx_n_s_debug, __pyx_n_s_relevance_info, __pyx_n_s_i, __pyx_n_s_y_c, __pyx_n_s_peaks_c, __pyx_n_s_relevances_c, __pyx_n_s_n_peaks, __pyx_n_s_msg, __pyx_n_s_peaks, __pyx_n_s_relevances); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 45, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
- __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(7, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_peaks_pyx, __pyx_n_s_peak_search, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 45, __pyx_L1_error)
+ __pyx_tuple__21 = PyTuple_Pack(15, __pyx_n_s_y, __pyx_n_s_fwhm, __pyx_n_s_sensitivity, __pyx_n_s_begin_index, __pyx_n_s_end_index, __pyx_n_s_debug, __pyx_n_s_relevance_info, __pyx_n_s_i, __pyx_n_s_y_c, __pyx_n_s_peaks_c, __pyx_n_s_relevances_c, __pyx_n_s_n_peaks, __pyx_n_s_msg, __pyx_n_s_peaks, __pyx_n_s_relevances); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 45, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(7, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_peaks_pyx, __pyx_n_s_peak_search, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 45, __pyx_L1_error)
/* "silx/math/fit/peaks.pyx":134
*
@@ -17558,10 +17407,10 @@ static int __Pyx_InitCachedConstants(void) {
* """Return the full-width at half maximum for the largest peak in
* the data array.
*/
- __pyx_tuple__27 = PyTuple_Pack(11, __pyx_n_s_y, __pyx_n_s_fwhm_min, __pyx_n_s_background, __pyx_n_s_yfit, __pyx_n_s_maximum, __pyx_n_s_idx, __pyx_n_s_posindex, __pyx_n_s_height, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_fwhm); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
- __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_peaks_pyx, __pyx_n_s_guess_fwhm, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __pyx_tuple__23 = PyTuple_Pack(11, __pyx_n_s_y, __pyx_n_s_fwhm_min, __pyx_n_s_background, __pyx_n_s_yfit, __pyx_n_s_maximum, __pyx_n_s_idx, __pyx_n_s_posindex, __pyx_n_s_height, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_fwhm); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 134, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_fit_peaks_pyx, __pyx_n_s_guess_fwhm, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 134, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -17570,9 +17419,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "View.MemoryView":286
*
@@ -17581,9 +17430,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -17592,9 +17441,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "View.MemoryView":290
*
@@ -17603,9 +17452,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__32);
- __Pyx_GIVEREF(__pyx_tuple__32);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "View.MemoryView":291
*
@@ -17614,19 +17463,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__33);
- __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__34);
- __Pyx_GIVEREF(__pyx_tuple__34);
- __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -17634,7 +17483,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_float_3_5 = PyFloat_FromDouble(3.5); if (unlikely(!__pyx_float_3_5)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -17649,13 +17498,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -17778,15 +17627,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -17799,7 +17639,30 @@ __Pyx_PyMODINIT_FUNC PyInit_peaks(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -17812,8 +17675,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -17834,7 +17699,7 @@ bad:
}
-static int __pyx_pymod_exec_peaks(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_peaks(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -17844,7 +17709,11 @@ static int __pyx_pymod_exec_peaks(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_4[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'peaks' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -17859,6 +17728,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_peaks(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -17913,7 +17785,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__fit__peaks) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -18025,12 +17897,12 @@ if (!__Pyx_RefNanny) {
*
* cimport cython
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -18093,7 +17965,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_3);
@@ -18107,7 +17979,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_3);
@@ -18121,7 +17993,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_3);
@@ -18135,7 +18007,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_3);
@@ -18149,7 +18021,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_3);
@@ -18235,9 +18107,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_3);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.fit.peaks", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.fit.peaks", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.fit.peaks");
}
@@ -18258,9 +18130,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -18441,34 +18313,42 @@ bad:
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -18487,163 +18367,15 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
}
#endif
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
- #if PY_MAJOR_VERSION < 3
- if (likely(PyInt_CheckExact(op1))) {
- const long b = intval;
- long x;
- long a = PyInt_AS_LONG(op1);
- x = (long)((unsigned long)a - b);
- if (likely((x^a) >= 0 || (x^~b) >= 0))
- return PyInt_FromLong(x);
- return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
- }
- #endif
- #if CYTHON_USE_PYLONG_INTERNALS
- if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a, x;
-#ifdef HAVE_LONG_LONG
- const PY_LONG_LONG llb = intval;
- PY_LONG_LONG lla, llx;
-#endif
- const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
- } else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
- lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
- lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
- lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
- lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
- lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
-#ifdef HAVE_LONG_LONG
- } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
- lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
- goto long_long;
-#endif
- }
- CYTHON_FALLTHROUGH;
- default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
- }
- }
- x = a - b;
- return PyLong_FromLong(x);
-#ifdef HAVE_LONG_LONG
- long_long:
- llx = lla - llb;
- return PyLong_FromLongLong(llx);
-#endif
-
-
- }
- #endif
- if (PyFloat_CheckExact(op1)) {
- const long b = intval;
- double a = PyFloat_AS_DOUBLE(op1);
- double result;
- PyFPE_START_PROTECT("subtract", return NULL)
- result = ((double)a) - (double)b;
- PyFPE_END_PROTECT(result)
- return PyFloat_FromDouble(result);
- }
- return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
-}
-#endif
-
-/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
- PyErr_Format(PyExc_IndexError,
- "Out of bounds on buffer access (axis %d)", axis);
-}
-
-/* py_abs */
- #if CYTHON_USE_PYLONG_INTERNALS
-static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) {
- if (likely(Py_SIZE(n) == -1)) {
- return PyLong_FromLong(((PyLongObject*)n)->ob_digit[0]);
- }
-#if CYTHON_COMPILING_IN_CPYTHON
- {
- PyObject *copy = _PyLong_Copy((PyLongObject*)n);
- if (likely(copy)) {
- Py_SIZE(copy) = -(Py_SIZE(copy));
- }
- return copy;
- }
-#else
- return PyNumber_Negative(n);
-#endif
-}
-#endif
-
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -18651,16 +18383,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -18678,7 +18409,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -18778,8 +18509,37 @@ done:
#endif
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -18799,7 +18559,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -18838,8 +18598,223 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
+/* PyIntBinop */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_CheckExact(op1))) {
+ const long b = intval;
+ long x;
+ long a = PyInt_AS_LONG(op1);
+ x = (long)((unsigned long)a - b);
+ if (likely((x^a) >= 0 || (x^~b) >= 0))
+ return PyInt_FromLong(x);
+ return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+ }
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+ if (likely(PyLong_CheckExact(op1))) {
+ const long b = intval;
+ long a, x;
+#ifdef HAVE_LONG_LONG
+ const PY_LONG_LONG llb = intval;
+ PY_LONG_LONG lla, llx;
+#endif
+ const digit* digits = ((PyLongObject*)op1)->ob_digit;
+ const Py_ssize_t size = Py_SIZE(op1);
+ if (likely(__Pyx_sst_abs(size) <= 1)) {
+ a = likely(size) ? digits[0] : 0;
+ if (size == -1) a = -a;
+ } else {
+ switch (size) {
+ case -2:
+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+ a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+ lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ case 2:
+ if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
+ a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
+ lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ case -3:
+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+ a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+ lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ case 3:
+ if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
+ a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
+ lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ case -4:
+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+ a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+ lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
+ a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+ break;
+#ifdef HAVE_LONG_LONG
+ } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
+ lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
+ goto long_long;
+#endif
+ }
+ CYTHON_FALLTHROUGH;
+ default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
+ }
+ }
+ x = a - b;
+ return PyLong_FromLong(x);
+#ifdef HAVE_LONG_LONG
+ long_long:
+ llx = lla - llb;
+ return PyLong_FromLongLong(llx);
+#endif
+
+
+ }
+ #endif
+ if (PyFloat_CheckExact(op1)) {
+ const long b = intval;
+ double a = PyFloat_AS_DOUBLE(op1);
+ double result;
+ PyFPE_START_PROTECT("subtract", return NULL)
+ result = ((double)a) - (double)b;
+ PyFPE_END_PROTECT(result)
+ return PyFloat_FromDouble(result);
+ }
+ return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
+}
+#endif
+
+/* BufferIndexError */
+static void __Pyx_RaiseBufferIndexError(int axis) {
+ PyErr_Format(PyExc_IndexError,
+ "Out of bounds on buffer access (axis %d)", axis);
+}
+
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_NeObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
+ if (op1 == op2) {
+ Py_RETURN_FALSE;
+ }
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_CheckExact(op1))) {
+ const long b = intval;
+ long a = PyInt_AS_LONG(op1);
+ if (a != b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+ if (likely(PyLong_CheckExact(op1))) {
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
+ const digit* digits = ((PyLongObject*)op1)->ob_digit;
+ if (intval == 0) {
+ if (size != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_TRUE;
+ intval = -intval;
+ size = -size;
+ } else {
+ if (size <= 0)
+ Py_RETURN_TRUE;
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal != 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ #endif
+ if (PyFloat_CheckExact(op1)) {
+ const long b = intval;
+ double a = PyFloat_AS_DOUBLE(op1);
+ if ((double)a != (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ }
+ return (
+ PyObject_RichCompare(op1, op2, Py_NE));
+}
+
+/* py_abs */
+#if CYTHON_USE_PYLONG_INTERNALS
+static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) {
+ if (likely(Py_SIZE(n) == -1)) {
+ return PyLong_FromLong(((PyLongObject*)n)->ob_digit[0]);
+ }
+#if CYTHON_COMPILING_IN_CPYTHON
+ {
+ PyObject *copy = _PyLong_Copy((PyLongObject*)n);
+ if (likely(copy)) {
+ Py_SIZE(copy) = -(Py_SIZE(copy));
+ }
+ return copy;
+ }
+#else
+ return PyNumber_Negative(n);
+#endif
+}
+#endif
+
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -18863,7 +18838,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -19021,9 +18996,8 @@ bad:
}
#endif
-/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -19031,89 +19005,66 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* SetItemInt */
- static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
+static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
int r;
if (!j) return -1;
r = PyObject_SetItem(o, j, v);
@@ -19125,7 +19076,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
- if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
PyObject* old = PyList_GET_ITEM(o, n);
Py_INCREF(v);
PyList_SET_ITEM(o, n, v);
@@ -19150,10 +19101,11 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
#else
#if CYTHON_COMPILING_IN_PYPY
- if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
+ if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
- if (is_list || PySequence_Check(o)) {
+ if (is_list || PySequence_Check(o))
#endif
+ {
return PySequence_SetItem(o, i, v);
}
#endif
@@ -19161,7 +19113,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -19299,7 +19251,7 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -19314,7 +19266,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -19332,7 +19284,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -19348,7 +19300,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -19356,7 +19308,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -19386,7 +19338,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -19415,7 +19367,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -19537,7 +19489,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -19558,7 +19510,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -19605,7 +19557,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -19684,6 +19636,9 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -19704,7 +19659,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -19712,7 +19667,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -19725,7 +19680,7 @@ return_ne:
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -19758,7 +19713,7 @@ return_ne:
}
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -19783,7 +19738,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -19798,25 +19753,25 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -19828,13 +19783,29 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -19846,13 +19817,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -19868,11 +19840,12 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -19905,13 +19878,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -19938,16 +19914,17 @@ bad:
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -19972,7 +19949,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -20019,7 +19996,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -20037,7 +20014,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -20092,14 +20069,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -20109,12 +20114,12 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -20122,7 +20127,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -20164,7 +20169,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -20178,7 +20183,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -20196,7 +20201,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -20236,7 +20241,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -20246,7 +20251,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -20264,7 +20269,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -20340,8 +20345,8 @@ GOOD:
}
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -20354,7 +20359,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -20371,7 +20378,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -20380,7 +20387,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -20460,7 +20467,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -20566,8 +20573,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -20589,7 +20596,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -20625,7 +20632,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -20638,7 +20645,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewDtypeToObject */
- static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
+static CYTHON_INLINE PyObject *__pyx_memview_get_double(const char *itemp) {
return (PyObject *) PyFloat_FromDouble(*(double *) itemp);
}
static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *obj) {
@@ -20650,7 +20657,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -20672,8 +20679,8 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -20703,8 +20710,8 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -20734,7 +20741,7 @@ static CYTHON_INLINE int __pyx_memview_set_double(const char *itemp, PyObject *o
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -20801,8 +20808,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -20990,8 +20997,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -21179,8 +21186,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -21368,7 +21375,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -21379,7 +21386,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -21881,7 +21888,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -21922,7 +21929,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -22104,7 +22111,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -22127,7 +22134,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -22143,7 +22150,7 @@ __pyx_fail:
}
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -22252,6 +22259,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -22329,7 +22343,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/marchingcubes.cpp b/silx/math/marchingcubes.cpp
index 277813f..56c0675 100644
--- a/silx/math/marchingcubes.cpp
+++ b/silx/math/marchingcubes.cpp
@@ -1,24 +1,24 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h",
"silx/math/marchingcubes/mc.hpp"
- ],
+ ],
"include_dirs": [
- "silx/math/marchingcubes",
- "/usr/lib/python2.7/dist-packages/numpy/core/include"
- ],
- "language": "c++",
- "name": "silx.math.marchingcubes",
+ "silx/math/marchingcubes",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include"
+ ],
+ "language": "c++",
+ "name": "silx.math.marchingcubes",
"sources": [
- "silx/math/marchingcubes.pyx",
+ "silx/math/marchingcubes.pyx",
"silx/math/marchingcubes/mc_lut.cpp"
]
- },
+ },
"module_name": "silx.math.marchingcubes"
}
END: Cython Metadata */
@@ -30,7 +30,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -101,6 +102,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -138,6 +143,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -191,11 +200,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -345,6 +360,9 @@ class __Pyx_FakeReference {
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -358,15 +376,40 @@ class __Pyx_FakeReference {
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -474,8 +517,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -640,6 +683,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -698,6 +744,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -778,7 +825,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -951,7 +998,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -960,7 +1007,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -969,7 +1016,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -978,7 +1025,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -987,7 +1034,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -996,7 +1043,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1005,7 +1052,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1014,7 +1061,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1023,7 +1070,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1032,7 +1079,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1041,7 +1088,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1050,7 +1097,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1059,7 +1106,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1068,7 +1115,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1077,7 +1124,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1086,7 +1133,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1095,7 +1142,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1104,7 +1151,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1113,7 +1160,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1122,7 +1169,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1131,7 +1178,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1171,7 +1218,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1180,7 +1227,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1189,7 +1236,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1198,7 +1245,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1469,6 +1516,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyObjectCall.proto */
@@ -1478,6 +1537,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
@@ -1486,13 +1548,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-/* PyIntBinop.proto */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
-#else
-#define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
- PyObject_RichCompare(op1, op2, Py_EQ)
- #endif
+/* PyIntCompare.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -1541,7 +1598,25 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* BufferIndexError.proto */
static void __Pyx_RaiseBufferIndexError(int axis);
@@ -1595,6 +1670,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1803,6 +1883,17 @@ static int __Pyx_setup_reduce(PyObject* type_obj);
/* SetVTable.proto */
static int __Pyx_SetVtable(PyObject *dict, void *vtable);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
@@ -2066,21 +2157,6 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_flo
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2273,6 +2349,7 @@ static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_get_vertices[] = "get_vertices";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_stringsource[] = "stringsource";
+static const char __pyx_k_MarchingCubes[] = "MarchingCubes";
static const char __pyx_k_pyx_getbuffer[] = "__pyx_getbuffer";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_invert_normals[] = "invert_normals";
@@ -2337,6 +2414,7 @@ static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte;
static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr;
static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d;
static PyObject *__pyx_n_s_MIT;
+static PyObject *__pyx_n_s_MarchingCubes;
static PyObject *__pyx_n_s_MemoryError;
static PyObject *__pyx_kp_s_MemoryView_of_r_at_0x_x;
static PyObject *__pyx_kp_s_MemoryView_of_r_object;
@@ -2519,9 +2597,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__32;
-static PyObject *__pyx_slice__33;
-static PyObject *__pyx_slice__34;
+static PyObject *__pyx_slice__27;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2539,21 +2615,16 @@ static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
-static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
+static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__33;
+static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
-static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__39;
-static PyObject *__pyx_tuple__40;
-static PyObject *__pyx_tuple__41;
-static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__43;
-static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__37;
/* Late includes */
/* "silx/math/marchingcubes.pyx":115
@@ -2686,7 +2757,6 @@ static int __pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes___cinit__(struct
int __pyx_t_6;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__cinit__", 0);
/* "silx/math/marchingcubes.pyx":117
@@ -2784,38 +2854,10 @@ static int __pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes___cinit__(struct
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data};
- __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_data};
- __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_4);
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_INCREF(__pyx_v_data);
- __Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_data);
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -2843,7 +2885,6 @@ static int __pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes___cinit__(struct
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("silx.math.marchingcubes.MarchingCubes.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
@@ -2962,12 +3003,9 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_4__getitem
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
@@ -3016,12 +3054,9 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_4__getitem
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
@@ -3070,12 +3105,9 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_4__getitem
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else {
- __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
@@ -3175,7 +3207,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_6process(s
* assert data.ndim == 3
* cdef float[:] c_data = numpy.ravel(data)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3226,7 +3258,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_6process(s
* cdef unsigned int depth, height, width
*
*/
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -3241,38 +3273,10 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_6process(s
__Pyx_DECREF_SET(__pyx_t_1, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_data};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_data};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_INCREF(__pyx_v_data);
- __Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_data);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 155, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -3476,7 +3480,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
* assert slice0.ndim == 2
* slice1 = numpy.ascontiguousarray(slice1, dtype='=f4')
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3527,7 +3531,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
* assert slice1.ndim == 2
*
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
@@ -3640,7 +3644,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
* cdef float[:] c_slice1 = numpy.ravel(slice1)
*
*/
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -3655,38 +3659,10 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_slice0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_slice0};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_slice0};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_INCREF(__pyx_v_slice0);
- __Pyx_GIVEREF(__pyx_v_slice0);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_slice0);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_slice0) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_slice0);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 179, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3701,54 +3677,26 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
*
* if self.c_mc.depth == 0:
*/
- __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 180, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = NULL;
- if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
- __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+ if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
+ __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_4, function);
- }
- }
- if (!__pyx_t_3) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_slice1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_slice1};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_slice1};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
- __Pyx_INCREF(__pyx_v_slice1);
- __Pyx_GIVEREF(__pyx_v_slice1);
- PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_slice1);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_slice1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_slice1);
+ __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_float(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 180, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_c_slice1 = __pyx_t_6;
@@ -3774,16 +3722,16 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
*/
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_7 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyInt_As_unsigned_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_8 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_8 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_self->c_mc->set_slice_size(__pyx_t_7, __pyx_t_8);
@@ -3808,16 +3756,16 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->c_mc->height); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 186, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 186, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_5)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 186, __pyx_L1_error)
@@ -3834,18 +3782,18 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_8process_s
*/
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_slice1, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->c_mc->width); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->c_mc->width); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 187, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 187, __pyx_L1_error)
@@ -4353,7 +4301,6 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_14get_vert
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
__Pyx_RefNannySetupContext("get_vertices", 0);
/* "silx/math/marchingcubes.pyx":233
@@ -4364,7 +4311,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_14get_vert
* def get_normals(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -4381,41 +4328,11 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_14get_vert
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -4441,7 +4358,6 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_14get_vert
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("silx.math.marchingcubes.MarchingCubes.get_vertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4479,7 +4395,6 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_16get_norm
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
__Pyx_RefNannySetupContext("get_normals", 0);
/* "silx/math/marchingcubes.pyx":240
@@ -4490,7 +4405,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_16get_norm
* def get_indices(self):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
@@ -4507,46 +4422,16 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_16get_norm
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_4) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_2};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
- __Pyx_GIVEREF(__pyx_t_2);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
- __pyx_t_2 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = __pyx_t_1;
@@ -4567,7 +4452,6 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_16get_norm
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("silx.math.marchingcubes.MarchingCubes.get_normals", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -4615,7 +4499,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_18get_indi
* dtype=numpy.uint32).reshape(-1, 3)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -4635,7 +4519,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_18get_indi
*/
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
@@ -4663,7 +4547,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_18get_indi
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_5;
@@ -4725,7 +4609,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_20__reduce
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -4779,7 +4663,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_22__setsta
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -4802,7 +4686,7 @@ static PyObject *__pyx_pf_4silx_4math_13marchingcubes_13MarchingCubes_22__setsta
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -4840,8 +4724,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -4850,7 +4735,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -4859,7 +4744,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -4868,7 +4753,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -4877,11 +4762,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -4891,53 +4776,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 229, __pyx_L1_error)
+ __PYX_ERR(2, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -4947,49 +4832,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 233, __pyx_L1_error)
+ __PYX_ERR(2, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -4998,7 +4883,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -5007,7 +4892,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -5017,7 +4902,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -5026,7 +4911,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -5035,7 +4920,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -5047,7 +4932,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -5056,7 +4941,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -5066,7 +4951,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -5076,7 +4961,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -5086,7 +4971,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -5097,7 +4982,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -5106,7 +4991,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -5115,7 +5000,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -5124,28 +5009,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -5158,7 +5044,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -5168,7 +5054,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -5178,7 +5064,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -5198,7 +5084,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -5215,7 +5101,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -5224,20 +5110,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 263, __pyx_L1_error)
+ __PYX_ERR(2, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -5246,7 +5132,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -5257,206 +5143,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 282, __pyx_L1_error)
+ __PYX_ERR(2, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -5465,7 +5351,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -5475,7 +5361,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -5484,7 +5370,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -5494,7 +5380,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -5503,7 +5389,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -5512,17 +5398,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(2, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -5532,7 +5418,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -5545,7 +5431,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -5564,7 +5450,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -5588,7 +5474,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -5598,7 +5484,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -5607,7 +5493,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -5616,7 +5502,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -5626,7 +5512,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -5635,7 +5521,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -5644,7 +5530,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -5656,7 +5542,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -5670,7 +5556,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -5678,13 +5564,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -5703,7 +5589,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -5717,7 +5603,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -5725,13 +5611,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -5750,7 +5636,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -5764,7 +5650,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -5772,13 +5658,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -5797,7 +5683,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -5811,7 +5697,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -5819,13 +5705,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -5844,7 +5730,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -5858,7 +5744,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -5866,13 +5752,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -5891,7 +5777,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -5905,7 +5791,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -5915,7 +5801,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -5927,7 +5813,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -5936,7 +5822,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -5950,7 +5836,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -5965,7 +5851,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -5994,7 +5880,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -6003,7 +5889,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -6012,7 +5898,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -6021,21 +5907,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(2, 805, __pyx_L1_error)
+ __PYX_ERR(2, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -6044,15 +5930,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(2, 806, __pyx_L1_error)
+ __PYX_ERR(2, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -6065,7 +5951,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(2, 807, __pyx_L1_error)
+ __PYX_ERR(2, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -6073,51 +5959,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 810, __pyx_L1_error)
+ __PYX_ERR(2, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -6126,7 +6012,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -6146,7 +6032,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -6163,7 +6049,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -6172,20 +6058,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(2, 814, __pyx_L1_error)
+ __PYX_ERR(2, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -6194,7 +6080,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -6202,15 +6088,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -6219,7 +6105,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -6228,7 +6114,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -6239,7 +6125,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -6249,7 +6135,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -6259,19 +6145,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -6281,20 +6167,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(2, 834, __pyx_L1_error)
+ __PYX_ERR(2, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -6303,252 +6189,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -6557,18 +6443,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -6577,18 +6463,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -6597,25 +6483,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -6623,18 +6509,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(2, 855, __pyx_L1_error)
+ __PYX_ERR(2, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -6643,7 +6529,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -6653,7 +6539,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -6661,12 +6547,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -6676,7 +6562,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -6686,7 +6572,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -6711,166 +6597,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -6880,7 +6720,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -6901,7 +6741,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -6917,16 +6757,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -6940,7 +6780,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -6950,28 +6790,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1000, __pyx_L5_except_error)
+ __PYX_ERR(2, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -6986,7 +6826,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -7009,7 +6849,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -7030,7 +6870,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7046,16 +6886,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7069,7 +6909,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -7079,28 +6919,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1006, __pyx_L5_except_error)
+ __PYX_ERR(2, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7115,7 +6955,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -7138,7 +6978,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -7159,7 +6999,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7175,16 +7015,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7198,7 +7038,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -7207,26 +7047,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(2, 1012, __pyx_L5_except_error)
+ __PYX_ERR(2, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -7241,7 +7081,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -7528,10 +7368,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -7577,7 +7417,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7609,7 +7449,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -7642,13 +7482,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -7667,13 +7519,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(1, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -7686,8 +7538,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(1, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -7724,10 +7576,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -7746,21 +7598,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -7779,24 +7631,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 152, __pyx_L1_error)
@@ -7827,7 +7679,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -7921,11 +7773,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(1, 163, __pyx_L1_error)
@@ -7998,7 +7850,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -8048,8 +7900,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(1, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -8103,7 +7955,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -8239,7 +8091,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8955,7 +8807,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9008,7 +8860,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -9484,7 +9336,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -9530,7 +9382,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -10652,7 +10504,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -11679,7 +11531,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -12035,7 +11887,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12575,7 +12427,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -12689,7 +12541,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__29, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__24, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -13690,7 +13542,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -13743,7 +13595,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -14094,9 +13946,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__32);
- __Pyx_GIVEREF(__pyx_slice__32);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__32);
+ __Pyx_INCREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__27);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error)
@@ -14129,7 +13981,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__33); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__27); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -14179,7 +14031,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -14269,9 +14121,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__34);
- __Pyx_GIVEREF(__pyx_slice__34);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__34);
+ __Pyx_INCREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__27);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 691, __pyx_L1_error)
@@ -14395,7 +14247,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -16558,7 +16410,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16611,7 +16463,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18492,7 +18344,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -18525,41 +18376,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18579,7 +18400,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -18606,7 +18426,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -18643,41 +18462,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -18718,7 +18507,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -19826,7 +19614,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -19907,8 +19695,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -19965,41 +19752,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20022,48 +19779,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -20076,8 +19805,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -20124,7 +19853,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -20154,7 +19882,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -20225,41 +19952,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20287,7 +19984,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -20353,7 +20049,7 @@ static PyObject *__pyx_getprop_4silx_4math_13marchingcubes_13MarchingCubes_inver
static PyMethodDef __pyx_methods_4silx_4math_13marchingcubes_MarchingCubes[] = {
{"process", (PyCFunction)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_7process, METH_O, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_6process},
- {"process_slice", (PyCFunction)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_9process_slice, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_8process_slice},
+ {"process_slice", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_9process_slice, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_8process_slice},
{"finish_process", (PyCFunction)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_11finish_process, METH_NOARGS, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_10finish_process},
{"reset", (PyCFunction)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_13reset, METH_NOARGS, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_12reset},
{"get_vertices", (PyCFunction)__pyx_pw_4silx_4math_13marchingcubes_13MarchingCubes_15get_vertices, METH_NOARGS, __pyx_doc_4silx_4math_13marchingcubes_13MarchingCubes_14get_vertices},
@@ -21155,6 +20851,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_16_08_2017, __pyx_k_16_08_2017, sizeof(__pyx_k_16_08_2017), 0, 0, 1, 0},
@@ -21176,6 +20881,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0},
{&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0},
{&__pyx_n_s_MIT, __pyx_k_MIT, sizeof(__pyx_k_MIT), 0, 0, 1, 1},
+ {&__pyx_n_s_MarchingCubes, __pyx_k_MarchingCubes, sizeof(__pyx_k_MarchingCubes), 0, 0, 1, 1},
{&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
{&__pyx_kp_s_MemoryView_of_r_at_0x_x, __pyx_k_MemoryView_of_r_at_0x_x, sizeof(__pyx_k_MemoryView_of_r_at_0x_x), 0, 0, 1, 0},
{&__pyx_kp_s_MemoryView_of_r_object, __pyx_k_MemoryView_of_r_object, sizeof(__pyx_k_MemoryView_of_r_object), 0, 0, 1, 0},
@@ -21280,13 +20986,13 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
__pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 141, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
- __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 229, __pyx_L1_error)
- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(2, 242, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1000, __pyx_L1_error)
+ __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 272, __pyx_L1_error)
+ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(2, 285, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1038, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 147, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 150, __pyx_L1_error)
__pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 399, __pyx_L1_error)
@@ -21296,7 +21002,7 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
@@ -21340,18 +21046,18 @@ static int __Pyx_InitCachedConstants(void) {
*
* def get_indices(self):
*/
- __pyx_tuple__4 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_int_3); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 240, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__4);
- __Pyx_GIVEREF(__pyx_tuple__4);
+ __pyx_tuple__3 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_int_3); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 240, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "silx/math/marchingcubes.pyx":246
* """
* return numpy.array(self.c_mc.indices,
* dtype=numpy.uint32).reshape(-1, 3) # <<<<<<<<<<<<<<
*/
- __pyx_tuple__5 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_int_3); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 246, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__5);
- __Pyx_GIVEREF(__pyx_tuple__5);
+ __pyx_tuple__3 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_int_3); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 246, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__3);
+ __Pyx_GIVEREF(__pyx_tuple__3);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -21359,115 +21065,115 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__6);
- __Pyx_GIVEREF(__pyx_tuple__6);
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__4);
+ __Pyx_GIVEREF(__pyx_tuple__4);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__7);
- __Pyx_GIVEREF(__pyx_tuple__7);
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__5);
+ __Pyx_GIVEREF(__pyx_tuple__5);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 229, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__8);
- __Pyx_GIVEREF(__pyx_tuple__8);
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(2, 272, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__6);
+ __Pyx_GIVEREF(__pyx_tuple__6);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 233, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__9);
- __Pyx_GIVEREF(__pyx_tuple__9);
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(2, 276, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__7);
+ __Pyx_GIVEREF(__pyx_tuple__7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 263, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__10);
- __Pyx_GIVEREF(__pyx_tuple__10);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 306, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(2, 810, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__11);
- __Pyx_GIVEREF(__pyx_tuple__11);
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(2, 856, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__9);
+ __Pyx_GIVEREF(__pyx_tuple__9);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(2, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(2, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__8);
+ __Pyx_GIVEREF(__pyx_tuple__8);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(2, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(2, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(2, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(2, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__11);
+ __Pyx_GIVEREF(__pyx_tuple__11);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(2, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(2, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
/* "View.MemoryView":132
*
@@ -21476,9 +21182,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
/* "View.MemoryView":135
*
@@ -21487,20 +21193,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":147
*
@@ -21509,9 +21204,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -21520,9 +21215,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -21531,9 +21226,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -21541,18 +21236,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -21561,9 +21256,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -21572,9 +21267,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -21583,9 +21278,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(1, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -21594,9 +21289,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -21605,12 +21300,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__29 = PyTuple_New(1); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
+ __pyx_tuple__24 = PyTuple_New(1); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(1, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__29, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ PyTuple_SET_ITEM(__pyx_tuple__24, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -21618,18 +21313,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -21638,9 +21333,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) __PYX_ERR(1, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__32);
- __Pyx_GIVEREF(__pyx_slice__32);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(1, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -21649,9 +21344,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(1, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__33);
- __Pyx_GIVEREF(__pyx_slice__33);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(1, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -21660,9 +21355,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) __PYX_ERR(1, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__34);
- __Pyx_GIVEREF(__pyx_slice__34);
+ __pyx_slice__27 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(1, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__27);
+ __Pyx_GIVEREF(__pyx_slice__27);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -21671,9 +21366,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -21681,18 +21376,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__29);
+ __Pyx_GIVEREF(__pyx_tuple__29);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "View.MemoryView":285
* return self.name
@@ -21701,9 +21396,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "View.MemoryView":286
*
@@ -21712,9 +21407,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__39);
- __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -21723,9 +21418,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
+ __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
/* "View.MemoryView":290
*
@@ -21734,9 +21429,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__41);
- __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__34);
+ __Pyx_GIVEREF(__pyx_tuple__34);
/* "View.MemoryView":291
*
@@ -21745,19 +21440,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
+ __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__43);
- __Pyx_GIVEREF(__pyx_tuple__43);
- __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__36);
+ __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(1, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -21765,7 +21460,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
__pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -21778,13 +21473,13 @@ static int __Pyx_InitGlobals(void) {
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -21834,7 +21529,7 @@ static int __Pyx_modinit_type_init_code(void) {
}
}
#endif
- if (PyObject_SetAttrString(__pyx_m, "MarchingCubes", (PyObject *)&__pyx_type_4silx_4math_13marchingcubes_MarchingCubes) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MarchingCubes, (PyObject *)&__pyx_type_4silx_4math_13marchingcubes_MarchingCubes) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4silx_4math_13marchingcubes_MarchingCubes) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
__pyx_ptype_4silx_4math_13marchingcubes_MarchingCubes = &__pyx_type_4silx_4math_13marchingcubes_MarchingCubes;
__pyx_vtabptr_array = &__pyx_vtable_array;
@@ -21889,23 +21584,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(2, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(2, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(2, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(2, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(2, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -21940,15 +21649,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -21961,7 +21661,30 @@ __Pyx_PyMODINIT_FUNC PyInit_marchingcubes(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -21974,8 +21697,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -21996,7 +21721,7 @@ bad:
}
-static int __pyx_pymod_exec_marchingcubes(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_marchingcubes(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -22005,7 +21730,11 @@ static int __pyx_pymod_exec_marchingcubes(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_3[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'marchingcubes' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -22020,6 +21749,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_marchingcubes(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -22074,7 +21806,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__marchingcubes) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -22213,7 +21945,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_1);
@@ -22227,7 +21959,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_1);
@@ -22241,7 +21973,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_1);
@@ -22255,7 +21987,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_1);
@@ -22269,7 +22001,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1);
@@ -22353,9 +22085,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_1);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.marchingcubes", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.marchingcubes", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.marchingcubes");
}
@@ -22376,9 +22108,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -22574,7 +22306,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -22592,7 +22324,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -22608,7 +22340,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -22616,7 +22348,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -22653,7 +22385,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -22661,16 +22393,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
-#include "frameobject.h"
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -22688,7 +22419,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -22808,6 +22539,35 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
}
#endif
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
@@ -22868,9 +22628,8 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
}
#endif
-/* PyIntBinop */
-#if !CYTHON_COMPILING_IN_PYPY
-static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
+/* PyIntCompare */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
if (op1 == op2) {
Py_RETURN_TRUE;
}
@@ -22878,86 +22637,63 @@ static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
if (likely(PyInt_CheckExact(op1))) {
const long b = intval;
long a = PyInt_AS_LONG(op1);
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
#if CYTHON_USE_PYLONG_INTERNALS
if (likely(PyLong_CheckExact(op1))) {
- const long b = intval;
- long a;
+ int unequal;
+ unsigned long uintval;
+ Py_ssize_t size = Py_SIZE(op1);
const digit* digits = ((PyLongObject*)op1)->ob_digit;
- const Py_ssize_t size = Py_SIZE(op1);
- if (likely(__Pyx_sst_abs(size) <= 1)) {
- a = likely(size) ? digits[0] : 0;
- if (size == -1) a = -a;
+ if (intval == 0) {
+ if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
+ } else if (intval < 0) {
+ if (size >= 0)
+ Py_RETURN_FALSE;
+ intval = -intval;
+ size = -size;
} else {
- switch (size) {
- case -2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 2:
- if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
- a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 3:
- if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
- a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case -4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- case 4:
- if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
- a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
- break;
- }
- CYTHON_FALLTHROUGH;
- #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
- default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
- #else
- default: Py_RETURN_FALSE;
- #endif
- }
- }
- if (a == b) {
- Py_RETURN_TRUE;
- } else {
+ if (size <= 0)
Py_RETURN_FALSE;
- }
+ }
+ uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 4)) {
+ unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 3)) {
+ unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 2)) {
+ unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+ if (uintval >> (PyLong_SHIFT * 1)) {
+ unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+ | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+ } else
+#endif
+ unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+ if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
#endif
if (PyFloat_CheckExact(op1)) {
const long b = intval;
double a = PyFloat_AS_DOUBLE(op1);
- if ((double)a == (double)b) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
+ if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
}
- return PyObject_RichCompare(op1, op2, Py_EQ);
+ return (
+ PyObject_RichCompare(op1, op2, Py_EQ));
}
-#endif
/* PyObjectCallNoArg */
#if CYTHON_COMPILING_IN_CPYTHON
@@ -22968,10 +22704,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
}
#endif
#ifdef __Pyx_CyFunction_USED
- if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {
+ if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
- if (likely(PyCFunction_Check(func))) {
+ if (likely(PyCFunction_Check(func)))
#endif
+ {
if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
return __Pyx_PyObject_CallMethO(func, NULL);
}
@@ -22981,7 +22718,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -23005,7 +22742,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -23164,40 +22901,48 @@ bad:
#endif
/* GetModuleGlobalName */
- static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* BufferIndexError */
- static void __Pyx_RaiseBufferIndexError(int axis) {
+static void __Pyx_RaiseBufferIndexError(int axis) {
PyErr_Format(PyExc_IndexError,
"Out of bounds on buffer access (axis %d)", axis);
}
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -23335,16 +23080,21 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -23354,25 +23104,25 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -23384,13 +23134,29 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -23402,13 +23168,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -23424,7 +23191,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -23449,11 +23216,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -23486,13 +23254,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -23519,7 +23290,7 @@ bad:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -23540,7 +23311,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -23587,7 +23358,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -23666,6 +23437,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -23686,7 +23460,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -23694,7 +23468,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -23707,7 +23481,7 @@ return_ne:
}
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -23736,7 +23510,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
#endif
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -23769,7 +23543,7 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -23784,16 +23558,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -23818,7 +23593,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -23865,7 +23640,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -23883,7 +23658,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -23938,14 +23713,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -23955,7 +23758,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -24077,12 +23880,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -24090,7 +23893,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -24132,7 +23935,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -24146,7 +23949,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -24164,7 +23967,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -24204,7 +24007,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -24214,7 +24017,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -24290,7 +24093,7 @@ GOOD:
}
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -24307,9 +24110,70 @@ bad:
return -1;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -24322,7 +24186,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -24339,7 +24205,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -24348,7 +24214,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -24428,7 +24294,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -24536,8 +24402,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -24559,7 +24425,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -24595,7 +24461,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -24608,8 +24474,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -24639,7 +24505,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -24661,8 +24527,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
- const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
+ const unsigned int neg_one = (unsigned int) ((unsigned int) 0 - (unsigned int) 1), const_zero = (unsigned int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(unsigned int) < sizeof(long)) {
@@ -24692,7 +24558,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -24712,7 +24578,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -24847,7 +24713,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -24867,7 +24733,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+#if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -25002,8 +24868,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -25033,8 +24899,8 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -25064,7 +24930,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -25131,8 +24997,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
- const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
+static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
+ const unsigned int neg_one = (unsigned int) ((unsigned int) 0 - (unsigned int) 1), const_zero = (unsigned int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -25320,8 +25186,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -25509,8 +25375,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
- const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
+ const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -25698,8 +25564,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -25887,8 +25753,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -26076,7 +25942,7 @@ raise_neg_overflow:
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -26087,7 +25953,7 @@ raise_neg_overflow:
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -26589,7 +26455,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -26630,7 +26496,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -26812,7 +26678,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_ds_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_STRIDED) };
@@ -26835,7 +26701,7 @@ __pyx_fail:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -26850,91 +26716,8 @@ __pyx_fail:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -27043,6 +26826,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -27120,7 +26910,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/medianfilter/include/median_filter.hpp b/silx/math/medianfilter/include/median_filter.hpp
index 78d6c5a..b4d953a 100644
--- a/silx/math/medianfilter/include/median_filter.hpp
+++ b/silx/math/medianfilter/include/median_filter.hpp
@@ -1,6 +1,6 @@
/*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,70 +33,74 @@
#include <algorithm>
#include <signal.h>
#include <iostream>
+#include <cmath>
+#include <cfloat>
+
+/* Needed for pytohn2.7 on Windows... */
+#ifndef INFINITY
+#define INFINITY (DBL_MAX+DBL_MAX)
+#endif
+
+#ifndef NAN
+#define NAN (INFINITY-INFINITY)
+#endif
// Modes for the median filter
enum MODE{
NEAREST=0,
REFLECT=1,
MIRROR=2,
- SHRINK=3
+ SHRINK=3,
+ CONSTANT=4,
};
-// Simple function browsing a deque and registring the min and max values
+// Simple function browsing a deque and registering the min and max values
// and if those values are unique or not
template<typename T>
-void getMinMax(std::vector<const T*>& v, T& min, T&max,
- typename std::vector<const T*>::const_iterator end){
+void getMinMax(std::vector<T>& v, T& min, T&max,
+ typename std::vector<T>::const_iterator end){
// init min and max values
- typename std::vector<const T*>::const_iterator it = v.begin();
+ typename std::vector<T>::const_iterator it = v.begin();
if (v.size() == 0){
raise(SIGINT);
}else{
- min = max = *(*it);
+ min = max = *it;
}
it++;
// Browse all the deque
while(it!=end){
// check if repeated (should always be before min/max setting)
- if(*(*it) > max) max = *(*it);
- if(*(*it) < min) min = *(*it);
+ T value = *it;
+ if(value > max) max = value;
+ if(value < min) min = value;
it++;
}
}
-template<typename T>
-bool cmp(const T* a, const T* b){
- return *a < *b;
-}
// apply the median filter only on limited part of the vector
+// In case of even number of elements (either due to NaNs in the window
+// or for image borders in shrink mode):
+// the highest of the 2 central values is returned
template<typename T>
-const T* median(std::vector<const T*>& v, int window_size) {
- std::nth_element(v.begin(), v.begin() + window_size/2, v.begin()+window_size, cmp<T>);
- return v[window_size/2];
+inline T median(std::vector<T>& v, int window_size) {
+ int pivot = window_size / 2;
+ std::nth_element(v.begin(), v.begin() + pivot, v.begin()+window_size);
+ return v[pivot];
}
-template<typename T>
-void print_window(std::vector<const T*>& v,
- typename std::vector<const T*>::const_iterator end){
- typename std::vector<const T*>::const_iterator it;
- for(it = v.begin(); it != end; ++it){
- std::cout << *(*it) << " ";
- }
- std::cout << std::endl;
-}
// return the index into 0, (length_max - 1) in reflect mode
-int reflect(int index, int length_max){
+inline int reflect(int index, int length_max){
int res = index;
- // if the index is negative get the positive symetrical value
+ // if the index is negative get the positive symmetrical value
if(res < 0){
res += 1;
res = -res;
}
- // then apply the reflect algorithm. Frequence is 2 max length
+ // then apply the reflect algorithm. Frequency is 2 max length
res = res % (2*length_max);
if(res >= length_max){
res = 2*length_max - res -1;
@@ -106,13 +110,12 @@ int reflect(int index, int length_max){
}
// return the index into 0, (length_max - 1) in mirror mode
-int mirror(int index, int length_max){
+inline int mirror(int index, int length_max){
int res = index;
- // if the index is negative get the positive symetrical value
+ // if the index is negative get the positive symmetrical value
if(res < 0){
res = -res;
}
-
int rightLimit = length_max -1;
// apply the redundancy each two right limit
res = res % (2*rightLimit);
@@ -126,7 +129,7 @@ int mirror(int index, int length_max){
// Browse the column of pixel_x
template<typename T>
void median_filter(
- const T* input,
+ const T* input,
T* output,
int* kernel_dim, // two values : 0:width, 1:height
int* image_dim, // two values : 0:width, 1:height
@@ -134,7 +137,8 @@ void median_filter(
int x_pixel_range_min,
int x_pixel_range_max,
bool conditional,
- int pMode){
+ int pMode,
+ T cval) {
assert(kernel_dim[0] > 0);
assert(kernel_dim[1] > 0);
@@ -156,72 +160,109 @@ void median_filter(
MODE mode = static_cast<MODE>(pMode);
// init buffer
- std::vector<const T*> window_values(kernel_dim[0]*kernel_dim[1]);
+ std::vector<T> window_values(kernel_dim[0]*kernel_dim[1]);
+
+ bool not_horizontal_border = (y_pixel >= halfKernel_y && y_pixel < image_dim[0] - halfKernel_y);
for(int x_pixel=x_pixel_range_min; x_pixel <= x_pixel_range_max; x_pixel ++ ){
- typename std::vector<const T*>::iterator it = window_values.begin();
+ typename std::vector<T>::iterator it = window_values.begin();
// fill the vector
- for(int win_y=y_pixel-halfKernel_y; win_y<= y_pixel+halfKernel_y; win_y++)
- {
- for(int win_x = x_pixel-halfKernel_x; win_x <= x_pixel+halfKernel_x; win_x++)
+
+ if (not_horizontal_border &&
+ x_pixel >= halfKernel_x && x_pixel < image_dim[1] - halfKernel_x) {
+ //This is not a border, just fill it
+ for(int win_y=y_pixel-halfKernel_y; win_y<= y_pixel+halfKernel_y; win_y++) {
+ for(int win_x = x_pixel-halfKernel_x; win_x <= x_pixel+halfKernel_x; win_x++){
+ T value = input[win_y*image_dim[1] + win_x];
+ if (value == value) { // Ignore NaNs
+ *it = value;
+ ++it;
+ }
+ }
+ }
+
+ } else { // This is a border, handle the special case
+ for(int win_y=y_pixel-halfKernel_y; win_y<= y_pixel+halfKernel_y; win_y++)
{
- int index_x = win_x;
- int index_y = win_y;
- switch(mode){
- case NEAREST:
- index_x = std::min(std::max(win_x, 0), image_dim[1] - 1);
- index_y = std::min(std::max(win_y, 0), image_dim[0] - 1);
- break;
-
- case REFLECT:
- index_x = reflect(win_x, image_dim[1]);
- index_y = reflect(win_y, image_dim[0]);
- break;
-
- case MIRROR:
- index_x = mirror(win_x, image_dim[1]);
- index_y = mirror(win_y, image_dim[0]);
- break;
- case SHRINK:
- if((index_x < 0) || (index_x > image_dim[1] -1)){
- continue;
- }
- if((index_y < 0) || (index_y > image_dim[0] -1)){
- continue;
- }
- break;
+ for(int win_x = x_pixel-halfKernel_x; win_x <= x_pixel+halfKernel_x; win_x++)
+ {
+ T value = 0;
+ int index_x = win_x;
+ int index_y = win_y;
+
+ switch(mode){
+ case NEAREST:
+ index_x = std::min(std::max(win_x, 0), image_dim[1] - 1);
+ index_y = std::min(std::max(win_y, 0), image_dim[0] - 1);
+ value = input[index_y*image_dim[1] + index_x];
+ break;
+
+ case REFLECT:
+ index_x = reflect(win_x, image_dim[1]);
+ index_y = reflect(win_y, image_dim[0]);
+ value = input[index_y*image_dim[1] + index_x];
+ break;
+
+ case MIRROR:
+ index_x = mirror(win_x, image_dim[1]);
+ // deal with 1d case
+ if(win_y == 0 && image_dim[0] == 1){
+ index_y = 0;
+ }else{
+ index_y = mirror(win_y, image_dim[0]);
+ }
+ value = input[index_y*image_dim[1] + index_x];
+ break;
+
+ case SHRINK:
+ if ((index_x < 0) || (index_x > image_dim[1] -1) ||
+ (index_y < 0) || (index_y > image_dim[0] -1)) {
+ continue;
+ }
+ value = input[index_y*image_dim[1] + index_x];
+ break;
+ case CONSTANT:
+ if ((index_x < 0) || (index_x > image_dim[1] -1) ||
+ (index_y < 0) || (index_y > image_dim[0] -1)) {
+ value = cval;
+ } else {
+ value = input[index_y*image_dim[1] + index_x];
+ }
+ break;
+ }
+
+ if (value == value) { // Ignore NaNs
+ *it = value;
+ ++it;
+ }
}
- *it = (&input[index_y*image_dim[1] + index_x]);
- ++it;
}
}
- // get end of the windows. This is needed since in shrink mode we are
- // not sure to fill the entire window.
- typename std::vector<const T*>::iterator window_end;
- int window_size = kernel_dim[0]*kernel_dim[1];
- if(mode == SHRINK){
- int x_shrink_ker_dim = std::min(x_pixel+halfKernel_x, image_dim[1]-1) - std::max(0, x_pixel-halfKernel_x)+1;
- int y_shrink_ker_dim = std::min(y_pixel+halfKernel_y, image_dim[0]-1) - std::max(0, y_pixel-halfKernel_y)+1;
- window_size = x_shrink_ker_dim*y_shrink_ker_dim;
- window_end = window_values.begin() + window_size;
- }else{
- window_end = window_values.end();
- }
+ //window_size can be smaller than kernel size in shrink mode or if there is NaNs
+ int window_size = std::distance(window_values.begin(), it);
- // apply the median value if needed for this pixel
- const T* currentPixelValue = &input[image_dim[1]*y_pixel + x_pixel];
- if (conditional == true){
- T min = 0;
- T max = 0;
- getMinMax(window_values, min, max, window_end);
- if ((*currentPixelValue == max) || (*currentPixelValue == min)){
- output[image_dim[1]*y_pixel + x_pixel] = *(median<T>(window_values, window_size));
+ if (window_size == 0) {
+ // Window is empty, this is the case when all values are NaNs
+ output[image_dim[1]*y_pixel + x_pixel] = NAN;
+
+ } else {
+ // apply the median value if needed for this pixel
+ const T currentPixelValue = input[image_dim[1]*y_pixel + x_pixel];
+ if (conditional == true){
+ typename std::vector<T>::iterator window_end = window_values.begin() + window_size;
+ T min = 0;
+ T max = 0;
+ getMinMax(window_values, min, max, window_end);
+ // NaNs are propagated through unchanged
+ if ((currentPixelValue == max) || (currentPixelValue == min)){
+ output[image_dim[1]*y_pixel + x_pixel] = median<T>(window_values, window_size);
+ }else{
+ output[image_dim[1]*y_pixel + x_pixel] = currentPixelValue;
+ }
}else{
- output[image_dim[1]*y_pixel + x_pixel] = *currentPixelValue;
+ output[image_dim[1]*y_pixel + x_pixel] = median<T>(window_values, window_size);
}
- }else{
- output[image_dim[1]*y_pixel + x_pixel] = *(median<T>(window_values, window_size));
}
}
}
diff --git a/silx/math/medianfilter/median_filter.pxd b/silx/math/medianfilter/median_filter.pxd
index 8460684..2fc0283 100644
--- a/silx/math/medianfilter/median_filter.pxd
+++ b/silx/math/medianfilter/median_filter.pxd
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2016 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -35,7 +35,8 @@ cdef extern from "median_filter.hpp":
int x_pixel_range_max,
int y_pixel_range_min,
int y_pixel_range_max,
- bool conditional) nogil;
+ bool conditional,
+ T cval) nogil;
cdef extern int reflect(int index, int length_max);
cdef extern int mirror(int index, int length_max);
diff --git a/silx/math/medianfilter/medianfilter.cpp b/silx/math/medianfilter/medianfilter.cpp
index d62e7c8..b80999a 100644
--- a/silx/math/medianfilter/medianfilter.cpp
+++ b/silx/math/medianfilter/medianfilter.cpp
@@ -1,29 +1,29 @@
-/* Generated by Cython 0.28.3 */
+/* Generated by Cython 0.29 */
/* BEGIN: Cython Metadata
{
"distutils": {
"depends": [
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h",
- "/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ufuncobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/arrayobject.h",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include/numpy/ufuncobject.h",
"silx/math/medianfilter/include/median_filter.hpp"
- ],
+ ],
"extra_compile_args": [
"-fopenmp"
- ],
+ ],
"extra_link_args": [
"-fopenmp"
- ],
+ ],
"include_dirs": [
- "silx/math/medianfilter/include",
- "/usr/lib/python2.7/dist-packages/numpy/core/include"
- ],
- "language": "c++",
- "name": "silx.math.medianfilter.medianfilter",
+ "silx/math/medianfilter/include",
+ "/mntdirect/_tmp_14_days/silx-0.9.0/release_scripts/build_source/build_venv/lib/python3.4/site-packages/numpy/core/include"
+ ],
+ "language": "c++",
+ "name": "silx.math.medianfilter.medianfilter",
"sources": [
"silx/math/medianfilter/medianfilter.pyx"
]
- },
+ },
"module_name": "silx.math.medianfilter.medianfilter"
}
END: Cython Metadata */
@@ -35,7 +35,8 @@ END: Cython Metadata */
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_28_3"
+#define CYTHON_ABI "0_29"
+#define CYTHON_HEX_VERSION 0x001D00F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
@@ -106,6 +107,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
@@ -143,6 +148,10 @@ END: Cython Metadata */
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE 0
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
@@ -196,11 +205,17 @@ END: Cython Metadata */
#define CYTHON_FAST_PYCALL 1
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
- #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
#ifndef CYTHON_USE_TP_FINALIZE
#define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
#endif
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #ifndef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
@@ -350,6 +365,9 @@ class __Pyx_FakeReference {
#ifndef Py_TPFLAGS_HAVE_FINALIZE
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
+#ifndef METH_STACKLESS
+ #define METH_STACKLESS 0
+#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
#ifndef METH_FASTCALL
#define METH_FASTCALL 0x80
@@ -363,15 +381,40 @@ class __Pyx_FakeReference {
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
- ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))
+ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
+#if CYTHON_USE_DICT_VERSIONS
+#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
+ (version_var) = __PYX_GET_DICT_VERSION(dict);\
+ (cache_var) = (value);
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
+ (VAR) = __pyx_dict_cached_value;\
+ } else {\
+ (VAR) = __pyx_dict_cached_value = (LOOKUP);\
+ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
+ }\
+ }
+#else
+#define __PYX_GET_DICT_VERSION(dict) (0)
+#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
+#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP);
+#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
#define PyObject_Malloc(s) PyMem_Malloc(s)
#define PyObject_Free(p) PyMem_Free(p)
#define PyObject_Realloc(p) PyMem_Realloc(p)
#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
+ #define PyMem_RawMalloc(n) PyMem_Malloc(n)
+ #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n)
+ #define PyMem_RawFree(p) PyMem_Free(p)
+#endif
#if CYTHON_COMPILING_IN_PYSTON
#define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co)
#define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
@@ -479,8 +522,8 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
#define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
-#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
+#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
+#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
#else
@@ -640,6 +683,9 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
(sizeof(type) == sizeof(Py_ssize_t) &&\
(is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
v == (type)PY_SSIZE_T_MAX))) )
+static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
+ return (size_t) i < (size_t) limit;
+}
#if defined (__cplusplus) && __cplusplus >= 201103L
#include <cstdlib>
#define __Pyx_sst_abs(value) std::abs(value)
@@ -698,6 +744,7 @@ static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
@@ -778,7 +825,7 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) {
if (!default_encoding) goto bad;
default_encoding_c = PyBytes_AsString(default_encoding);
if (!default_encoding_c) goto bad;
- __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
+ __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
Py_DECREF(default_encoding);
@@ -951,7 +998,7 @@ typedef struct {
} __Pyx_BufFmt_Context;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":730
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776
* # in Cython to enable them only on the right systems.
*
* ctypedef npy_int8 int8_t # <<<<<<<<<<<<<<
@@ -960,7 +1007,7 @@ typedef struct {
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":731
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777
*
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t # <<<<<<<<<<<<<<
@@ -969,7 +1016,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t;
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":732
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":778
* ctypedef npy_int8 int8_t
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t # <<<<<<<<<<<<<<
@@ -978,7 +1025,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t;
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":733
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779
* ctypedef npy_int16 int16_t
* ctypedef npy_int32 int32_t
* ctypedef npy_int64 int64_t # <<<<<<<<<<<<<<
@@ -987,7 +1034,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t;
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":737
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783
* #ctypedef npy_int128 int128_t
*
* ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<<
@@ -996,7 +1043,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t;
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":738
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":784
*
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<<
@@ -1005,7 +1052,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t;
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":739
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785
* ctypedef npy_uint8 uint8_t
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<<
@@ -1014,7 +1061,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t;
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":740
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":786
* ctypedef npy_uint16 uint16_t
* ctypedef npy_uint32 uint32_t
* ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<<
@@ -1023,7 +1070,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t;
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":744
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790
* #ctypedef npy_uint128 uint128_t
*
* ctypedef npy_float32 float32_t # <<<<<<<<<<<<<<
@@ -1032,7 +1079,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t;
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":745
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791
*
* ctypedef npy_float32 float32_t
* ctypedef npy_float64 float64_t # <<<<<<<<<<<<<<
@@ -1041,7 +1088,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t;
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":754
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":800
* # The int types are mapped a bit surprising --
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t # <<<<<<<<<<<<<<
@@ -1050,7 +1097,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t;
*/
typedef npy_long __pyx_t_5numpy_int_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":755
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801
* # numpy.int corresponds to 'l' and numpy.long to 'q'
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t # <<<<<<<<<<<<<<
@@ -1059,7 +1106,7 @@ typedef npy_long __pyx_t_5numpy_int_t;
*/
typedef npy_longlong __pyx_t_5numpy_long_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":756
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802
* ctypedef npy_long int_t
* ctypedef npy_longlong long_t
* ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<<
@@ -1068,7 +1115,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t;
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":758
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":804
* ctypedef npy_longlong longlong_t
*
* ctypedef npy_ulong uint_t # <<<<<<<<<<<<<<
@@ -1077,7 +1124,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t;
*/
typedef npy_ulong __pyx_t_5numpy_uint_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":759
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":805
*
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<<
@@ -1086,7 +1133,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":760
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":806
* ctypedef npy_ulong uint_t
* ctypedef npy_ulonglong ulong_t
* ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<<
@@ -1095,7 +1142,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":762
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":808
* ctypedef npy_ulonglong ulonglong_t
*
* ctypedef npy_intp intp_t # <<<<<<<<<<<<<<
@@ -1104,7 +1151,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
*/
typedef npy_intp __pyx_t_5numpy_intp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":763
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":809
*
* ctypedef npy_intp intp_t
* ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<<
@@ -1113,7 +1160,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t;
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":765
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":811
* ctypedef npy_uintp uintp_t
*
* ctypedef npy_double float_t # <<<<<<<<<<<<<<
@@ -1122,7 +1169,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t;
*/
typedef npy_double __pyx_t_5numpy_float_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":766
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":812
*
* ctypedef npy_double float_t
* ctypedef npy_double double_t # <<<<<<<<<<<<<<
@@ -1131,7 +1178,7 @@ typedef npy_double __pyx_t_5numpy_float_t;
*/
typedef npy_double __pyx_t_5numpy_double_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":767
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813
* ctypedef npy_double float_t
* ctypedef npy_double double_t
* ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<<
@@ -1140,8 +1187,8 @@ typedef npy_double __pyx_t_5numpy_double_t;
*/
typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
-/* "silx/math/medianfilter/medianfilter.pyx":40
- * from libcpp cimport bool
+/* "silx/math/medianfilter/medianfilter.pyx":42
+ * import numbers
*
* ctypedef unsigned long uint64 # <<<<<<<<<<<<<<
* ctypedef unsigned int uint32
@@ -1149,7 +1196,7 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
*/
typedef unsigned long __pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64;
-/* "silx/math/medianfilter/medianfilter.pyx":41
+/* "silx/math/medianfilter/medianfilter.pyx":43
*
* ctypedef unsigned long uint64
* ctypedef unsigned int uint32 # <<<<<<<<<<<<<<
@@ -1158,7 +1205,7 @@ typedef unsigned long __pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64;
*/
typedef unsigned int __pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32;
-/* "silx/math/medianfilter/medianfilter.pyx":42
+/* "silx/math/medianfilter/medianfilter.pyx":44
* ctypedef unsigned long uint64
* ctypedef unsigned int uint32
* ctypedef unsigned short uint16 # <<<<<<<<<<<<<<
@@ -1197,7 +1244,7 @@ struct __pyx_MemviewEnum_obj;
struct __pyx_memoryview_obj;
struct __pyx_memoryviewslice_obj;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":769
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815
* ctypedef npy_longdouble longdouble_t
*
* ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<<
@@ -1206,7 +1253,7 @@ struct __pyx_memoryviewslice_obj;
*/
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":770
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816
*
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<<
@@ -1215,7 +1262,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
*/
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":771
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":817
* ctypedef npy_cfloat cfloat_t
* ctypedef npy_cdouble cdouble_t
* ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<<
@@ -1224,7 +1271,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
*/
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":773
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":819
* ctypedef npy_clongdouble clongdouble_t
*
* ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<<
@@ -1445,7 +1492,25 @@ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
/* GetModuleGlobalName.proto */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
+#if CYTHON_USE_DICT_VERSIONS
+#define __Pyx_GetModuleGlobalName(var, name) {\
+ static PY_UINT64_T __pyx_dict_version = 0;\
+ static PyObject *__pyx_dict_cached_value = NULL;\
+ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
+ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
+ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+#define __Pyx_GetModuleGlobalNameUncached(var, name) {\
+ PY_UINT64_T __pyx_dict_version;\
+ PyObject *__pyx_dict_cached_value;\
+ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
+}
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
+#else
+#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name)
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
+#endif
/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
@@ -1456,6 +1521,18 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args,
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
+#define __Pyx_BUILD_ASSERT_EXPR(cond)\
+ (sizeof(char [1 - 2*!(cond)]) - 1)
+#ifndef Py_MEMBER_SIZE
+#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+#endif
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = PyFrame_Type.tp_basicsize - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
/* PyCFunctionFastCall.proto */
@@ -1547,6 +1624,9 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
int is_list, int wraparound, int boundscheck);
+/* PyObjectCall2Args.proto */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
@@ -1554,6 +1634,15 @@ static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* k
#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key)
#endif
+/* PyObjectSetAttrStr.proto */
+#if CYTHON_USE_TYPE_SLOTS
+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
+#else
+#define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n)
+#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
+#endif
+
/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
@@ -1603,6 +1692,11 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+/* GetTopmostException.proto */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
+#endif
+
/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
@@ -1804,6 +1898,17 @@ static int __Pyx_SetVtable(PyObject *dict, void *vtable);
/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);
+/* TypeImport.proto */
+#ifndef __PYX_HAVE_RT_ImportType_proto
+#define __PYX_HAVE_RT_ImportType_proto
+enum __Pyx_ImportType_CheckSize {
+ __Pyx_ImportType_CheckSize_Error = 0,
+ __Pyx_ImportType_CheckSize_Warn = 1,
+ __Pyx_ImportType_CheckSize_Ignore = 2
+};
+static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
+#endif
+
/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
@@ -2032,6 +2137,24 @@ __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
/* CIntFromPy.proto */
+static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE npy_uint64 __Pyx_PyInt_As_npy_uint64(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE npy_int16 __Pyx_PyInt_As_npy_int16(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE npy_uint16 __Pyx_PyInt_As_npy_uint16(PyObject *);
+
+/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
/* CIntFromPy.proto */
@@ -2040,21 +2163,6 @@ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *);
/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);
-/* PyIdentifierFromString.proto */
-#if !defined(__Pyx_PyIdentifier_FromString)
-#if PY_MAJOR_VERSION < 3
- #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
-#else
- #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
-#endif
-#endif
-
-/* ModuleImport.proto */
-static PyObject *__Pyx_ImportModule(const char *name);
-
-/* TypeImport.proto */
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);
-
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
@@ -2183,6 +2291,7 @@ static const char __pyx_k_err[] = "err";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_obj[] = "obj";
static const char __pyx_k_base[] = "base";
+static const char __pyx_k_cval[] = "cval";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_date[] = "__date__";
static const char __pyx_k_dict[] = "__dict__";
@@ -2236,9 +2345,12 @@ static const char __pyx_k_license[] = "__license__";
static const char __pyx_k_medfilt[] = "medfilt";
static const char __pyx_k_memview[] = "memview";
static const char __pyx_k_nearest[] = "nearest";
+static const char __pyx_k_numbers[] = "numbers";
static const char __pyx_k_reflect[] = "reflect";
static const char __pyx_k_reshape[] = "reshape";
static const char __pyx_k_Ellipsis[] = "Ellipsis";
+static const char __pyx_k_Integral[] = "Integral";
+static const char __pyx_k_constant[] = "constant";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_itemsize[] = "itemsize";
static const char __pyx_k_pyx_type[] = "__pyx_type";
@@ -2297,13 +2409,13 @@ static const char __pyx_k_MemoryView_of_r_at_0x_x[] = "<MemoryView of %r at 0x%x
static const char __pyx_k_contiguous_and_indirect[] = "<contiguous and indirect>";
static const char __pyx_k_Cannot_index_with_type_s[] = "Cannot index with type '%s'";
static const char __pyx_k_Invalid_shape_in_axis_d_d[] = "Invalid shape in axis %d: %d.";
+static const char __pyx_k_Requested_mode_s_is_unknown[] = "Requested mode %s is unknown.";
static const char __pyx_k_itemsize_0_for_cython_array[] = "itemsize <= 0 for cython.array";
static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
-static const char __pyx_k_Requested_mode_s_is_unknowed[] = "Requested mode %s is unknowed.";
static const char __pyx_k_unable_to_allocate_array_data[] = "unable to allocate array data.";
static const char __pyx_k_input_buffer_dimension_must_mo[] = "<input_buffer> dimension must mo higher than 2.";
static const char __pyx_k_strided_and_direct_or_indirect[] = "<strided and direct or indirect>";
-static const char __pyx_k_Invalid_data_shape_Dimemsion_of[] = "Invalid data shape. Dimemsion of the arary should be 1 or 2";
+static const char __pyx_k_Invalid_data_shape_Dimension_of[] = "Invalid data shape. Dimension of the array should be 1 or 2";
static const char __pyx_k_input_buffer_must_be_a_C_CONTIG[] = "<input_buffer> must be a C_CONTIGUOUS numpy array.";
static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
static const char __pyx_k_output_buffer_dimension_must_mo[] = "<output_buffer> dimension must mo higher than 2.";
@@ -2350,7 +2462,8 @@ static PyObject *__pyx_n_s_ImportError;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0;
static PyObject *__pyx_n_s_IndexError;
static PyObject *__pyx_kp_s_Indirect_dimensions_not_supporte;
-static PyObject *__pyx_kp_s_Invalid_data_shape_Dimemsion_of;
+static PyObject *__pyx_n_s_Integral;
+static PyObject *__pyx_kp_s_Invalid_data_shape_Dimension_of;
static PyObject *__pyx_kp_s_Invalid_mode_expected_c_or_fortr;
static PyObject *__pyx_kp_s_Invalid_shape_in_axis_d_d;
static PyObject *__pyx_kp_s_J_Kieffer;
@@ -2363,7 +2476,7 @@ static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
static PyObject *__pyx_n_b_O;
static PyObject *__pyx_kp_s_Out_of_bounds_on_buffer_access_a;
static PyObject *__pyx_n_s_PickleError;
-static PyObject *__pyx_kp_s_Requested_mode_s_is_unknowed;
+static PyObject *__pyx_kp_s_Requested_mode_s_is_unknown;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_s_Unable_to_convert_item_to_object;
@@ -2380,8 +2493,10 @@ static PyObject *__pyx_n_s_check;
static PyObject *__pyx_n_s_class;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_conditional;
+static PyObject *__pyx_n_s_constant;
static PyObject *__pyx_kp_s_contiguous_and_direct;
static PyObject *__pyx_kp_s_contiguous_and_indirect;
+static PyObject *__pyx_n_s_cval;
static PyObject *__pyx_n_s_data;
static PyObject *__pyx_n_s_date;
static PyObject *__pyx_n_s_dict;
@@ -2442,6 +2557,7 @@ static PyObject *__pyx_n_s_ndim;
static PyObject *__pyx_n_s_nearest;
static PyObject *__pyx_n_s_new;
static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
+static PyObject *__pyx_n_s_numbers;
static PyObject *__pyx_n_s_numpy;
static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
@@ -2493,20 +2609,20 @@ static PyObject *__pyx_n_s_unpack;
static PyObject *__pyx_n_s_update;
static PyObject *__pyx_n_s_y;
static PyObject *__pyx_n_s_zeros_like;
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_image, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_image, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval); /* proto */
static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_input_buffer, PyObject *__pyx_v_output_buffer); /* proto */
static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_8reflect(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_index, int __pyx_v_length_max); /* proto */
static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_10mirror(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_index, int __pyx_v_length_max); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, float __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, double __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int64_t __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint64_t __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int32_t __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint32_t __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int16_t __pyx_v_cval); /* proto */
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint16_t __pyx_v_cval); /* proto */
static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __pyx_array_obj *__pyx_v_self, PyObject *__pyx_v_shape, Py_ssize_t __pyx_v_itemsize, PyObject *__pyx_v_format, PyObject *__pyx_v_mode, int __pyx_v_allocate_buffer); /* proto */
@@ -2559,6 +2675,7 @@ static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_2;
static PyObject *__pyx_int_3;
+static PyObject *__pyx_int_4;
static PyObject *__pyx_int_184977713;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_tuple_;
@@ -2570,9 +2687,7 @@ static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__9;
-static PyObject *__pyx_slice__32;
-static PyObject *__pyx_slice__33;
-static PyObject *__pyx_slice__34;
+static PyObject *__pyx_slice__29;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
@@ -2592,78 +2707,79 @@ static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
-static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
+static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__35;
-static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
-static PyObject *__pyx_tuple__38;
-static PyObject *__pyx_tuple__40;
-static PyObject *__pyx_tuple__42;
-static PyObject *__pyx_tuple__44;
-static PyObject *__pyx_tuple__46;
-static PyObject *__pyx_tuple__48;
-static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__54;
-static PyObject *__pyx_tuple__56;
-static PyObject *__pyx_tuple__58;
-static PyObject *__pyx_tuple__60;
+static PyObject *__pyx_tuple__39;
+static PyObject *__pyx_tuple__41;
+static PyObject *__pyx_tuple__43;
+static PyObject *__pyx_tuple__45;
+static PyObject *__pyx_tuple__47;
+static PyObject *__pyx_tuple__49;
+static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__53;
+static PyObject *__pyx_tuple__55;
+static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__59;
+static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
+static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__64;
+static PyObject *__pyx_tuple__65;
static PyObject *__pyx_tuple__66;
-static PyObject *__pyx_tuple__67;
-static PyObject *__pyx_tuple__68;
-static PyObject *__pyx_tuple__69;
-static PyObject *__pyx_tuple__70;
-static PyObject *__pyx_tuple__71;
-static PyObject *__pyx_codeobj__39;
-static PyObject *__pyx_codeobj__41;
-static PyObject *__pyx_codeobj__43;
-static PyObject *__pyx_codeobj__45;
-static PyObject *__pyx_codeobj__47;
-static PyObject *__pyx_codeobj__49;
-static PyObject *__pyx_codeobj__51;
-static PyObject *__pyx_codeobj__53;
-static PyObject *__pyx_codeobj__55;
-static PyObject *__pyx_codeobj__57;
-static PyObject *__pyx_codeobj__59;
-static PyObject *__pyx_codeobj__61;
-static PyObject *__pyx_codeobj__63;
-static PyObject *__pyx_codeobj__65;
-static PyObject *__pyx_codeobj__72;
+static PyObject *__pyx_codeobj__34;
+static PyObject *__pyx_codeobj__36;
+static PyObject *__pyx_codeobj__38;
+static PyObject *__pyx_codeobj__40;
+static PyObject *__pyx_codeobj__42;
+static PyObject *__pyx_codeobj__44;
+static PyObject *__pyx_codeobj__46;
+static PyObject *__pyx_codeobj__48;
+static PyObject *__pyx_codeobj__50;
+static PyObject *__pyx_codeobj__52;
+static PyObject *__pyx_codeobj__54;
+static PyObject *__pyx_codeobj__56;
+static PyObject *__pyx_codeobj__58;
+static PyObject *__pyx_codeobj__60;
+static PyObject *__pyx_codeobj__67;
/* Late includes */
-/* "silx/math/medianfilter/medianfilter.pyx":48
+/* "silx/math/medianfilter/medianfilter.pyx":50
*
*
- * def medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt1d(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_medfilt1d[] = "medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest')\nFunction computing the median filter of the given input.\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n :param numpy.ndarray data: the array for which we want to apply\n the median filter. Should be 1d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: int\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n\n :returns: the array with the median value for each pixel.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_1medfilt1d = {"medfilt1d", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_medfilt1d};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_medfilt1d[] = "medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest', cval=0)\nFunction computing the median filter of the given input.\n\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n Not-a-Number (NaN) float values are ignored.\n If the window only contains NaNs, it evaluates to NaN.\n\n In event of an even number of valid values in the window (either\n because of NaN values or on image border in shrink mode),\n the highest of the 2 central sorted values is taken.\n\n :param numpy.ndarray data: the array for which we want to apply\n the median filter. Should be 1d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: int\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n :param str mode: the algorithm used to determine how values at borders\n are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'\n :param cval: Value used outside borders in 'constant' mode\n\n :returns: the array with the median value for each pixel.\n ";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_1medfilt1d = {"medfilt1d", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_medfilt1d};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_kernel_size = 0;
bool __pyx_v_conditional;
PyObject *__pyx_v_mode = 0;
+ PyObject *__pyx_v_cval = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("medfilt1d (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[4] = {0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[5] = {0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_3);
values[3] = ((PyObject *)__pyx_n_s_nearest);
+ values[4] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -2698,12 +2814,20 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d(P
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode);
if (value) { values[3] = value; kw_args--; }
}
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval);
+ if (value) { values[4] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt1d") < 0)) __PYX_ERR(0, 48, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt1d") < 0)) __PYX_ERR(0, 50, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -2718,28 +2842,45 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_1medfilt1d(P
__pyx_v_data = values[0];
__pyx_v_kernel_size = values[1];
if (values[2]) {
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 52, __pyx_L3_error)
} else {
+
+ /* "silx/math/medianfilter/medianfilter.pyx":52
+ * def medfilt1d(data,
+ * kernel_size=3,
+ * bool conditional=False, # <<<<<<<<<<<<<<
+ * mode='nearest',
+ * cval=0):
+ */
__pyx_v_conditional = ((bool)0);
}
__pyx_v_mode = values[3];
+ __pyx_v_cval = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("medfilt1d", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 48, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("medfilt1d", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 50, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.medfilt1d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(__pyx_self, __pyx_v_data, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(__pyx_self, __pyx_v_data, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
+
+ /* "silx/math/medianfilter/medianfilter.pyx":50
+ *
+ *
+ * def medfilt1d(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
+ */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
@@ -2750,17 +2891,17 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("medfilt1d", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":62
+ /* "silx/math/medianfilter/medianfilter.pyx":79
* :returns: the array with the median value for each pixel.
* """
- * return medfilt(data, kernel_size, conditional, mode) # <<<<<<<<<<<<<<
+ * return medfilt(data, kernel_size, conditional, mode, cval) # <<<<<<<<<<<<<<
*
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_medfilt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_medfilt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
@@ -2776,8 +2917,8 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_data, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
+ PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_data, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode, __pyx_v_cval};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -2785,15 +2926,15 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_data, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
+ PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_data, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode, __pyx_v_cval};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
- __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -2809,8 +2950,11 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
__Pyx_INCREF(__pyx_v_mode);
__Pyx_GIVEREF(__pyx_v_mode);
PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_mode);
+ __Pyx_INCREF(__pyx_v_cval);
+ __Pyx_GIVEREF(__pyx_v_cval);
+ PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_cval);
__pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
@@ -2819,12 +2963,12 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "silx/math/medianfilter/medianfilter.pyx":48
+ /* "silx/math/medianfilter/medianfilter.pyx":50
*
*
- * def medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt1d(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* function exit code */
@@ -2842,35 +2986,39 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_medfilt1d(CY
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":65
+/* "silx/math/medianfilter/medianfilter.pyx":82
*
*
- * def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt2d(image, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_2medfilt2d[] = "medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest')\nFunction computing the median filter of the given input.\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n :param numpy.ndarray data: the array for which we want to apply\n the median filter. Should be 2d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: For 1D should be an int for 2D should be a tuple or\n a list of (kernel_height, kernel_width)\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n\n :returns: the array with the median value for each pixel.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_3medfilt2d = {"medfilt2d", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_2medfilt2d};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_2medfilt2d[] = "medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest', cval=0)\nFunction computing the median filter of the given input.\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n Not-a-Number (NaN) float values are ignored.\n If the window only contains NaNs, it evaluates to NaN.\n\n In event of an even number of valid values in the window (either\n because of NaN values or on image border in shrink mode),\n the highest of the 2 central sorted values is taken.\n\n :param numpy.ndarray data: the array for which we want to apply\n the median filter. Should be 2d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: For 1D should be an int for 2D should be a tuple or\n a list of (kernel_height, kernel_width)\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n :param str mode: the algorithm used to determine how values at borders\n are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'\n :param cval: Value used outside borders in 'constant' mode\n\n :returns: the array with the median value for each pixel.\n ";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_3medfilt2d = {"medfilt2d", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_2medfilt2d};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_image = 0;
PyObject *__pyx_v_kernel_size = 0;
bool __pyx_v_conditional;
PyObject *__pyx_v_mode = 0;
+ PyObject *__pyx_v_cval = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("medfilt2d (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_image,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[4] = {0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_image,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[5] = {0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_3);
values[3] = ((PyObject *)__pyx_n_s_nearest);
+ values[4] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -2905,12 +3053,20 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d(P
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode);
if (value) { values[3] = value; kw_args--; }
}
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval);
+ if (value) { values[4] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt2d") < 0)) __PYX_ERR(0, 65, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt2d") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -2925,28 +3081,45 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_3medfilt2d(P
__pyx_v_image = values[0];
__pyx_v_kernel_size = values[1];
if (values[2]) {
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L3_error)
} else {
+
+ /* "silx/math/medianfilter/medianfilter.pyx":84
+ * def medfilt2d(image,
+ * kernel_size=3,
+ * bool conditional=False, # <<<<<<<<<<<<<<
+ * mode='nearest',
+ * cval=0):
+ */
__pyx_v_conditional = ((bool)0);
}
__pyx_v_mode = values[3];
+ __pyx_v_cval = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("medfilt2d", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 65, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("medfilt2d", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.medfilt2d", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(__pyx_self, __pyx_v_image, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(__pyx_self, __pyx_v_image, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
+
+ /* "silx/math/medianfilter/medianfilter.pyx":82
+ *
+ *
+ * def medfilt2d(image, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
+ */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_image, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_image, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
@@ -2957,17 +3130,17 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("medfilt2d", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":80
+ /* "silx/math/medianfilter/medianfilter.pyx":111
* :returns: the array with the median value for each pixel.
* """
- * return medfilt(image, kernel_size, conditional, mode) # <<<<<<<<<<<<<<
+ * return medfilt(image, kernel_size, conditional, mode, cval) # <<<<<<<<<<<<<<
*
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_medfilt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_medfilt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
@@ -2983,8 +3156,8 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_image, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+ PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_image, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode, __pyx_v_cval};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -2992,15 +3165,15 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_image, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+ PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_image, __pyx_v_kernel_size, __pyx_t_3, __pyx_v_mode, __pyx_v_cval};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
- __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __pyx_t_6 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -3016,8 +3189,11 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
__Pyx_INCREF(__pyx_v_mode);
__Pyx_GIVEREF(__pyx_v_mode);
PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_mode);
+ __Pyx_INCREF(__pyx_v_cval);
+ __Pyx_GIVEREF(__pyx_v_cval);
+ PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_5, __pyx_v_cval);
__pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
@@ -3026,12 +3202,12 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "silx/math/medianfilter/medianfilter.pyx":65
+ /* "silx/math/medianfilter/medianfilter.pyx":82
*
*
- * def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt2d(image, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* function exit code */
@@ -3049,35 +3225,39 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_2medfilt2d(C
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":83
+/* "silx/math/medianfilter/medianfilter.pyx":114
*
*
- * def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_4medfilt[] = "medfilt(data, kernel_size=3, bool conditional=False, mode='nearest')\nFunction computing the median filter of the given input.\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n :param numpy.ndarray data: the array for which we want to apply \n the median filter. Should be 1d or 2d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: For 1D should be an int for 2D should be a tuple or \n a list of (kernel_height, kernel_width)\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n :param str mode: the algorithm used to determine how values at borders\n are determined.\n\n :returns: the array with the median value for each pixel.\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_5medfilt = {"medfilt", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_4medfilt};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_4medfilt[] = "medfilt(data, kernel_size=3, bool conditional=False, mode='nearest', cval=0)\nFunction computing the median filter of the given input.\n Behavior at boundaries: the algorithm is reducing the size of the\n window/kernel for pixels at boundaries (there is no mirroring).\n\n Not-a-Number (NaN) float values are ignored.\n If the window only contains NaNs, it evaluates to NaN.\n\n In event of an even number of valid values in the window (either\n because of NaN values or on image border in shrink mode),\n the highest of the 2 central sorted values is taken.\n\n :param numpy.ndarray data: the array for which we want to apply\n the median filter. Should be 1d or 2d.\n :param kernel_size: the dimension of the kernel.\n :type kernel_size: For 1D should be an int for 2D should be a tuple or\n a list of (kernel_height, kernel_width)\n :param bool conditional: True if we want to apply a conditional median\n filtering.\n :param str mode: the algorithm used to determine how values at borders\n are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'\n :param cval: Value used outside borders in 'constant' mode\n\n :returns: the array with the median value for each pixel.\n ";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_5medfilt = {"medfilt", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_4medfilt};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_data = 0;
PyObject *__pyx_v_kernel_size = 0;
bool __pyx_v_conditional;
PyObject *__pyx_v_mode = 0;
+ PyObject *__pyx_v_cval = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("medfilt (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[4] = {0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[5] = {0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_3);
values[3] = ((PyObject *)__pyx_n_s_nearest);
+ values[4] = ((PyObject *)__pyx_int_0);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -3112,12 +3292,20 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt(PyO
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode);
if (value) { values[3] = value; kw_args--; }
}
+ CYTHON_FALLTHROUGH;
+ case 4:
+ if (kw_args > 0) {
+ PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval);
+ if (value) { values[4] = value; kw_args--; }
+ }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt") < 0)) __PYX_ERR(0, 83, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "medfilt") < 0)) __PYX_ERR(0, 114, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
+ case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -3132,28 +3320,45 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_5medfilt(PyO
__pyx_v_data = values[0];
__pyx_v_kernel_size = values[1];
if (values[2]) {
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 116, __pyx_L3_error)
} else {
+
+ /* "silx/math/medianfilter/medianfilter.pyx":116
+ * def medfilt(data,
+ * kernel_size=3,
+ * bool conditional=False, # <<<<<<<<<<<<<<
+ * mode='nearest',
+ * cval=0):
+ */
__pyx_v_conditional = ((bool)0);
}
__pyx_v_mode = values[3];
+ __pyx_v_cval = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("medfilt", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 83, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("medfilt", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 114, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.medfilt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(__pyx_self, __pyx_v_data, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(__pyx_self, __pyx_v_data, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
+
+ /* "silx/math/medianfilter/medianfilter.pyx":114
+ *
+ *
+ * def medfilt(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
+ */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_data, PyObject *__pyx_v_kernel_size, bool __pyx_v_conditional, PyObject *__pyx_v_mode, PyObject *__pyx_v_cval) {
PyObject *__pyx_v_err = NULL;
int __pyx_v_reshaped;
PyObject *__pyx_v_output_buffer = NULL;
@@ -3164,280 +3369,347 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
PyObject *__pyx_t_1 = NULL;
int __pyx_t_2;
int __pyx_t_3;
- Py_ssize_t __pyx_t_4;
- PyObject *__pyx_t_5 = NULL;
+ PyObject *__pyx_t_4 = NULL;
+ Py_ssize_t __pyx_t_5;
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
int __pyx_t_8;
PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("medfilt", 0);
__Pyx_INCREF(__pyx_v_data);
+ __Pyx_INCREF(__pyx_v_kernel_size);
- /* "silx/math/medianfilter/medianfilter.pyx":100
+ /* "silx/math/medianfilter/medianfilter.pyx":143
* :returns: the array with the median value for each pixel.
* """
* if mode not in MODES: # <<<<<<<<<<<<<<
- * err = 'Requested mode %s is unknowed.' % mode
+ * err = 'Requested mode %s is unknown.' % mode
* raise ValueError(err)
*/
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MODES); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MODES); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_mode, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 100, __pyx_L1_error)
+ __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_mode, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_t_2 != 0);
if (unlikely(__pyx_t_3)) {
- /* "silx/math/medianfilter/medianfilter.pyx":101
+ /* "silx/math/medianfilter/medianfilter.pyx":144
* """
* if mode not in MODES:
- * err = 'Requested mode %s is unknowed.' % mode # <<<<<<<<<<<<<<
+ * err = 'Requested mode %s is unknown.' % mode # <<<<<<<<<<<<<<
* raise ValueError(err)
*
*/
- __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Requested_mode_s_is_unknowed, __pyx_v_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Requested_mode_s_is_unknown, __pyx_v_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_err = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":102
+ /* "silx/math/medianfilter/medianfilter.pyx":145
* if mode not in MODES:
- * err = 'Requested mode %s is unknowed.' % mode
+ * err = 'Requested mode %s is unknown.' % mode
* raise ValueError(err) # <<<<<<<<<<<<<<
*
- * reshaped = False
+ * if data.ndim > 2:
*/
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 102, __pyx_L1_error)
+ __PYX_ERR(0, 145, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":100
+ /* "silx/math/medianfilter/medianfilter.pyx":143
* :returns: the array with the median value for each pixel.
* """
* if mode not in MODES: # <<<<<<<<<<<<<<
- * err = 'Requested mode %s is unknowed.' % mode
+ * err = 'Requested mode %s is unknown.' % mode
* raise ValueError(err)
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":104
+ /* "silx/math/medianfilter/medianfilter.pyx":147
+ * raise ValueError(err)
+ *
+ * if data.ndim > 2: # <<<<<<<<<<<<<<
+ * raise ValueError(
+ * "Invalid data shape. Dimension of the array should be 1 or 2")
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 147, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(__pyx_t_3)) {
+
+ /* "silx/math/medianfilter/medianfilter.pyx":148
+ *
+ * if data.ndim > 2:
+ * raise ValueError( # <<<<<<<<<<<<<<
+ * "Invalid data shape. Dimension of the array should be 1 or 2")
+ *
+ */
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __PYX_ERR(0, 148, __pyx_L1_error)
+
+ /* "silx/math/medianfilter/medianfilter.pyx":147
* raise ValueError(err)
*
+ * if data.ndim > 2: # <<<<<<<<<<<<<<
+ * raise ValueError(
+ * "Invalid data shape. Dimension of the array should be 1 or 2")
+ */
+ }
+
+ /* "silx/math/medianfilter/medianfilter.pyx":152
+ *
+ * # Handle case of scalar kernel size
+ * if isinstance(kernel_size, numbers.Integral): # <<<<<<<<<<<<<<
+ * kernel_size = [kernel_size] * data.ndim
+ *
+ */
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numbers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Integral); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_3 = PyObject_IsInstance(__pyx_v_kernel_size, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = (__pyx_t_3 != 0);
+ if (__pyx_t_2) {
+
+ /* "silx/math/medianfilter/medianfilter.pyx":153
+ * # Handle case of scalar kernel size
+ * if isinstance(kernel_size, numbers.Integral):
+ * kernel_size = [kernel_size] * data.ndim # <<<<<<<<<<<<<<
+ *
+ * assert len(kernel_size) == data.ndim
+ */
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_INCREF(__pyx_v_kernel_size);
+ __Pyx_GIVEREF(__pyx_v_kernel_size);
+ PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_kernel_size);
+ { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 153, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_temp);
+ __Pyx_DECREF(__pyx_t_4);
+ __pyx_t_4 = __pyx_temp;
+ }
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_kernel_size, __pyx_t_4);
+ __pyx_t_4 = 0;
+
+ /* "silx/math/medianfilter/medianfilter.pyx":152
+ *
+ * # Handle case of scalar kernel size
+ * if isinstance(kernel_size, numbers.Integral): # <<<<<<<<<<<<<<
+ * kernel_size = [kernel_size] * data.ndim
+ *
+ */
+ }
+
+ /* "silx/math/medianfilter/medianfilter.pyx":155
+ * kernel_size = [kernel_size] * data.ndim
+ *
+ * assert len(kernel_size) == data.ndim # <<<<<<<<<<<<<<
+ *
+ * # Convert 1D arrays to 2D
+ */
+ #ifndef CYTHON_WITHOUT_ASSERTIONS
+ if (unlikely(!Py_OptimizeFlag)) {
+ __pyx_t_5 = PyObject_Length(__pyx_v_kernel_size); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 155, __pyx_L1_error)
+ __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_2)) {
+ PyErr_SetNone(PyExc_AssertionError);
+ __PYX_ERR(0, 155, __pyx_L1_error)
+ }
+ }
+ #endif
+
+ /* "silx/math/medianfilter/medianfilter.pyx":158
+ *
+ * # Convert 1D arrays to 2D
* reshaped = False # <<<<<<<<<<<<<<
* if len(data.shape) == 1:
- * data = data.reshape(data.shape[0], 1)
+ * data = data.reshape(1, data.shape[0])
*/
__pyx_v_reshaped = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":105
- *
+ /* "silx/math/medianfilter/medianfilter.pyx":159
+ * # Convert 1D arrays to 2D
* reshaped = False
* if len(data.shape) == 1: # <<<<<<<<<<<<<<
- * data = data.reshape(data.shape[0], 1)
- * reshaped = True
+ * data = data.reshape(1, data.shape[0])
+ * kernel_size = [1, kernel_size[0]]
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 105, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = ((__pyx_t_4 == 1) != 0);
- if (__pyx_t_3) {
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_5 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 159, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_2 = ((__pyx_t_5 == 1) != 0);
+ if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":106
+ /* "silx/math/medianfilter/medianfilter.pyx":160
* reshaped = False
* if len(data.shape) == 1:
- * data = data.reshape(data.shape[0], 1) # <<<<<<<<<<<<<<
+ * data = data.reshape(1, data.shape[0]) # <<<<<<<<<<<<<<
+ * kernel_size = [1, kernel_size[0]]
* reshaped = True
- * elif len(data.shape) > 2:
*/
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = NULL;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = NULL;
__pyx_t_8 = 0;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
- if (likely(__pyx_t_6)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
- __Pyx_INCREF(__pyx_t_6);
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+ if (likely(__pyx_t_4)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_5, function);
+ __Pyx_DECREF_SET(__pyx_t_1, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_int_1};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (PyFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_int_1, __pyx_t_7};
+ __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
- PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_int_1};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
+ if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
+ PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_int_1, __pyx_t_7};
+ __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
} else
#endif
{
- __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 106, __pyx_L1_error)
+ __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 160, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- if (__pyx_t_6) {
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
+ if (__pyx_t_4) {
+ __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_7);
__Pyx_INCREF(__pyx_int_1);
__Pyx_GIVEREF(__pyx_int_1);
- PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_int_1);
+ PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_int_1);
+ __Pyx_GIVEREF(__pyx_t_7);
+ PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_7);
__pyx_t_7 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 160, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
- __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
+ __pyx_t_6 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":107
+ /* "silx/math/medianfilter/medianfilter.pyx":161
* if len(data.shape) == 1:
- * data = data.reshape(data.shape[0], 1)
- * reshaped = True # <<<<<<<<<<<<<<
- * elif len(data.shape) > 2:
- * raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2")
- */
- __pyx_v_reshaped = 1;
-
- /* "silx/math/medianfilter/medianfilter.pyx":105
- *
- * reshaped = False
- * if len(data.shape) == 1: # <<<<<<<<<<<<<<
- * data = data.reshape(data.shape[0], 1)
- * reshaped = True
- */
- goto __pyx_L4;
- }
-
- /* "silx/math/medianfilter/medianfilter.pyx":108
- * data = data.reshape(data.shape[0], 1)
+ * data = data.reshape(1, data.shape[0])
+ * kernel_size = [1, kernel_size[0]] # <<<<<<<<<<<<<<
* reshaped = True
- * elif len(data.shape) > 2: # <<<<<<<<<<<<<<
- * raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2")
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 108, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_3 = ((__pyx_t_4 > 2) != 0);
- if (unlikely(__pyx_t_3)) {
+ __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_kernel_size, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_int_1);
+ __Pyx_GIVEREF(__pyx_int_1);
+ PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
+ __pyx_t_6 = 0;
+ __Pyx_DECREF_SET(__pyx_v_kernel_size, __pyx_t_1);
+ __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":109
- * reshaped = True
- * elif len(data.shape) > 2:
- * raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2") # <<<<<<<<<<<<<<
+ /* "silx/math/medianfilter/medianfilter.pyx":162
+ * data = data.reshape(1, data.shape[0])
+ * kernel_size = [1, kernel_size[0]]
+ * reshaped = True # <<<<<<<<<<<<<<
*
* # simple median filter apply into a 2D buffer
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_Raise(__pyx_t_1, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 109, __pyx_L1_error)
+ __pyx_v_reshaped = 1;
- /* "silx/math/medianfilter/medianfilter.pyx":108
- * data = data.reshape(data.shape[0], 1)
- * reshaped = True
- * elif len(data.shape) > 2: # <<<<<<<<<<<<<<
- * raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2")
- *
+ /* "silx/math/medianfilter/medianfilter.pyx":159
+ * # Convert 1D arrays to 2D
+ * reshaped = False
+ * if len(data.shape) == 1: # <<<<<<<<<<<<<<
+ * data = data.reshape(1, data.shape[0])
+ * kernel_size = [1, kernel_size[0]]
*/
}
- __pyx_L4:;
- /* "silx/math/medianfilter/medianfilter.pyx":112
+ /* "silx/math/medianfilter/medianfilter.pyx":165
*
* # simple median filter apply into a 2D buffer
* output_buffer = numpy.zeros_like(data) # <<<<<<<<<<<<<<
* check(data, output_buffer)
*
*/
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 112, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros_like); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 165, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_5)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_9, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_data};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_data};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else
- #endif
- {
- __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_INCREF(__pyx_v_data);
- __Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_data);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_6, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_data);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_output_buffer = __pyx_t_1;
__pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":113
+ /* "silx/math/medianfilter/medianfilter.pyx":166
* # simple median filter apply into a 2D buffer
* output_buffer = numpy.zeros_like(data)
* check(data, output_buffer) # <<<<<<<<<<<<<<
*
- * if type(kernel_size) in (tuple, list):
+ * ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_check); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 113, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_check); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 166, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = NULL;
+ __pyx_t_6 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
- __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
- if (likely(__pyx_t_7)) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
+ if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
- __Pyx_INCREF(__pyx_t_7);
+ __Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_9, function);
__pyx_t_8 = 1;
@@ -3445,567 +3717,418 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_v_output_buffer};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_data, __pyx_v_output_buffer};
+ __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
- PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_data, __pyx_v_output_buffer};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+ PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_data, __pyx_v_output_buffer};
+ __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
- __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- if (__pyx_t_7) {
- __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
+ __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 166, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ if (__pyx_t_6) {
+ __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
}
__Pyx_INCREF(__pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_v_data);
+ PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_v_data);
__Pyx_INCREF(__pyx_v_output_buffer);
__Pyx_GIVEREF(__pyx_v_output_buffer);
- PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_output_buffer);
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
+ PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_output_buffer);
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 166, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
- /* "silx/math/medianfilter/medianfilter.pyx":115
- * check(data, output_buffer)
- *
- * if type(kernel_size) in (tuple, list): # <<<<<<<<<<<<<<
- * if(len(kernel_size) == 1):
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- */
- __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_kernel_size)));
- __pyx_t_1 = ((PyObject *)Py_TYPE(__pyx_v_kernel_size));
- __pyx_t_9 = PyObject_RichCompare(((PyObject *)__pyx_t_1), ((PyObject *)(&PyTuple_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 115, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (!__pyx_t_2) {
- } else {
- __pyx_t_3 = __pyx_t_2;
- goto __pyx_L6_bool_binop_done;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
- __pyx_t_9 = PyObject_RichCompare(((PyObject *)__pyx_t_1), ((PyObject *)(&PyList_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 115, __pyx_L1_error)
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_3 = __pyx_t_2;
- __pyx_L6_bool_binop_done:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_2 = (__pyx_t_3 != 0);
- if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":116
- *
- * if type(kernel_size) in (tuple, list):
- * if(len(kernel_size) == 1): # <<<<<<<<<<<<<<
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- * else:
- */
- __pyx_t_4 = PyObject_Length(__pyx_v_kernel_size); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 116, __pyx_L1_error)
- __pyx_t_2 = ((__pyx_t_4 == 1) != 0);
- if (__pyx_t_2) {
-
- /* "silx/math/medianfilter/medianfilter.pyx":117
- * if type(kernel_size) in (tuple, list):
- * if(len(kernel_size) == 1):
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32) # <<<<<<<<<<<<<<
- * else:
- * ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
- */
- __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kernel_size, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_1);
- PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_INCREF(__pyx_int_1);
- __Pyx_GIVEREF(__pyx_int_1);
- PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_1);
- __Pyx_GIVEREF(__pyx_t_5);
- PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
- __pyx_t_5 = 0;
- __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_v_ker_dim = __pyx_t_6;
- __pyx_t_6 = 0;
-
- /* "silx/math/medianfilter/medianfilter.pyx":116
- *
- * if type(kernel_size) in (tuple, list):
- * if(len(kernel_size) == 1): # <<<<<<<<<<<<<<
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- * else:
- */
- goto __pyx_L8;
- }
-
- /* "silx/math/medianfilter/medianfilter.pyx":119
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- * else:
- * ker_dim = numpy.array(kernel_size, dtype=numpy.int32) # <<<<<<<<<<<<<<
- * else:
- * ker_dim = numpy.array([kernel_size, kernel_size], dtype=numpy.int32)
- */
- /*else*/ {
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_INCREF(__pyx_v_kernel_size);
- __Pyx_GIVEREF(__pyx_v_kernel_size);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_kernel_size);
- __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 119, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_v_ker_dim = __pyx_t_7;
- __pyx_t_7 = 0;
- }
- __pyx_L8:;
-
- /* "silx/math/medianfilter/medianfilter.pyx":115
+ /* "silx/math/medianfilter/medianfilter.pyx":168
* check(data, output_buffer)
*
- * if type(kernel_size) in (tuple, list): # <<<<<<<<<<<<<<
- * if(len(kernel_size) == 1):
- * ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- */
- goto __pyx_L5;
- }
-
- /* "silx/math/medianfilter/medianfilter.pyx":121
- * ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
- * else:
- * ker_dim = numpy.array([kernel_size, kernel_size], dtype=numpy.int32) # <<<<<<<<<<<<<<
+ * ker_dim = numpy.array(kernel_size, dtype=numpy.int32) # <<<<<<<<<<<<<<
*
* if data.dtype == numpy.float64:
*/
- /*else*/ {
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_INCREF(__pyx_v_kernel_size);
- __Pyx_GIVEREF(__pyx_v_kernel_size);
- PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_kernel_size);
- __Pyx_INCREF(__pyx_v_kernel_size);
- __Pyx_GIVEREF(__pyx_v_kernel_size);
- PyList_SET_ITEM(__pyx_t_7, 1, __pyx_v_kernel_size);
- __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_7);
- PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
- __pyx_t_7 = 0;
- __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 121, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_v_ker_dim = __pyx_t_9;
- __pyx_t_9 = 0;
- }
- __pyx_L5:;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_INCREF(__pyx_v_kernel_size);
+ __Pyx_GIVEREF(__pyx_v_kernel_size);
+ PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_kernel_size);
+ __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_7);
+ __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __pyx_v_ker_dim = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":123
- * ker_dim = numpy.array([kernel_size, kernel_size], dtype=numpy.int32)
+ /* "silx/math/medianfilter/medianfilter.pyx":170
+ * ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
*
* if data.dtype == numpy.float64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_float64
* elif data.dtype == numpy.float32:
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 123, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 123, __pyx_L1_error)
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":124
+ /* "silx/math/medianfilter/medianfilter.pyx":171
*
* if data.dtype == numpy.float64:
* medfilterfc = _median_filter_float64 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.float32:
* medfilterfc = _median_filter_float32
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 124, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_median_filter_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_v_medfilterfc = __pyx_t_7;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":123
- * ker_dim = numpy.array([kernel_size, kernel_size], dtype=numpy.int32)
+ /* "silx/math/medianfilter/medianfilter.pyx":170
+ * ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
*
* if data.dtype == numpy.float64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_float64
* elif data.dtype == numpy.float32:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":125
+ /* "silx/math/medianfilter/medianfilter.pyx":172
* if data.dtype == numpy.float64:
* medfilterfc = _median_filter_float64
* elif data.dtype == numpy.float32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_float32
* elif data.dtype == numpy.int64:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 125, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 125, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 172, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":126
+ /* "silx/math/medianfilter/medianfilter.pyx":173
* medfilterfc = _median_filter_float64
* elif data.dtype == numpy.float32:
* medfilterfc = _median_filter_float32 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.int64:
* medfilterfc = _median_filter_int64
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_float32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 126, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_v_medfilterfc = __pyx_t_6;
- __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_median_filter_float32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_medfilterfc = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":125
+ /* "silx/math/medianfilter/medianfilter.pyx":172
* if data.dtype == numpy.float64:
* medfilterfc = _median_filter_float64
* elif data.dtype == numpy.float32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_float32
* elif data.dtype == numpy.int64:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":127
+ /* "silx/math/medianfilter/medianfilter.pyx":174
* elif data.dtype == numpy.float32:
* medfilterfc = _median_filter_float32
* elif data.dtype == numpy.int64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int64
* elif data.dtype == numpy.uint64:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 127, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_RichCompare(__pyx_t_6, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 127, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":128
+ /* "silx/math/medianfilter/medianfilter.pyx":175
* medfilterfc = _median_filter_float32
* elif data.dtype == numpy.int64:
* medfilterfc = _median_filter_int64 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.uint64:
* medfilterfc = _median_filter_uint64
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_int64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 128, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_v_medfilterfc = __pyx_t_9;
- __pyx_t_9 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_median_filter_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_medfilterfc = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":127
+ /* "silx/math/medianfilter/medianfilter.pyx":174
* elif data.dtype == numpy.float32:
* medfilterfc = _median_filter_float32
* elif data.dtype == numpy.int64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int64
* elif data.dtype == numpy.uint64:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":129
+ /* "silx/math/medianfilter/medianfilter.pyx":176
* elif data.dtype == numpy.int64:
* medfilterfc = _median_filter_int64
* elif data.dtype == numpy.uint64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint64
* elif data.dtype == numpy.int32:
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_uint64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 129, __pyx_L1_error)
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 176, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 176, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":130
+ /* "silx/math/medianfilter/medianfilter.pyx":177
* medfilterfc = _median_filter_int64
* elif data.dtype == numpy.uint64:
* medfilterfc = _median_filter_uint64 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.int32:
* medfilterfc = _median_filter_int32
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_uint64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 130, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_median_filter_uint64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_v_medfilterfc = __pyx_t_7;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":129
+ /* "silx/math/medianfilter/medianfilter.pyx":176
* elif data.dtype == numpy.int64:
* medfilterfc = _median_filter_int64
* elif data.dtype == numpy.uint64: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint64
* elif data.dtype == numpy.int32:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":131
+ /* "silx/math/medianfilter/medianfilter.pyx":178
* elif data.dtype == numpy.uint64:
* medfilterfc = _median_filter_uint64
* elif data.dtype == numpy.int32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int32
* elif data.dtype == numpy.uint32:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 131, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 178, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 131, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 178, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":132
+ /* "silx/math/medianfilter/medianfilter.pyx":179
* medfilterfc = _median_filter_uint64
* elif data.dtype == numpy.int32:
* medfilterfc = _median_filter_int32 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.uint32:
* medfilterfc = _median_filter_uint32
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_v_medfilterfc = __pyx_t_6;
- __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_median_filter_int32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_medfilterfc = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":131
+ /* "silx/math/medianfilter/medianfilter.pyx":178
* elif data.dtype == numpy.uint64:
* medfilterfc = _median_filter_uint64
* elif data.dtype == numpy.int32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int32
* elif data.dtype == numpy.uint32:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":133
+ /* "silx/math/medianfilter/medianfilter.pyx":180
* elif data.dtype == numpy.int32:
* medfilterfc = _median_filter_int32
* elif data.dtype == numpy.uint32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint32
* elif data.dtype == numpy.int16:
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_uint32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 133, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 180, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = PyObject_RichCompare(__pyx_t_6, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 133, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 180, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":134
+ /* "silx/math/medianfilter/medianfilter.pyx":181
* medfilterfc = _median_filter_int32
* elif data.dtype == numpy.uint32:
* medfilterfc = _median_filter_uint32 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.int16:
* medfilterfc = _median_filter_int16
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_uint32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 134, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_v_medfilterfc = __pyx_t_9;
- __pyx_t_9 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_median_filter_uint32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 181, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_v_medfilterfc = __pyx_t_4;
+ __pyx_t_4 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":133
+ /* "silx/math/medianfilter/medianfilter.pyx":180
* elif data.dtype == numpy.int32:
* medfilterfc = _median_filter_int32
* elif data.dtype == numpy.uint32: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint32
* elif data.dtype == numpy.int16:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":135
+ /* "silx/math/medianfilter/medianfilter.pyx":182
* elif data.dtype == numpy.uint32:
* medfilterfc = _median_filter_uint32
* elif data.dtype == numpy.int16: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int16
* elif data.dtype == numpy.uint16:
*/
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 135, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 182, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 135, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 135, __pyx_L1_error)
+ __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 182, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 182, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":136
+ /* "silx/math/medianfilter/medianfilter.pyx":183
* medfilterfc = _median_filter_uint32
* elif data.dtype == numpy.int16:
* medfilterfc = _median_filter_int16 # <<<<<<<<<<<<<<
* elif data.dtype == numpy.uint16:
* medfilterfc = _median_filter_uint16
*/
- __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_int16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_median_filter_int16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_v_medfilterfc = __pyx_t_7;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":135
+ /* "silx/math/medianfilter/medianfilter.pyx":182
* elif data.dtype == numpy.uint32:
* medfilterfc = _median_filter_uint32
* elif data.dtype == numpy.int16: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_int16
* elif data.dtype == numpy.uint16:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":137
+ /* "silx/math/medianfilter/medianfilter.pyx":184
* elif data.dtype == numpy.int16:
* medfilterfc = _median_filter_int16
* elif data.dtype == numpy.uint16: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint16
* else:
*/
- __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 137, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_uint16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint16); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 137, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 184, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (likely(__pyx_t_2)) {
- /* "silx/math/medianfilter/medianfilter.pyx":138
+ /* "silx/math/medianfilter/medianfilter.pyx":185
* medfilterfc = _median_filter_int16
* elif data.dtype == numpy.uint16:
* medfilterfc = _median_filter_uint16 # <<<<<<<<<<<<<<
* else:
* raise ValueError("%s type is not managed by the median filter" % data.dtype)
*/
- __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_median_filter_uint16); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_v_medfilterfc = __pyx_t_6;
- __pyx_t_6 = 0;
+ __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_median_filter_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_v_medfilterfc = __pyx_t_1;
+ __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":137
+ /* "silx/math/medianfilter/medianfilter.pyx":184
* elif data.dtype == numpy.int16:
* medfilterfc = _median_filter_int16
* elif data.dtype == numpy.uint16: # <<<<<<<<<<<<<<
* medfilterfc = _median_filter_uint16
* else:
*/
- goto __pyx_L9;
+ goto __pyx_L7;
}
- /* "silx/math/medianfilter/medianfilter.pyx":140
+ /* "silx/math/medianfilter/medianfilter.pyx":187
* medfilterfc = _median_filter_uint16
* else:
* raise ValueError("%s type is not managed by the median filter" % data.dtype) # <<<<<<<<<<<<<<
@@ -4013,235 +4136,127 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
* medfilterfc(input_buffer=data,
*/
/*else*/ {
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_s_type_is_not_managed_by_the_me, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 140, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_Raise(__pyx_t_6, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(0, 140, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s_type_is_not_managed_by_the_me, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __PYX_ERR(0, 187, __pyx_L1_error)
}
- __pyx_L9:;
+ __pyx_L7:;
- /* "silx/math/medianfilter/medianfilter.pyx":142
+ /* "silx/math/medianfilter/medianfilter.pyx":189
* raise ValueError("%s type is not managed by the median filter" % data.dtype)
*
* medfilterfc(input_buffer=data, # <<<<<<<<<<<<<<
* output_buffer=output_buffer,
* kernel_size=ker_dim,
*/
- __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_input_buffer, __pyx_v_data) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_input_buffer, __pyx_v_data) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":143
+ /* "silx/math/medianfilter/medianfilter.pyx":190
*
* medfilterfc(input_buffer=data,
* output_buffer=output_buffer, # <<<<<<<<<<<<<<
* kernel_size=ker_dim,
* conditional=conditional,
*/
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_output_buffer, __pyx_v_output_buffer) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_output_buffer, __pyx_v_output_buffer) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":144
+ /* "silx/math/medianfilter/medianfilter.pyx":191
* medfilterfc(input_buffer=data,
* output_buffer=output_buffer,
* kernel_size=ker_dim, # <<<<<<<<<<<<<<
* conditional=conditional,
- * mode=MODES[mode])
+ * mode=MODES[mode],
*/
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_kernel_size, __pyx_v_ker_dim) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_kernel_size, __pyx_v_ker_dim) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":145
+ /* "silx/math/medianfilter/medianfilter.pyx":192
* output_buffer=output_buffer,
* kernel_size=ker_dim,
* conditional=conditional, # <<<<<<<<<<<<<<
- * mode=MODES[mode])
- *
+ * mode=MODES[mode],
+ * cval=cval)
*/
- __pyx_t_9 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 145, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_conditional, __pyx_t_9) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_conditional); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_conditional, __pyx_t_4) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":146
+ /* "silx/math/medianfilter/medianfilter.pyx":193
* kernel_size=ker_dim,
* conditional=conditional,
- * mode=MODES[mode]) # <<<<<<<<<<<<<<
+ * mode=MODES[mode], # <<<<<<<<<<<<<<
+ * cval=cval)
*
- * if reshaped:
*/
- __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_MODES); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 146, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_v_mode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 146, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MODES); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
+ __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_mode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_mode, __pyx_t_7) < 0) __PYX_ERR(0, 142, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_mode, __pyx_t_7) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":142
+ /* "silx/math/medianfilter/medianfilter.pyx":194
+ * conditional=conditional,
+ * mode=MODES[mode],
+ * cval=cval) # <<<<<<<<<<<<<<
+ *
+ * if reshaped:
+ */
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cval, __pyx_v_cval) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
+
+ /* "silx/math/medianfilter/medianfilter.pyx":189
* raise ValueError("%s type is not managed by the median filter" % data.dtype)
*
* medfilterfc(input_buffer=data, # <<<<<<<<<<<<<<
* output_buffer=output_buffer,
* kernel_size=ker_dim,
*/
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_medfilterfc, __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 142, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_medfilterfc, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 189, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":148
- * mode=MODES[mode])
+ /* "silx/math/medianfilter/medianfilter.pyx":196
+ * cval=cval)
*
* if reshaped: # <<<<<<<<<<<<<<
- * data = data.reshape(data.shape[0])
- * output_buffer = output_buffer.reshape(data.shape[0])
+ * output_buffer.shape = -1 # Convert to 1D array
+ *
*/
__pyx_t_2 = (__pyx_v_reshaped != 0);
if (__pyx_t_2) {
- /* "silx/math/medianfilter/medianfilter.pyx":149
+ /* "silx/math/medianfilter/medianfilter.pyx":197
*
* if reshaped:
- * data = data.reshape(data.shape[0]) # <<<<<<<<<<<<<<
- * output_buffer = output_buffer.reshape(data.shape[0])
- *
- */
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- __pyx_t_9 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_9)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_9);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- if (!__pyx_t_9) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_1};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_9, __pyx_t_1};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 149, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
- __pyx_t_7 = 0;
-
- /* "silx/math/medianfilter/medianfilter.pyx":150
- * if reshaped:
- * data = data.reshape(data.shape[0])
- * output_buffer = output_buffer.reshape(data.shape[0]) # <<<<<<<<<<<<<<
+ * output_buffer.shape = -1 # Convert to 1D array # <<<<<<<<<<<<<<
*
* return output_buffer
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = NULL;
- if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
- __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
- if (likely(__pyx_t_5)) {
- PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_INCREF(function);
- __Pyx_DECREF_SET(__pyx_t_6, function);
- }
- }
- if (!__pyx_t_5) {
- __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
- __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_1);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_1);
- __pyx_t_1 = 0;
- __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_DECREF_SET(__pyx_v_output_buffer, __pyx_t_7);
- __pyx_t_7 = 0;
+ if (__Pyx_PyObject_SetAttrStr(__pyx_v_output_buffer, __pyx_n_s_shape, __pyx_int_neg_1) < 0) __PYX_ERR(0, 197, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":148
- * mode=MODES[mode])
+ /* "silx/math/medianfilter/medianfilter.pyx":196
+ * cval=cval)
*
* if reshaped: # <<<<<<<<<<<<<<
- * data = data.reshape(data.shape[0])
- * output_buffer = output_buffer.reshape(data.shape[0])
+ * output_buffer.shape = -1 # Convert to 1D array
+ *
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":152
- * output_buffer = output_buffer.reshape(data.shape[0])
+ /* "silx/math/medianfilter/medianfilter.pyx":199
+ * output_buffer.shape = -1 # Convert to 1D array
*
* return output_buffer # <<<<<<<<<<<<<<
*
@@ -4252,18 +4267,18 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
__pyx_r = __pyx_v_output_buffer;
goto __pyx_L0;
- /* "silx/math/medianfilter/medianfilter.pyx":83
+ /* "silx/math/medianfilter/medianfilter.pyx":114
*
*
- * def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
- __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
@@ -4275,12 +4290,13 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
__Pyx_XDECREF(__pyx_v_ker_dim);
__Pyx_XDECREF(__pyx_v_medfilterfc);
__Pyx_XDECREF(__pyx_v_data);
+ __Pyx_XDECREF(__pyx_v_kernel_size);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":155
+/* "silx/math/medianfilter/medianfilter.pyx":202
*
*
* def check(input_buffer, output_buffer): # <<<<<<<<<<<<<<
@@ -4291,7 +4307,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_4medfilt(CYT
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_6check[] = "check(input_buffer, output_buffer)\nSimple check on the two buffers to make sure we can apply the median filter\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_7check = {"check", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_6check};
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_7check = {"check", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_6check};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_input_buffer = 0;
PyObject *__pyx_v_output_buffer = 0;
@@ -4321,11 +4337,11 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check(PyObj
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("check", 1, 2, 2, 1); __PYX_ERR(0, 155, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("check", 1, 2, 2, 1); __PYX_ERR(0, 202, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check") < 0)) __PYX_ERR(0, 155, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check") < 0)) __PYX_ERR(0, 202, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
@@ -4338,7 +4354,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_7check(PyObj
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("check", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 155, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("check", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 202, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.check", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
@@ -4362,16 +4378,16 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
PyObject *__pyx_t_6 = NULL;
__Pyx_RefNannySetupContext("check", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":158
+ /* "silx/math/medianfilter/medianfilter.pyx":205
* """Simple check on the two buffers to make sure we can apply the median filter
* """
* if (input_buffer.flags['C_CONTIGUOUS'] is False): # <<<<<<<<<<<<<<
* raise ValueError('<input_buffer> must be a C_CONTIGUOUS numpy array.')
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 158, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_t_2 == Py_False);
@@ -4379,20 +4395,20 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
__pyx_t_4 = (__pyx_t_3 != 0);
if (unlikely(__pyx_t_4)) {
- /* "silx/math/medianfilter/medianfilter.pyx":159
+ /* "silx/math/medianfilter/medianfilter.pyx":206
* """
* if (input_buffer.flags['C_CONTIGUOUS'] is False):
* raise ValueError('<input_buffer> must be a C_CONTIGUOUS numpy array.') # <<<<<<<<<<<<<<
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False):
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __PYX_ERR(0, 159, __pyx_L1_error)
+ __PYX_ERR(0, 206, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":158
+ /* "silx/math/medianfilter/medianfilter.pyx":205
* """Simple check on the two buffers to make sure we can apply the median filter
* """
* if (input_buffer.flags['C_CONTIGUOUS'] is False): # <<<<<<<<<<<<<<
@@ -4401,16 +4417,16 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":161
+ /* "silx/math/medianfilter/medianfilter.pyx":208
* raise ValueError('<input_buffer> must be a C_CONTIGUOUS numpy array.')
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False): # <<<<<<<<<<<<<<
* raise ValueError('<output_buffer> must be a C_CONTIGUOUS numpy array.')
*
*/
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_s_C_CONTIGUOUS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = (__pyx_t_1 == Py_False);
@@ -4418,20 +4434,20 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
__pyx_t_3 = (__pyx_t_4 != 0);
if (unlikely(__pyx_t_3)) {
- /* "silx/math/medianfilter/medianfilter.pyx":162
+ /* "silx/math/medianfilter/medianfilter.pyx":209
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False):
* raise ValueError('<output_buffer> must be a C_CONTIGUOUS numpy array.') # <<<<<<<<<<<<<<
*
* if not (len(input_buffer.shape) <= 2):
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 162, __pyx_L1_error)
+ __PYX_ERR(0, 209, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":161
+ /* "silx/math/medianfilter/medianfilter.pyx":208
* raise ValueError('<input_buffer> must be a C_CONTIGUOUS numpy array.')
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False): # <<<<<<<<<<<<<<
@@ -4440,34 +4456,34 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":164
+ /* "silx/math/medianfilter/medianfilter.pyx":211
* raise ValueError('<output_buffer> must be a C_CONTIGUOUS numpy array.')
*
* if not (len(input_buffer.shape) <= 2): # <<<<<<<<<<<<<<
* raise ValueError('<input_buffer> dimension must mo higher than 2.')
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 164, __pyx_L1_error)
+ __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 211, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = ((!((__pyx_t_5 <= 2) != 0)) != 0);
if (unlikely(__pyx_t_3)) {
- /* "silx/math/medianfilter/medianfilter.pyx":165
+ /* "silx/math/medianfilter/medianfilter.pyx":212
*
* if not (len(input_buffer.shape) <= 2):
* raise ValueError('<input_buffer> dimension must mo higher than 2.') # <<<<<<<<<<<<<<
*
* if not (len(output_buffer.shape) <= 2):
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 165, __pyx_L1_error)
+ __PYX_ERR(0, 212, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":164
+ /* "silx/math/medianfilter/medianfilter.pyx":211
* raise ValueError('<output_buffer> must be a C_CONTIGUOUS numpy array.')
*
* if not (len(input_buffer.shape) <= 2): # <<<<<<<<<<<<<<
@@ -4476,34 +4492,34 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":167
+ /* "silx/math/medianfilter/medianfilter.pyx":214
* raise ValueError('<input_buffer> dimension must mo higher than 2.')
*
* if not (len(output_buffer.shape) <= 2): # <<<<<<<<<<<<<<
* raise ValueError('<output_buffer> dimension must mo higher than 2.')
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 167, __pyx_L1_error)
+ __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 214, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = ((!((__pyx_t_5 <= 2) != 0)) != 0);
if (unlikely(__pyx_t_3)) {
- /* "silx/math/medianfilter/medianfilter.pyx":168
+ /* "silx/math/medianfilter/medianfilter.pyx":215
*
* if not (len(output_buffer.shape) <= 2):
* raise ValueError('<output_buffer> dimension must mo higher than 2.') # <<<<<<<<<<<<<<
*
* if not(input_buffer.dtype == output_buffer.dtype):
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 215, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 168, __pyx_L1_error)
+ __PYX_ERR(0, 215, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":167
+ /* "silx/math/medianfilter/medianfilter.pyx":214
* raise ValueError('<input_buffer> dimension must mo higher than 2.')
*
* if not (len(output_buffer.shape) <= 2): # <<<<<<<<<<<<<<
@@ -4512,39 +4528,39 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":170
+ /* "silx/math/medianfilter/medianfilter.pyx":217
* raise ValueError('<output_buffer> dimension must mo higher than 2.')
*
* if not(input_buffer.dtype == output_buffer.dtype): # <<<<<<<<<<<<<<
* raise ValueError('input buffer and output_buffer must be of the same type')
*
*/
- __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 217, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 217, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 170, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 217, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_4 = ((!__pyx_t_3) != 0);
if (unlikely(__pyx_t_4)) {
- /* "silx/math/medianfilter/medianfilter.pyx":171
+ /* "silx/math/medianfilter/medianfilter.pyx":218
*
* if not(input_buffer.dtype == output_buffer.dtype):
* raise ValueError('input buffer and output_buffer must be of the same type') # <<<<<<<<<<<<<<
*
* if not (input_buffer.shape == output_buffer.shape):
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __PYX_ERR(0, 171, __pyx_L1_error)
+ __PYX_ERR(0, 218, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":170
+ /* "silx/math/medianfilter/medianfilter.pyx":217
* raise ValueError('<output_buffer> dimension must mo higher than 2.')
*
* if not(input_buffer.dtype == output_buffer.dtype): # <<<<<<<<<<<<<<
@@ -4553,39 +4569,39 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":173
+ /* "silx/math/medianfilter/medianfilter.pyx":220
* raise ValueError('input buffer and output_buffer must be of the same type')
*
* if not (input_buffer.shape == output_buffer.shape): # <<<<<<<<<<<<<<
* raise ValueError('input buffer and output_buffer must be of the same dimension and same dimension')
*
*/
- __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_input_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 220, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output_buffer, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 220, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 220, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 173, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 220, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_3 = ((!__pyx_t_4) != 0);
if (unlikely(__pyx_t_3)) {
- /* "silx/math/medianfilter/medianfilter.pyx":174
+ /* "silx/math/medianfilter/medianfilter.pyx":221
*
* if not (input_buffer.shape == output_buffer.shape):
* raise ValueError('input buffer and output_buffer must be of the same dimension and same dimension') # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __PYX_ERR(0, 174, __pyx_L1_error)
+ __PYX_ERR(0, 221, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":173
+ /* "silx/math/medianfilter/medianfilter.pyx":220
* raise ValueError('input buffer and output_buffer must be of the same type')
*
* if not (input_buffer.shape == output_buffer.shape): # <<<<<<<<<<<<<<
@@ -4594,7 +4610,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
*/
}
- /* "silx/math/medianfilter/medianfilter.pyx":155
+ /* "silx/math/medianfilter/medianfilter.pyx":202
*
*
* def check(input_buffer, output_buffer): # <<<<<<<<<<<<<<
@@ -4617,7 +4633,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":182
+/* "silx/math/medianfilter/medianfilter.pyx":229
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def reflect(int index, int length_max): # <<<<<<<<<<<<<<
@@ -4628,7 +4644,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_6check(CYTHO
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_8reflect[] = "reflect(int index, int length_max)\nfind the correct index into [0, length_max-1] for index in reflect mode\n\n :param int index: the index to move into [0, length_max-1] in reflect mode\n :param int length_max: the higher bound limit\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_9reflect = {"reflect", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_8reflect};
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_9reflect = {"reflect", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_8reflect};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
int __pyx_v_index;
int __pyx_v_length_max;
@@ -4658,11 +4674,11 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect(PyO
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length_max)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("reflect", 1, 2, 2, 1); __PYX_ERR(0, 182, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("reflect", 1, 2, 2, 1); __PYX_ERR(0, 229, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reflect") < 0)) __PYX_ERR(0, 182, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reflect") < 0)) __PYX_ERR(0, 229, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
@@ -4670,12 +4686,12 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_9reflect(PyO
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
- __pyx_v_index = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 182, __pyx_L3_error)
- __pyx_v_length_max = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_length_max == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 182, __pyx_L3_error)
+ __pyx_v_index = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 229, __pyx_L3_error)
+ __pyx_v_length_max = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_length_max == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 229, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("reflect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 182, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("reflect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 229, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.reflect", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
@@ -4694,7 +4710,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_8reflect(CYT
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("reflect", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":188
+ /* "silx/math/medianfilter/medianfilter.pyx":235
* :param int length_max: the higher bound limit
* """
* return median_filter.reflect(index, length_max) # <<<<<<<<<<<<<<
@@ -4702,13 +4718,13 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_8reflect(CYT
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(reflect(__pyx_v_index, __pyx_v_length_max)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(reflect(__pyx_v_index, __pyx_v_length_max)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "silx/math/medianfilter/medianfilter.pyx":182
+ /* "silx/math/medianfilter/medianfilter.pyx":229
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def reflect(int index, int length_max): # <<<<<<<<<<<<<<
@@ -4727,7 +4743,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_8reflect(CYT
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":195
+/* "silx/math/medianfilter/medianfilter.pyx":242
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def mirror(int index, int length_max): # <<<<<<<<<<<<<<
@@ -4738,7 +4754,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_8reflect(CYT
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_10mirror[] = "mirror(int index, int length_max)\nfind the correct index into [0, length_max-1] for index in mirror mode\n\n :param int index: the index to move into [0, length_max-1] in mirror mode\n :param int length_max: the higher bound limit\n ";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_11mirror = {"mirror", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_10mirror};
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_11mirror = {"mirror", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_10mirror};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
int __pyx_v_index;
int __pyx_v_length_max;
@@ -4768,11 +4784,11 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror(PyO
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length_max)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("mirror", 1, 2, 2, 1); __PYX_ERR(0, 195, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("mirror", 1, 2, 2, 1); __PYX_ERR(0, 242, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mirror") < 0)) __PYX_ERR(0, 195, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mirror") < 0)) __PYX_ERR(0, 242, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
@@ -4780,12 +4796,12 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_11mirror(PyO
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
- __pyx_v_index = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 195, __pyx_L3_error)
- __pyx_v_length_max = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_length_max == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 195, __pyx_L3_error)
+ __pyx_v_index = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 242, __pyx_L3_error)
+ __pyx_v_length_max = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_length_max == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 242, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("mirror", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 195, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("mirror", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 242, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter.mirror", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
@@ -4804,7 +4820,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_10mirror(CYT
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("mirror", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":201
+ /* "silx/math/medianfilter/medianfilter.pyx":248
* :param int length_max: the higher bound limit
* """
* return median_filter.mirror(index, length_max) # <<<<<<<<<<<<<<
@@ -4812,13 +4828,13 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_10mirror(CYT
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_PyInt_From_int(mirror(__pyx_v_index, __pyx_v_length_max)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyInt_From_int(mirror(__pyx_v_index, __pyx_v_length_max)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "silx/math/medianfilter/medianfilter.pyx":195
+ /* "silx/math/medianfilter/medianfilter.pyx":242
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def mirror(int index, int length_max): # <<<<<<<<<<<<<<
@@ -4837,7 +4853,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_10mirror(CYT
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":208
+/* "silx/math/medianfilter/medianfilter.pyx":255
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float32(float[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -4847,24 +4863,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_10mirror(CYT
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32[] = "_median_filter_float32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32 = {"_median_filter_float32", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32[] = "_median_filter_float32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, float cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32 = {"_median_filter_float32", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ float __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_float32 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -4887,31 +4906,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 5, 5, 1); __PYX_ERR(0, 208, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, 1); __PYX_ERR(0, 255, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 5, 5, 2); __PYX_ERR(0, 208, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, 2); __PYX_ERR(0, 255, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 5, 5, 3); __PYX_ERR(0, 208, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, 3); __PYX_ERR(0, 255, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 5, 5, 4); __PYX_ERR(0, 208, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, 4); __PYX_ERR(0, 255, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, 5); __PYX_ERR(0, 255, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_float32") < 0)) __PYX_ERR(0, 208, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_float32") < 0)) __PYX_ERR(0, 255, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -4919,31 +4944,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 208, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 209, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 210, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 212, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 255, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 256, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 257, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 258, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L3_error)
+ __pyx_v_cval = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_cval == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 260, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 208, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float32", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 255, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_float32", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 208, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 255, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 209, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 256, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 210, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 257, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -4954,7 +4981,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_13_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_filter_float32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, float __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -4970,7 +4997,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_float32", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":215
+ /* "silx/math/medianfilter/medianfilter.pyx":263
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -4979,7 +5006,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":216
+ /* "silx/math/medianfilter/medianfilter.pyx":264
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -4988,7 +5015,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":218
+ /* "silx/math/medianfilter/medianfilter.pyx":266
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -4997,7 +5024,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":219
+ /* "silx/math/medianfilter/medianfilter.pyx":267
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -5006,7 +5033,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":221
+ /* "silx/math/medianfilter/medianfilter.pyx":269
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5043,7 +5070,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":222
+ /* "silx/math/medianfilter/medianfilter.pyx":270
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[float](<float*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -5053,7 +5080,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":223
+ /* "silx/math/medianfilter/medianfilter.pyx":271
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[float](<float*> & input_buffer[0,0],
* <float*> & output_buffer[0,0], # <<<<<<<<<<<<<<
@@ -5063,7 +5090,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":224
+ /* "silx/math/medianfilter/medianfilter.pyx":272
* median_filter.median_filter[float](<float*> & input_buffer[0,0],
* <float*> & output_buffer[0,0],
* <int*>& kernel_size[0], # <<<<<<<<<<<<<<
@@ -5072,14 +5099,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":222
+ /* "silx/math/medianfilter/medianfilter.pyx":270
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[float](<float*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <float*> & output_buffer[0,0],
* <int*>& kernel_size[0],
*/
- median_filter<float>(((float *)(&(*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((float *)(&(*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<float>(((float *)(&(*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((float *)(&(*((float *) ( /* dim=1 */ ((char *) (((float *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -5093,7 +5120,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":221
+ /* "silx/math/medianfilter/medianfilter.pyx":269
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5112,7 +5139,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":208
+ /* "silx/math/medianfilter/medianfilter.pyx":255
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float32(float[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -5130,7 +5157,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":237
+/* "silx/math/medianfilter/medianfilter.pyx":286
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float64(double[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -5140,24 +5167,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_12_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64[] = "_median_filter_float64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64 = {"_median_filter_float64", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64[] = "_median_filter_float64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, double cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64 = {"_median_filter_float64", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ double __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_float64 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -5180,31 +5210,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 5, 5, 1); __PYX_ERR(0, 237, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, 1); __PYX_ERR(0, 286, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 5, 5, 2); __PYX_ERR(0, 237, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, 2); __PYX_ERR(0, 286, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 5, 5, 3); __PYX_ERR(0, 237, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, 3); __PYX_ERR(0, 286, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 5, 5, 4); __PYX_ERR(0, 237, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, 4); __PYX_ERR(0, 286, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, 5); __PYX_ERR(0, 286, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_float64") < 0)) __PYX_ERR(0, 237, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_float64") < 0)) __PYX_ERR(0, 286, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -5212,31 +5248,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 237, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 238, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 239, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 240, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 241, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 286, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 287, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 288, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 289, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 290, __pyx_L3_error)
+ __pyx_v_cval = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_cval == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 291, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 237, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 286, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 237, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 286, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 238, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 287, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 239, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 288, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -5247,7 +5285,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_15_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_filter_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, double __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -5263,7 +5301,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_float64", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":244
+ /* "silx/math/medianfilter/medianfilter.pyx":294
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -5272,7 +5310,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":245
+ /* "silx/math/medianfilter/medianfilter.pyx":295
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -5281,7 +5319,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":247
+ /* "silx/math/medianfilter/medianfilter.pyx":297
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -5290,7 +5328,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":248
+ /* "silx/math/medianfilter/medianfilter.pyx":298
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -5299,7 +5337,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":250
+ /* "silx/math/medianfilter/medianfilter.pyx":300
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5336,7 +5374,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":251
+ /* "silx/math/medianfilter/medianfilter.pyx":301
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[double](<double*> & input_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -5346,7 +5384,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":252
+ /* "silx/math/medianfilter/medianfilter.pyx":302
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[double](<double*> & input_buffer[0, 0],
* <double*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -5356,7 +5394,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":253
+ /* "silx/math/medianfilter/medianfilter.pyx":303
* median_filter.median_filter[double](<double*> & input_buffer[0, 0],
* <double*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -5365,14 +5403,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":251
+ /* "silx/math/medianfilter/medianfilter.pyx":301
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[double](<double*> & input_buffer[0, 0], # <<<<<<<<<<<<<<
* <double*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<double>(((double *)(&(*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((double *)(&(*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<double>(((double *)(&(*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((double *)(&(*((double *) ( /* dim=1 */ ((char *) (((double *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -5386,7 +5424,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":250
+ /* "silx/math/medianfilter/medianfilter.pyx":300
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5405,7 +5443,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":237
+ /* "silx/math/medianfilter/medianfilter.pyx":286
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float64(double[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -5423,7 +5461,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":266
+/* "silx/math/medianfilter/medianfilter.pyx":317
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -5433,24 +5471,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_14_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64[] = "_median_filter_int64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64 = {"_median_filter_int64", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64[] = "_median_filter_int64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, int64_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64 = {"_median_filter_int64", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_int64_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_int64 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -5473,31 +5514,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 5, 5, 1); __PYX_ERR(0, 266, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, 1); __PYX_ERR(0, 317, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 5, 5, 2); __PYX_ERR(0, 266, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, 2); __PYX_ERR(0, 317, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 5, 5, 3); __PYX_ERR(0, 266, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, 3); __PYX_ERR(0, 317, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 5, 5, 4); __PYX_ERR(0, 266, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, 4); __PYX_ERR(0, 317, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, 5); __PYX_ERR(0, 317, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int64") < 0)) __PYX_ERR(0, 266, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int64") < 0)) __PYX_ERR(0, 317, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -5505,31 +5552,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 266, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 267, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 268, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 269, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 317, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 318, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 319, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 320, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_cval == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 322, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 266, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 317, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 266, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 317, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 267, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 318, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 268, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 319, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -5540,7 +5589,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_17_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_filter_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int64_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -5556,7 +5605,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_int64", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":273
+ /* "silx/math/medianfilter/medianfilter.pyx":325
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -5565,7 +5614,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":274
+ /* "silx/math/medianfilter/medianfilter.pyx":326
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -5574,7 +5623,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":276
+ /* "silx/math/medianfilter/medianfilter.pyx":328
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -5583,7 +5632,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":277
+ /* "silx/math/medianfilter/medianfilter.pyx":329
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -5592,7 +5641,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":279
+ /* "silx/math/medianfilter/medianfilter.pyx":331
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5629,7 +5678,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":280
+ /* "silx/math/medianfilter/medianfilter.pyx":332
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[long](<long*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -5639,33 +5688,33 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":281
+ /* "silx/math/medianfilter/medianfilter.pyx":333
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[long](<long*> & input_buffer[0,0],
* <long*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
* <int*>&kernel_size[0],
- * <int*>buffer_shape,
+ * <int*>buffer_shape,
*/
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":282
+ /* "silx/math/medianfilter/medianfilter.pyx":334
* median_filter.median_filter[long](<long*> & input_buffer[0,0],
* <long*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
- * <int*>buffer_shape,
- * y,
+ * <int*>buffer_shape,
+ * y,
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":280
+ /* "silx/math/medianfilter/medianfilter.pyx":332
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[long](<long*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <long*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<long>(((long *)(&(*((__pyx_t_5numpy_int64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((long *)(&(*((__pyx_t_5numpy_int64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<long>(((long *)(&(*((__pyx_t_5numpy_int64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((long *)(&(*((__pyx_t_5numpy_int64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -5679,7 +5728,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":279
+ /* "silx/math/medianfilter/medianfilter.pyx":331
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5698,7 +5747,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":266
+ /* "silx/math/medianfilter/medianfilter.pyx":317
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -5716,34 +5765,37 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_16_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":294
+/* "silx/math/medianfilter/medianfilter.pyx":347
* @cython.wraparound(False)
* @cython.initializedcheck(False)
- * def _median_filter_uint64( # <<<<<<<<<<<<<<
- * cnumpy.uint64_t[:, ::1] input_buffer not None,
+ * def _median_filter_uint64(cnumpy.uint64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint64_t[:, ::1] output_buffer not None,
+ * cnumpy.int32_t[::1] kernel_size not None,
*/
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64[] = "_median_filter_uint64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64 = {"_median_filter_uint64", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64[] = "_median_filter_uint64(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, uint64_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64 = {"_median_filter_uint64", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_uint64_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_uint64 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -5766,31 +5818,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 5, 5, 1); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, 1); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 5, 5, 2); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, 2); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 5, 5, 3); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, 3); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 5, 5, 4); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, 4); __PYX_ERR(0, 347, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, 5); __PYX_ERR(0, 347, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint64") < 0)) __PYX_ERR(0, 294, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint64") < 0)) __PYX_ERR(0, 347, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -5798,31 +5856,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 295, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 296, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 297, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 298, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 299, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 347, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 348, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 349, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 350, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_uint64(values[5]); if (unlikely((__pyx_v_cval == ((npy_uint64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 352, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 294, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_uint64", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 295, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 347, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 296, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 348, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 297, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 349, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -5833,7 +5893,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_19_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_filter_uint64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint64_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -5849,7 +5909,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_uint64", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":302
+ /* "silx/math/medianfilter/medianfilter.pyx":355
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -5858,7 +5918,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":303
+ /* "silx/math/medianfilter/medianfilter.pyx":356
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -5867,7 +5927,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":305
+ /* "silx/math/medianfilter/medianfilter.pyx":358
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -5876,7 +5936,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":306
+ /* "silx/math/medianfilter/medianfilter.pyx":359
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -5885,7 +5945,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":308
+ /* "silx/math/medianfilter/medianfilter.pyx":361
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5922,7 +5982,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":309
+ /* "silx/math/medianfilter/medianfilter.pyx":362
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint64](<uint64*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -5932,7 +5992,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":310
+ /* "silx/math/medianfilter/medianfilter.pyx":363
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint64](<uint64*> & input_buffer[0,0],
* <uint64*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -5942,7 +6002,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":311
+ /* "silx/math/medianfilter/medianfilter.pyx":364
* median_filter.median_filter[uint64](<uint64*> & input_buffer[0,0],
* <uint64*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -5951,14 +6011,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":309
+ /* "silx/math/medianfilter/medianfilter.pyx":362
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint64](<uint64*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <uint64*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64 *)(&(*((__pyx_t_5numpy_uint64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint64_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64 *)(&(*((__pyx_t_5numpy_uint64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint64_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64 *)(&(*((__pyx_t_5numpy_uint64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint64_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint64 *)(&(*((__pyx_t_5numpy_uint64_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint64_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -5972,7 +6032,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":308
+ /* "silx/math/medianfilter/medianfilter.pyx":361
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -5991,12 +6051,12 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":294
+ /* "silx/math/medianfilter/medianfilter.pyx":347
* @cython.wraparound(False)
* @cython.initializedcheck(False)
- * def _median_filter_uint64( # <<<<<<<<<<<<<<
- * cnumpy.uint64_t[:, ::1] input_buffer not None,
+ * def _median_filter_uint64(cnumpy.uint64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint64_t[:, ::1] output_buffer not None,
+ * cnumpy.int32_t[::1] kernel_size not None,
*/
/* function exit code */
@@ -6009,7 +6069,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":324
+/* "silx/math/medianfilter/medianfilter.pyx":378
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6019,24 +6079,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_18_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32[] = "_median_filter_int32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32 = {"_median_filter_int32", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32[] = "_median_filter_int32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, int32_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32 = {"_median_filter_int32", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_int32_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_int32 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -6059,31 +6122,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 5, 5, 1); __PYX_ERR(0, 324, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, 1); __PYX_ERR(0, 378, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 5, 5, 2); __PYX_ERR(0, 324, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, 2); __PYX_ERR(0, 378, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 5, 5, 3); __PYX_ERR(0, 324, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, 3); __PYX_ERR(0, 378, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 5, 5, 4); __PYX_ERR(0, 324, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, 4); __PYX_ERR(0, 378, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, 5); __PYX_ERR(0, 378, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int32") < 0)) __PYX_ERR(0, 324, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int32") < 0)) __PYX_ERR(0, 378, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -6091,31 +6160,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 324, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 325, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 326, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 327, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 328, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 378, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 379, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 380, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 382, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_int32(values[5]); if (unlikely((__pyx_v_cval == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 383, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 324, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int32", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 378, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 324, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 378, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 325, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 379, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 326, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 380, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -6126,7 +6197,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_21_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_filter_int32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int32_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -6142,7 +6213,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_int32", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":331
+ /* "silx/math/medianfilter/medianfilter.pyx":386
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -6151,7 +6222,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":332
+ /* "silx/math/medianfilter/medianfilter.pyx":387
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -6160,7 +6231,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":334
+ /* "silx/math/medianfilter/medianfilter.pyx":389
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -6169,7 +6240,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":335
+ /* "silx/math/medianfilter/medianfilter.pyx":390
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -6178,7 +6249,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":337
+ /* "silx/math/medianfilter/medianfilter.pyx":392
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6215,7 +6286,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":338
+ /* "silx/math/medianfilter/medianfilter.pyx":393
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[int](<int*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -6225,7 +6296,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":339
+ /* "silx/math/medianfilter/medianfilter.pyx":394
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[int](<int*> & input_buffer[0,0],
* <int*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -6235,7 +6306,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":340
+ /* "silx/math/medianfilter/medianfilter.pyx":395
* median_filter.median_filter[int](<int*> & input_buffer[0,0],
* <int*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -6244,14 +6315,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":338
+ /* "silx/math/medianfilter/medianfilter.pyx":393
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[int](<int*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <int*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<int>(((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<int>(((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -6265,7 +6336,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":337
+ /* "silx/math/medianfilter/medianfilter.pyx":392
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6284,7 +6355,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":324
+ /* "silx/math/medianfilter/medianfilter.pyx":378
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6302,7 +6373,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":353
+/* "silx/math/medianfilter/medianfilter.pyx":409
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6312,24 +6383,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_20_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32[] = "_median_filter_uint32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32 = {"_median_filter_uint32", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32[] = "_median_filter_uint32(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, uint32_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32 = {"_median_filter_uint32", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_uint32_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_uint32 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -6352,31 +6426,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 5, 5, 1); __PYX_ERR(0, 353, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, 1); __PYX_ERR(0, 409, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 5, 5, 2); __PYX_ERR(0, 353, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, 2); __PYX_ERR(0, 409, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 5, 5, 3); __PYX_ERR(0, 353, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, 3); __PYX_ERR(0, 409, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 5, 5, 4); __PYX_ERR(0, 353, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, 4); __PYX_ERR(0, 409, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, 5); __PYX_ERR(0, 409, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint32") < 0)) __PYX_ERR(0, 353, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint32") < 0)) __PYX_ERR(0, 409, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -6384,31 +6464,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 353, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 354, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 355, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 357, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 409, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 410, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 411, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_uint32(values[5]); if (unlikely((__pyx_v_cval == ((npy_uint32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 414, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 353, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint32", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 409, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_uint32", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 353, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 409, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 354, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 410, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 355, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 411, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -6419,7 +6501,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_23_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_filter_uint32(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint32_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -6435,7 +6517,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_uint32", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":360
+ /* "silx/math/medianfilter/medianfilter.pyx":417
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -6444,7 +6526,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":361
+ /* "silx/math/medianfilter/medianfilter.pyx":418
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -6453,7 +6535,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":363
+ /* "silx/math/medianfilter/medianfilter.pyx":420
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -6462,7 +6544,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":364
+ /* "silx/math/medianfilter/medianfilter.pyx":421
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -6471,7 +6553,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":366
+ /* "silx/math/medianfilter/medianfilter.pyx":423
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6508,7 +6590,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":367
+ /* "silx/math/medianfilter/medianfilter.pyx":424
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint32](<uint32*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -6518,7 +6600,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":368
+ /* "silx/math/medianfilter/medianfilter.pyx":425
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint32](<uint32*> & input_buffer[0,0],
* <uint32*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -6528,7 +6610,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":369
+ /* "silx/math/medianfilter/medianfilter.pyx":426
* median_filter.median_filter[uint32](<uint32*> & input_buffer[0,0],
* <uint32*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -6537,14 +6619,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":367
+ /* "silx/math/medianfilter/medianfilter.pyx":424
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint32](<uint32*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <uint32*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32 *)(&(*((__pyx_t_5numpy_uint32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32 *)(&(*((__pyx_t_5numpy_uint32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32 *)(&(*((__pyx_t_5numpy_uint32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint32 *)(&(*((__pyx_t_5numpy_uint32_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint32_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -6558,7 +6640,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":366
+ /* "silx/math/medianfilter/medianfilter.pyx":423
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6577,7 +6659,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":353
+ /* "silx/math/medianfilter/medianfilter.pyx":409
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6595,7 +6677,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":382
+/* "silx/math/medianfilter/medianfilter.pyx":440
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6605,24 +6687,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_22_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16[] = "_median_filter_int16(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16 = {"_median_filter_int16", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16[] = "_median_filter_int16(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, int16_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16 = {"_median_filter_int16", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_int16_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_int16 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -6645,31 +6730,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 5, 5, 1); __PYX_ERR(0, 382, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, 1); __PYX_ERR(0, 440, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 5, 5, 2); __PYX_ERR(0, 382, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, 2); __PYX_ERR(0, 440, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 5, 5, 3); __PYX_ERR(0, 382, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, 3); __PYX_ERR(0, 440, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 5, 5, 4); __PYX_ERR(0, 382, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, 4); __PYX_ERR(0, 440, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, 5); __PYX_ERR(0, 440, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int16") < 0)) __PYX_ERR(0, 382, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_int16") < 0)) __PYX_ERR(0, 440, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -6677,31 +6768,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 382, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 383, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 384, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 385, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 386, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 440, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 441, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 442, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_int16(values[5]); if (unlikely((__pyx_v_cval == ((npy_int16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 382, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_int16", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 440, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_int16", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 382, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 440, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 383, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 441, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 384, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 442, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -6712,7 +6805,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_25_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_filter_int16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_int16_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -6728,7 +6821,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_int16", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":389
+ /* "silx/math/medianfilter/medianfilter.pyx":448
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -6737,7 +6830,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":390
+ /* "silx/math/medianfilter/medianfilter.pyx":449
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -6746,7 +6839,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":392
+ /* "silx/math/medianfilter/medianfilter.pyx":451
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -6755,7 +6848,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":393
+ /* "silx/math/medianfilter/medianfilter.pyx":452
* int[2] buffer_shape
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -6764,7 +6857,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":395
+ /* "silx/math/medianfilter/medianfilter.pyx":454
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6801,7 +6894,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":396
+ /* "silx/math/medianfilter/medianfilter.pyx":455
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[short](<short*> & input_buffer[0,0], # <<<<<<<<<<<<<<
@@ -6811,7 +6904,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":397
+ /* "silx/math/medianfilter/medianfilter.pyx":456
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[short](<short*> & input_buffer[0,0],
* <short*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -6821,7 +6914,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":398
+ /* "silx/math/medianfilter/medianfilter.pyx":457
* median_filter.median_filter[short](<short*> & input_buffer[0,0],
* <short*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -6830,14 +6923,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":396
+ /* "silx/math/medianfilter/medianfilter.pyx":455
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[short](<short*> & input_buffer[0,0], # <<<<<<<<<<<<<<
* <short*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<short>(((short *)(&(*((__pyx_t_5numpy_int16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int16_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((short *)(&(*((__pyx_t_5numpy_int16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int16_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<short>(((short *)(&(*((__pyx_t_5numpy_int16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int16_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((short *)(&(*((__pyx_t_5numpy_int16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_int16_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -6851,7 +6944,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":395
+ /* "silx/math/medianfilter/medianfilter.pyx":454
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -6870,7 +6963,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":382
+ /* "silx/math/medianfilter/medianfilter.pyx":440
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
@@ -6888,7 +6981,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
return __pyx_r;
}
-/* "silx/math/medianfilter/medianfilter.pyx":411
+/* "silx/math/medianfilter/medianfilter.pyx":471
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint16( # <<<<<<<<<<<<<<
@@ -6898,24 +6991,27 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_24_median_fi
/* Python wrapper */
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16[] = "_median_filter_uint16(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode)";
-static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16 = {"_median_filter_uint16", (PyCFunction)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16};
+static char __pyx_doc_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16[] = "_median_filter_uint16(__Pyx_memviewslice input_buffer, __Pyx_memviewslice output_buffer, __Pyx_memviewslice kernel_size, bool conditional, int mode, uint16_t cval)";
+static PyMethodDef __pyx_mdef_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16 = {"_median_filter_uint16", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16};
static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_input_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_output_buffer = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kernel_size = { 0, 0, { 0 }, { 0 }, { 0 } };
bool __pyx_v_conditional;
int __pyx_v_mode;
+ __pyx_t_5numpy_uint16_t __pyx_v_cval;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_median_filter_uint16 (wrapper)", 0);
{
- static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,0};
- PyObject* values[5] = {0,0,0,0,0};
+ static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_input_buffer,&__pyx_n_s_output_buffer,&__pyx_n_s_kernel_size,&__pyx_n_s_conditional,&__pyx_n_s_mode,&__pyx_n_s_cval,0};
+ PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
+ case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+ CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
@@ -6938,31 +7034,37 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_fi
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_output_buffer)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 5, 5, 1); __PYX_ERR(0, 411, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, 1); __PYX_ERR(0, 471, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kernel_size)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 5, 5, 2); __PYX_ERR(0, 411, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, 2); __PYX_ERR(0, 471, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_conditional)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 5, 5, 3); __PYX_ERR(0, 411, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, 3); __PYX_ERR(0, 471, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 5, 5, 4); __PYX_ERR(0, 411, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, 4); __PYX_ERR(0, 471, __pyx_L3_error)
+ }
+ CYTHON_FALLTHROUGH;
+ case 5:
+ if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cval)) != 0)) kw_args--;
+ else {
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, 5); __PYX_ERR(0, 471, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint16") < 0)) __PYX_ERR(0, 411, __pyx_L3_error)
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_median_filter_uint16") < 0)) __PYX_ERR(0, 471, __pyx_L3_error)
}
- } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+ } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -6970,31 +7072,33 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_fi
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+ values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 412, __pyx_L3_error)
- __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 413, __pyx_L3_error)
- __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 414, __pyx_L3_error)
- __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 415, __pyx_L3_error)
- __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 416, __pyx_L3_error)
+ __pyx_v_input_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_input_buffer.memview)) __PYX_ERR(0, 472, __pyx_L3_error)
+ __pyx_v_output_buffer = __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_output_buffer.memview)) __PYX_ERR(0, 473, __pyx_L3_error)
+ __pyx_v_kernel_size = __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_kernel_size.memview)) __PYX_ERR(0, 474, __pyx_L3_error)
+ __pyx_v_conditional = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_conditional == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L3_error)
+ __pyx_v_mode = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_mode == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L3_error)
+ __pyx_v_cval = __Pyx_PyInt_As_npy_uint16(values[5]); if (unlikely((__pyx_v_cval == ((npy_uint16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 477, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 411, __pyx_L3_error)
+ __Pyx_RaiseArgtupleInvalid("_median_filter_uint16", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 471, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("silx.math.medianfilter.medianfilter._median_filter_uint16", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_input_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 412, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "input_buffer"); __PYX_ERR(0, 472, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_output_buffer.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 413, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "output_buffer"); __PYX_ERR(0, 473, __pyx_L1_error)
}
if (unlikely(((PyObject *)__pyx_v_kernel_size.memview) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 414, __pyx_L1_error)
+ PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "kernel_size"); __PYX_ERR(0, 474, __pyx_L1_error)
}
- __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode);
+ __pyx_r = __pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(__pyx_self, __pyx_v_input_buffer, __pyx_v_output_buffer, __pyx_v_kernel_size, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
/* function exit code */
goto __pyx_L0;
@@ -7005,7 +7109,7 @@ static PyObject *__pyx_pw_4silx_4math_12medianfilter_12medianfilter_27_median_fi
return __pyx_r;
}
-static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode) {
+static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_filter_uint16(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_input_buffer, __Pyx_memviewslice __pyx_v_output_buffer, __Pyx_memviewslice __pyx_v_kernel_size, bool __pyx_v_conditional, int __pyx_v_mode, __pyx_t_5numpy_uint16_t __pyx_v_cval) {
int __pyx_v_y;
int __pyx_v_image_dim;
int __pyx_v_buffer_shape[2];
@@ -7021,7 +7125,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
Py_ssize_t __pyx_t_8;
__Pyx_RefNannySetupContext("_median_filter_uint16", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":419
+ /* "silx/math/medianfilter/medianfilter.pyx":480
*
* cdef:
* int y = 0 # <<<<<<<<<<<<<<
@@ -7030,7 +7134,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
*/
__pyx_v_y = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":420
+ /* "silx/math/medianfilter/medianfilter.pyx":481
* cdef:
* int y = 0
* int image_dim = input_buffer.shape[1] - 1 # <<<<<<<<<<<<<<
@@ -7039,7 +7143,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
*/
__pyx_v_image_dim = ((__pyx_v_input_buffer.shape[1]) - 1);
- /* "silx/math/medianfilter/medianfilter.pyx":422
+ /* "silx/math/medianfilter/medianfilter.pyx":483
* int image_dim = input_buffer.shape[1] - 1
* int[2] buffer_shape,
* buffer_shape[0] = input_buffer.shape[0] # <<<<<<<<<<<<<<
@@ -7048,7 +7152,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
*/
(__pyx_v_buffer_shape[0]) = (__pyx_v_input_buffer.shape[0]);
- /* "silx/math/medianfilter/medianfilter.pyx":423
+ /* "silx/math/medianfilter/medianfilter.pyx":484
* int[2] buffer_shape,
* buffer_shape[0] = input_buffer.shape[0]
* buffer_shape[1] = input_buffer.shape[1] # <<<<<<<<<<<<<<
@@ -7057,7 +7161,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
*/
(__pyx_v_buffer_shape[1]) = (__pyx_v_input_buffer.shape[1]);
- /* "silx/math/medianfilter/medianfilter.pyx":425
+ /* "silx/math/medianfilter/medianfilter.pyx":486
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -7094,7 +7198,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
{
__pyx_v_y = (int)(0 + 1 * __pyx_t_2);
- /* "silx/math/medianfilter/medianfilter.pyx":426
+ /* "silx/math/medianfilter/medianfilter.pyx":487
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint16](<uint16*> & input_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -7104,7 +7208,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":427
+ /* "silx/math/medianfilter/medianfilter.pyx":488
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint16](<uint16*> & input_buffer[0, 0],
* <uint16*> & output_buffer[0, 0], # <<<<<<<<<<<<<<
@@ -7114,7 +7218,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
__pyx_t_6 = 0;
__pyx_t_7 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":428
+ /* "silx/math/medianfilter/medianfilter.pyx":489
* median_filter.median_filter[uint16](<uint16*> & input_buffer[0, 0],
* <uint16*> & output_buffer[0, 0],
* <int*>&kernel_size[0], # <<<<<<<<<<<<<<
@@ -7123,14 +7227,14 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
*/
__pyx_t_8 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":426
+ /* "silx/math/medianfilter/medianfilter.pyx":487
*
* for y in prange(input_buffer.shape[0], nogil=True):
* median_filter.median_filter[uint16](<uint16*> & input_buffer[0, 0], # <<<<<<<<<<<<<<
* <uint16*> & output_buffer[0, 0],
* <int*>&kernel_size[0],
*/
- median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16 *)(&(*((__pyx_t_5numpy_uint16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint16_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16 *)(&(*((__pyx_t_5numpy_uint16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint16_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode);
+ median_filter<__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16>(((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16 *)(&(*((__pyx_t_5numpy_uint16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint16_t *) ( /* dim=0 */ (__pyx_v_input_buffer.data + __pyx_t_4 * __pyx_v_input_buffer.strides[0]) )) + __pyx_t_5)) ))))), ((__pyx_t_4silx_4math_12medianfilter_12medianfilter_uint16 *)(&(*((__pyx_t_5numpy_uint16_t *) ( /* dim=1 */ ((char *) (((__pyx_t_5numpy_uint16_t *) ( /* dim=0 */ (__pyx_v_output_buffer.data + __pyx_t_6 * __pyx_v_output_buffer.strides[0]) )) + __pyx_t_7)) ))))), ((int *)(&(*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ ((char *) (((__pyx_t_5numpy_int32_t *) __pyx_v_kernel_size.data) + __pyx_t_8)) ))))), ((int *)__pyx_v_buffer_shape), __pyx_v_y, 0, __pyx_v_image_dim, __pyx_v_conditional, __pyx_v_mode, __pyx_v_cval);
}
}
}
@@ -7144,7 +7248,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
#endif
}
- /* "silx/math/medianfilter/medianfilter.pyx":425
+ /* "silx/math/medianfilter/medianfilter.pyx":486
* buffer_shape[1] = input_buffer.shape[1]
*
* for y in prange(input_buffer.shape[0], nogil=True): # <<<<<<<<<<<<<<
@@ -7163,7 +7267,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
}
}
- /* "silx/math/medianfilter/medianfilter.pyx":411
+ /* "silx/math/medianfilter/medianfilter.pyx":471
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint16( # <<<<<<<<<<<<<<
@@ -7181,7 +7285,7 @@ static PyObject *__pyx_pf_4silx_4math_12medianfilter_12medianfilter_26_median_fi
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -7219,8 +7323,9 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
int __pyx_t_4;
int __pyx_t_5;
int __pyx_t_6;
- PyObject *__pyx_t_7 = NULL;
- char *__pyx_t_8;
+ PyArray_Descr *__pyx_t_7;
+ PyObject *__pyx_t_8 = NULL;
+ char *__pyx_t_9;
if (__pyx_v_info == NULL) {
PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
return -1;
@@ -7229,7 +7334,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
__Pyx_GIVEREF(__pyx_v_info->obj);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":222
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265
*
* cdef int i, ndim
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -7238,7 +7343,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":223
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266
* cdef int i, ndim
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -7247,7 +7352,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":225
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
*
* ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<<
@@ -7256,11 +7361,11 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
@@ -7270,53 +7375,53 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L4_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":228
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not C contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_C_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 229, __pyx_L1_error)
+ __PYX_ERR(1, 272, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":227
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270
* ndim = PyArray_NDIM(self)
*
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
__pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
@@ -7326,49 +7431,49 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L7_bool_binop_done;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":232
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<<
* raise ValueError(u"ndarray is not Fortran contiguous")
*
*/
- __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_F_CONTIGUOUS) != 0)) != 0);
+ __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 233, __pyx_L1_error)
+ __PYX_ERR(1, 276, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":231
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274
* raise ValueError(u"ndarray is not C contiguous")
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<<
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous")
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":235
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278
* raise ValueError(u"ndarray is not Fortran contiguous")
*
* info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<<
@@ -7377,7 +7482,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":236
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279
*
* info.buf = PyArray_DATA(self)
* info.ndim = ndim # <<<<<<<<<<<<<<
@@ -7386,7 +7491,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->ndim = __pyx_v_ndim;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -7396,7 +7501,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":240
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283
* # Allocate new buffer for strides and shape info.
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim) # <<<<<<<<<<<<<<
@@ -7405,7 +7510,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":241
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284
* # This is allocated as one block, strides first.
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim # <<<<<<<<<<<<<<
@@ -7414,7 +7519,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":242
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285
* info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
* info.shape = info.strides + ndim
* for i in range(ndim): # <<<<<<<<<<<<<<
@@ -7426,7 +7531,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":243
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":286
* info.shape = info.strides + ndim
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<<
@@ -7435,7 +7540,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":244
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":287
* for i in range(ndim):
* info.strides[i] = PyArray_STRIDES(self)[i]
* info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<<
@@ -7445,7 +7550,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":237
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280
* info.buf = PyArray_DATA(self)
* info.ndim = ndim
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -7455,7 +7560,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L9;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":246
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":289
* info.shape[i] = PyArray_DIMS(self)[i]
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self) # <<<<<<<<<<<<<<
@@ -7465,7 +7570,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":247
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290
* else:
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self) # <<<<<<<<<<<<<<
@@ -7476,7 +7581,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L9:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":248
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291
* info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL # <<<<<<<<<<<<<<
@@ -7485,7 +7590,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->suboffsets = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":249
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292
* info.shape = <Py_ssize_t*>PyArray_DIMS(self)
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<<
@@ -7494,7 +7599,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":250
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293
* info.suboffsets = NULL
* info.itemsize = PyArray_ITEMSIZE(self)
* info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<<
@@ -7503,28 +7608,29 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":253
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":296
*
* cdef int t
* cdef char* f = NULL # <<<<<<<<<<<<<<
- * cdef dtype descr = self.descr
+ * cdef dtype descr = <dtype>PyArray_DESCR(self)
* cdef int offset
*/
__pyx_v_f = NULL;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":254
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":297
* cdef int t
* cdef char* f = NULL
- * cdef dtype descr = self.descr # <<<<<<<<<<<<<<
+ * cdef dtype descr = <dtype>PyArray_DESCR(self) # <<<<<<<<<<<<<<
* cdef int offset
*
*/
- __pyx_t_3 = ((PyObject *)__pyx_v_self->descr);
+ __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
+ __pyx_t_3 = ((PyObject *)__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":257
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":300
* cdef int offset
*
* info.obj = self # <<<<<<<<<<<<<<
@@ -7537,7 +7643,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__Pyx_DECREF(__pyx_v_info->obj);
__pyx_v_info->obj = ((PyObject *)__pyx_v_self);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -7547,7 +7653,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":260
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":303
*
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num # <<<<<<<<<<<<<<
@@ -7557,7 +7663,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_4 = __pyx_v_descr->type_num;
__pyx_v_t = __pyx_t_4;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -7577,7 +7683,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
}
__pyx_L15_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":262
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":305
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -7594,7 +7700,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_t_1 = __pyx_t_2;
__pyx_L14_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -7603,20 +7709,20 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
if (unlikely(__pyx_t_1)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 263, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 263, __pyx_L1_error)
+ __PYX_ERR(1, 306, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":261
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":304
* if not PyDataType_HASFIELDS(descr):
* t = descr.type_num
* if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -7625,7 +7731,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":264
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":307
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<<
@@ -7636,206 +7742,206 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
case NPY_BYTE:
__pyx_v_f = ((char *)"b");
break;
+ case NPY_UBYTE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":308
* raise ValueError(u"Non-native byte order not supported")
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
*/
- case NPY_UBYTE:
__pyx_v_f = ((char *)"B");
break;
+ case NPY_SHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":309
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
*/
- case NPY_SHORT:
__pyx_v_f = ((char *)"h");
break;
+ case NPY_USHORT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":267
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":310
* elif t == NPY_UBYTE: f = "B"
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
*/
- case NPY_USHORT:
__pyx_v_f = ((char *)"H");
break;
+ case NPY_INT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":311
* elif t == NPY_SHORT: f = "h"
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
*/
- case NPY_INT:
__pyx_v_f = ((char *)"i");
break;
+ case NPY_UINT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":269
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":312
* elif t == NPY_USHORT: f = "H"
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
*/
- case NPY_UINT:
__pyx_v_f = ((char *)"I");
break;
+ case NPY_LONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":313
* elif t == NPY_INT: f = "i"
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
*/
- case NPY_LONG:
__pyx_v_f = ((char *)"l");
break;
+ case NPY_ULONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":314
* elif t == NPY_UINT: f = "I"
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
*/
- case NPY_ULONG:
__pyx_v_f = ((char *)"L");
break;
+ case NPY_LONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":315
* elif t == NPY_LONG: f = "l"
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
*/
- case NPY_LONGLONG:
__pyx_v_f = ((char *)"q");
break;
+ case NPY_ULONGLONG:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":273
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":316
* elif t == NPY_ULONG: f = "L"
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
*/
- case NPY_ULONGLONG:
__pyx_v_f = ((char *)"Q");
break;
+ case NPY_FLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":317
* elif t == NPY_LONGLONG: f = "q"
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
*/
- case NPY_FLOAT:
__pyx_v_f = ((char *)"f");
break;
+ case NPY_DOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":318
* elif t == NPY_ULONGLONG: f = "Q"
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
*/
- case NPY_DOUBLE:
__pyx_v_f = ((char *)"d");
break;
+ case NPY_LONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":319
* elif t == NPY_FLOAT: f = "f"
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
*/
- case NPY_LONGDOUBLE:
__pyx_v_f = ((char *)"g");
break;
+ case NPY_CFLOAT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":277
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":320
* elif t == NPY_DOUBLE: f = "d"
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
*/
- case NPY_CFLOAT:
__pyx_v_f = ((char *)"Zf");
break;
+ case NPY_CDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":321
* elif t == NPY_LONGDOUBLE: f = "g"
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O"
*/
- case NPY_CDOUBLE:
__pyx_v_f = ((char *)"Zd");
break;
+ case NPY_CLONGDOUBLE:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":322
* elif t == NPY_CFLOAT: f = "Zf"
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f = "O"
* else:
*/
- case NPY_CLONGDOUBLE:
__pyx_v_f = ((char *)"Zg");
break;
+ case NPY_OBJECT:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":323
* elif t == NPY_CDOUBLE: f = "Zd"
* elif t == NPY_CLONGDOUBLE: f = "Zg"
* elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- case NPY_OBJECT:
__pyx_v_f = ((char *)"O");
break;
default:
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":282
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":325
* elif t == NPY_OBJECT: f = "O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
* info.format = f
* return
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_7 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 282, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_7);
+ __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 325, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 282, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 282, __pyx_L1_error)
+ __PYX_ERR(1, 325, __pyx_L1_error)
break;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":326
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f # <<<<<<<<<<<<<<
@@ -7844,7 +7950,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_info->format = __pyx_v_f;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":327
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* info.format = f
* return # <<<<<<<<<<<<<<
@@ -7854,7 +7960,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
__pyx_r = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":259
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":302
* info.obj = self
*
* if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<<
@@ -7863,7 +7969,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":329
* return
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<<
@@ -7873,7 +7979,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
/*else*/ {
__pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":330
* else:
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<<
@@ -7882,7 +7988,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
(__pyx_v_info->format[0]) = '^';
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":288
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":331
* info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0 # <<<<<<<<<<<<<<
@@ -7891,17 +7997,17 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
*/
__pyx_v_offset = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":332
* info.format[0] = c'^' # Native data types, manual alignment
* offset = 0
* f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<<
* info.format + _buffer_format_string_len,
* &offset)
*/
- __pyx_t_8 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(1, 289, __pyx_L1_error)
- __pyx_v_f = __pyx_t_8;
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 332, __pyx_L1_error)
+ __pyx_v_f = __pyx_t_9;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":335
* info.format + _buffer_format_string_len,
* &offset)
* f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<<
@@ -7911,7 +8017,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
(__pyx_v_f[0]) = '\x00';
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":215
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258
* # experimental exception made for __getbuffer__ and __releasebuffer__
* # -- the details of this may change.
* def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<<
@@ -7924,7 +8030,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
- __Pyx_XDECREF(__pyx_t_7);
+ __Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
if (__pyx_v_info->obj != NULL) {
@@ -7943,7 +8049,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -7967,7 +8073,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
int __pyx_t_1;
__Pyx_RefNannySetupContext("__releasebuffer__", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -7977,7 +8083,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":339
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format) # <<<<<<<<<<<<<<
@@ -7986,7 +8092,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->format);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":295
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":338
*
* def __releasebuffer__(ndarray self, Py_buffer* info):
* if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<<
@@ -7995,7 +8101,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -8005,7 +8111,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":298
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":341
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t):
* PyObject_Free(info.strides) # <<<<<<<<<<<<<<
@@ -8014,7 +8120,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
PyObject_Free(__pyx_v_info->strides);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":340
* if PyArray_HASFIELDS(self):
* PyObject_Free(info.format)
* if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<<
@@ -8023,7 +8129,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":294
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":337
* f[0] = c'\0' # Terminate format string
*
* def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<<
@@ -8035,7 +8141,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -8049,7 +8155,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822
*
* cdef inline object PyArray_MultiIterNew1(a):
* return PyArray_MultiIterNew(1, <void*>a) # <<<<<<<<<<<<<<
@@ -8057,13 +8163,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
* cdef inline object PyArray_MultiIterNew2(a, b):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 776, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":775
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821
* ctypedef npy_cdouble complex_t
*
* cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<<
@@ -8082,7 +8188,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -8096,7 +8202,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":825
*
* cdef inline object PyArray_MultiIterNew2(a, b):
* return PyArray_MultiIterNew(2, <void*>a, <void*>b) # <<<<<<<<<<<<<<
@@ -8104,13 +8210,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
* cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 779, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 825, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":824
* return PyArray_MultiIterNew(1, <void*>a)
*
* cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<<
@@ -8129,7 +8235,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -8143,7 +8249,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":782
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828
*
* cdef inline object PyArray_MultiIterNew3(a, b, c):
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c) # <<<<<<<<<<<<<<
@@ -8151,13 +8257,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 782, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 828, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":781
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827
* return PyArray_MultiIterNew(2, <void*>a, <void*>b)
*
* cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<<
@@ -8176,7 +8282,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -8190,7 +8296,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d):
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d) # <<<<<<<<<<<<<<
@@ -8198,13 +8304,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 831, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830
* return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
*
* cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<<
@@ -8223,7 +8329,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -8237,7 +8343,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":788
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e) # <<<<<<<<<<<<<<
@@ -8245,13 +8351,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
* cdef inline tuple PyDataType_SHAPE(dtype d):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __pyx_L1_error)
+ __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 834, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":787
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833
* return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
*
* cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<<
@@ -8270,7 +8376,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -8284,7 +8390,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
int __pyx_t_1;
__Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -8294,7 +8400,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
if (__pyx_t_1) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":792
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d):
* return <tuple>d.subarray.shape # <<<<<<<<<<<<<<
@@ -8306,7 +8412,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
__pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837
*
* cdef inline tuple PyDataType_SHAPE(dtype d):
* if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<<
@@ -8315,7 +8421,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":794
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840
* return <tuple>d.subarray.shape
* else:
* return () # <<<<<<<<<<<<<<
@@ -8329,7 +8435,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
goto __pyx_L0;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836
* return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
*
* cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<<
@@ -8344,7 +8450,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -8373,7 +8479,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
char *__pyx_t_9;
__Pyx_RefNannySetupContext("_util_dtypestring", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":847
*
* cdef dtype child
* cdef int endian_detector = 1 # <<<<<<<<<<<<<<
@@ -8382,7 +8488,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_endian_detector = 1;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":848
* cdef dtype child
* cdef int endian_detector = 1
* cdef bint little_endian = ((<char*>&endian_detector)[0] != 0) # <<<<<<<<<<<<<<
@@ -8391,7 +8497,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -8400,21 +8506,21 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- __PYX_ERR(1, 805, __pyx_L1_error)
+ __PYX_ERR(1, 851, __pyx_L1_error)
}
__pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 805, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":852
*
* for childname in descr.names:
* fields = descr.fields[childname] # <<<<<<<<<<<<<<
@@ -8423,15 +8529,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_v_descr->fields == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- __PYX_ERR(1, 806, __pyx_L1_error)
+ __PYX_ERR(1, 852, __pyx_L1_error)
}
- __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 806, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 806, __pyx_L1_error)
+ if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(1, 852, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
__pyx_t_3 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":807
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":853
* for childname in descr.names:
* fields = descr.fields[childname]
* child, new_offset = fields # <<<<<<<<<<<<<<
@@ -8444,7 +8550,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- __PYX_ERR(1, 807, __pyx_L1_error)
+ __PYX_ERR(1, 853, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
@@ -8452,51 +8558,51 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 807, __pyx_L1_error)
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
} else {
- __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 807, __pyx_L1_error)
+ __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 853, __pyx_L1_error)
}
- if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 807, __pyx_L1_error)
+ if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(1, 853, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
__pyx_t_3 = 0;
__Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
*/
- __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 809, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 855, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 810, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 810, __pyx_L1_error)
+ __PYX_ERR(1, 856, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":855
* child, new_offset = fields
*
* if (end - f) - <int>(new_offset - offset[0]) < 15: # <<<<<<<<<<<<<<
@@ -8505,7 +8611,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -8525,7 +8631,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__pyx_L8_next_or:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":859
*
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<<
@@ -8542,7 +8648,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = __pyx_t_7;
__pyx_L7_bool_binop_done:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -8551,20 +8657,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 814, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __PYX_ERR(1, 814, __pyx_L1_error)
+ __PYX_ERR(1, 860, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":858
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
*
* if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<<
@@ -8573,7 +8679,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":870
*
* # Output padding bytes
* while offset[0] < new_offset: # <<<<<<<<<<<<<<
@@ -8581,15 +8687,15 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* f += 1
*/
while (1) {
- __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 824, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 870, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_6) break;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":871
* # Output padding bytes
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<<
@@ -8598,7 +8704,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
(__pyx_v_f[0]) = 0x78;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":826
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":872
* while offset[0] < new_offset:
* f[0] = 120 # "x"; pad byte
* f += 1 # <<<<<<<<<<<<<<
@@ -8607,7 +8713,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":873
* f[0] = 120 # "x"; pad byte
* f += 1
* offset[0] += 1 # <<<<<<<<<<<<<<
@@ -8618,7 +8724,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":829
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":875
* offset[0] += 1
*
* offset[0] += child.itemsize # <<<<<<<<<<<<<<
@@ -8628,7 +8734,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_8 = 0;
(__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -8638,19 +8744,19 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
if (__pyx_t_6) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":832
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":878
*
* if not PyDataType_HASFIELDS(child):
* t = child.type_num # <<<<<<<<<<<<<<
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.")
*/
- __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 832, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -8660,20 +8766,20 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
if (unlikely(__pyx_t_6)) {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 880, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 834, __pyx_L1_error)
+ __PYX_ERR(1, 880, __pyx_L1_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":879
* if not PyDataType_HASFIELDS(child):
* t = child.type_num
* if end - f < 5: # <<<<<<<<<<<<<<
@@ -8682,252 +8788,252 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":883
*
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<<
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 837, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 98;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":884
* # Until ticket #99 is fixed, use integers to avoid warnings
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<<
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 838, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 884, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":839
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":885
* if t == NPY_BYTE: f[0] = 98 #"b"
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<<
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 839, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 885, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x68;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":886
* elif t == NPY_UBYTE: f[0] = 66 #"B"
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<<
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 840, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 886, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 72;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":841
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":887
* elif t == NPY_SHORT: f[0] = 104 #"h"
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<<
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 841, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 887, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x69;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":888
* elif t == NPY_USHORT: f[0] = 72 #"H"
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<<
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 842, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 888, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 73;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":843
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":889
* elif t == NPY_INT: f[0] = 105 #"i"
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<<
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 843, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 889, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x6C;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":844
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":890
* elif t == NPY_UINT: f[0] = 73 #"I"
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<<
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 844, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 890, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 76;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":845
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":891
* elif t == NPY_LONG: f[0] = 108 #"l"
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<<
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 845, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 891, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x71;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":846
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":892
* elif t == NPY_ULONG: f[0] = 76 #"L"
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<<
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 846, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 892, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 81;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":893
* elif t == NPY_LONGLONG: f[0] = 113 #"q"
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<<
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 847, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 893, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x66;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":894
* elif t == NPY_ULONGLONG: f[0] = 81 #"Q"
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<<
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 848, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 894, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x64;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":849
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":895
* elif t == NPY_FLOAT: f[0] = 102 #"f"
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<<
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 849, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 895, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 0x67;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":850
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":896
* elif t == NPY_DOUBLE: f[0] = 100 #"d"
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<<
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 850, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 896, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -8936,18 +9042,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":897
* elif t == NPY_LONGDOUBLE: f[0] = 103 #"g"
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<<
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O"
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 851, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 897, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -8956,18 +9062,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":898
* elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<<
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
*/
- __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 852, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 898, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_6) {
(__pyx_v_f[0]) = 90;
@@ -8976,25 +9082,25 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":899
* elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd
* elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
* elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<<
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
*/
- __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 853, __pyx_L1_error)
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 899, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (likely(__pyx_t_6)) {
(__pyx_v_f[0]) = 79;
goto __pyx_L15;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":901
* elif t == NPY_OBJECT: f[0] = 79 #"O"
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<<
@@ -9002,18 +9108,18 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
* else:
*/
/*else*/ {
- __pyx_t_3 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(1, 855, __pyx_L1_error)
+ __PYX_ERR(1, 901, __pyx_L1_error)
}
__pyx_L15:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":902
* else:
* raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
* f += 1 # <<<<<<<<<<<<<<
@@ -9022,7 +9128,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*/
__pyx_v_f = (__pyx_v_f + 1);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":877
* offset[0] += child.itemsize
*
* if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<<
@@ -9032,7 +9138,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
goto __pyx_L13;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":906
* # Cython ignores struct boundary information ("T{...}"),
* # so don't output it
* f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<<
@@ -9040,12 +9146,12 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
*
*/
/*else*/ {
- __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 860, __pyx_L1_error)
+ __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(1, 906, __pyx_L1_error)
__pyx_v_f = __pyx_t_9;
}
__pyx_L13:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":851
* cdef tuple fields
*
* for childname in descr.names: # <<<<<<<<<<<<<<
@@ -9055,7 +9161,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":861
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":907
* # so don't output it
* f = _util_dtypestring(child, f, end, offset)
* return f # <<<<<<<<<<<<<<
@@ -9065,7 +9171,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
__pyx_r = __pyx_v_f;
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":796
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842
* return ()
*
* cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<<
@@ -9090,166 +9196,120 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
- PyObject *__pyx_v_baseptr;
__Pyx_RefNannyDeclarations
- int __pyx_t_1;
- int __pyx_t_2;
__Pyx_RefNannySetupContext("set_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
- * cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- __pyx_t_1 = (__pyx_v_base == Py_None);
- __pyx_t_2 = (__pyx_t_1 != 0);
- if (__pyx_t_2) {
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":980
- * cdef PyObject* baseptr
- * if base is None:
- * baseptr = NULL # <<<<<<<<<<<<<<
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- */
- __pyx_v_baseptr = NULL;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":979
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1023
+ *
* cdef inline void set_array_base(ndarray arr, object base):
- * cdef PyObject* baseptr
- * if base is None: # <<<<<<<<<<<<<<
- * baseptr = NULL
- * else:
- */
- goto __pyx_L3;
- }
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":982
- * baseptr = NULL
- * else:
- * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<<
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- */
- /*else*/ {
- Py_INCREF(__pyx_v_base);
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":983
- * else:
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base # <<<<<<<<<<<<<<
- * Py_XDECREF(arr.base)
- * arr.base = baseptr
- */
- __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
- }
- __pyx_L3:;
-
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":984
- * Py_INCREF(base) # important to do this before decref below!
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base) # <<<<<<<<<<<<<<
- * arr.base = baseptr
+ * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<<
+ * PyArray_SetBaseObject(arr, base)
*
*/
- Py_XDECREF(__pyx_v_arr->base);
+ Py_INCREF(__pyx_v_base);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":985
- * baseptr = <PyObject*>base
- * Py_XDECREF(arr.base)
- * arr.base = baseptr # <<<<<<<<<<<<<<
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1024
+ * cdef inline void set_array_base(ndarray arr, object base):
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<<
*
* cdef inline object get_array_base(ndarray arr):
*/
- __pyx_v_arr->base = __pyx_v_baseptr;
+ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":977
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1022
+ * int _import_umath() except -1
*
* cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<<
- * cdef PyObject* baseptr
- * if base is None:
+ * Py_INCREF(base) # important to do this before stealing the reference below!
+ * PyArray_SetBaseObject(arr, base)
*/
/* function exit code */
__Pyx_RefNannyFinishContext();
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
+ PyObject *__pyx_v_base;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
int __pyx_t_1;
__Pyx_RefNannySetupContext("get_array_base", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1027
*
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr) # <<<<<<<<<<<<<<
+ * if base is NULL:
* return None
- * else:
*/
- __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0);
- if (__pyx_t_1) {
+ __pyx_v_base = PyArray_BASE(__pyx_v_arr);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":989
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL:
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
+ * return None
+ * return <object>base
+ */
+ __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
+ if (__pyx_t_1) {
+
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1029
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
* return None # <<<<<<<<<<<<<<
- * else:
- * return <object>arr.base
+ * return <object>base
+ *
*/
__Pyx_XDECREF(__pyx_r);
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":988
- *
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1028
* cdef inline object get_array_base(ndarray arr):
- * if arr.base is NULL: # <<<<<<<<<<<<<<
+ * base = PyArray_BASE(arr)
+ * if base is NULL: # <<<<<<<<<<<<<<
* return None
- * else:
+ * return <object>base
*/
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":991
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1030
+ * if base is NULL:
* return None
- * else:
- * return <object>arr.base # <<<<<<<<<<<<<<
- *
+ * return <object>base # <<<<<<<<<<<<<<
*
+ * # Versions of the import_* functions which are more suitable for
*/
- /*else*/ {
- __Pyx_XDECREF(__pyx_r);
- __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
- __pyx_r = ((PyObject *)__pyx_v_arr->base);
- goto __pyx_L0;
- }
+ __Pyx_XDECREF(__pyx_r);
+ __Pyx_INCREF(((PyObject *)__pyx_v_base));
+ __pyx_r = ((PyObject *)__pyx_v_base);
+ goto __pyx_L0;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":987
- * arr.base = baseptr
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1026
+ * PyArray_SetBaseObject(arr, base)
*
* cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<<
- * if arr.base is NULL:
- * return None
+ * base = PyArray_BASE(arr)
+ * if base is NULL:
*/
/* function exit code */
@@ -9259,7 +9319,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -9280,7 +9340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_array", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9296,16 +9356,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":998
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1036
* cdef inline int import_array() except -1:
* try:
* _import_array() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import")
*/
- __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 998, __pyx_L3_error)
+ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1036, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9319,7 +9379,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":999
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1037
* try:
* _import_array()
* except Exception: # <<<<<<<<<<<<<<
@@ -9329,28 +9389,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 999, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1037, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1038, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1000, __pyx_L5_except_error)
+ __PYX_ERR(1, 1038, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":997
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1035
* # Cython code.
* cdef inline int import_array() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9365,7 +9425,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":996
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1034
* # Versions of the import_* functions which are more suitable for
* # Cython code.
* cdef inline int import_array() except -1: # <<<<<<<<<<<<<<
@@ -9388,7 +9448,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -9409,7 +9469,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_umath", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9425,16 +9485,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1004
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1042
* cdef inline int import_umath() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1004, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1042, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9448,7 +9508,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1005
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1043
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -9458,28 +9518,28 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1005, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1043, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1044, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1006, __pyx_L5_except_error)
+ __PYX_ERR(1, 1044, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1003
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1041
*
* cdef inline int import_umath() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9494,7 +9554,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1002
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1040
* raise ImportError("numpy.core.multiarray failed to import")
*
* cdef inline int import_umath() except -1: # <<<<<<<<<<<<<<
@@ -9517,7 +9577,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
return __pyx_r;
}
-/* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+/* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -9538,7 +9598,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
PyObject *__pyx_t_8 = NULL;
__Pyx_RefNannySetupContext("import_ufunc", 0);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9554,16 +9614,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1010
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1048
* cdef inline int import_ufunc() except -1:
* try:
* _import_umath() # <<<<<<<<<<<<<<
* except Exception:
* raise ImportError("numpy.core.umath failed to import")
*/
- __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1010, __pyx_L3_error)
+ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1048, __pyx_L3_error)
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9577,7 +9637,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
goto __pyx_L8_try_end;
__pyx_L3_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1011
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1049
* try:
* _import_umath()
* except Exception: # <<<<<<<<<<<<<<
@@ -9586,26 +9646,26 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
if (__pyx_t_4) {
__Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1011, __pyx_L5_except_error)
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1049, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1050, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
- __PYX_ERR(1, 1012, __pyx_L5_except_error)
+ __PYX_ERR(1, 1050, __pyx_L5_except_error)
}
goto __pyx_L5_except_error;
__pyx_L5_except_error:;
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1009
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1047
*
* cdef inline int import_ufunc() except -1:
* try: # <<<<<<<<<<<<<<
@@ -9620,7 +9680,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
__pyx_L8_try_end:;
}
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1008
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1046
* raise ImportError("numpy.core.umath failed to import")
*
* cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<<
@@ -9791,10 +9851,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyObject *__pyx_t_3 = NULL;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- char *__pyx_t_6;
- int __pyx_t_7;
- Py_ssize_t __pyx_t_8;
- PyObject *__pyx_t_9 = NULL;
+ PyObject *__pyx_t_6 = NULL;
+ char *__pyx_t_7;
+ int __pyx_t_8;
+ Py_ssize_t __pyx_t_9;
PyObject *__pyx_t_10 = NULL;
Py_ssize_t __pyx_t_11;
__Pyx_RefNannySetupContext("__cinit__", 0);
@@ -9840,7 +9900,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if itemsize <= 0:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9872,7 +9932,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if not isinstance(format, bytes):
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 135, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9905,13 +9965,25 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._format = format # keep a reference to the byte string
* self.format = self._format
*/
- __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 138, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_t_6 = NULL;
+ if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+ __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+ if (likely(__pyx_t_6)) {
+ PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+ __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(function);
+ __Pyx_DECREF_SET(__pyx_t_5, function);
+ }
+ }
+ __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ASCII) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ASCII);
+ __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 138, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":137
* raise ValueError("itemsize <= 0 for cython.array")
@@ -9930,13 +10002,13 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*/
if (!(likely(PyBytes_CheckExact(__pyx_v_format))||((__pyx_v_format) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_format)->tp_name), 0))) __PYX_ERR(2, 139, __pyx_L1_error)
- __pyx_t_5 = __pyx_v_format;
- __Pyx_INCREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_5);
+ __pyx_t_3 = __pyx_v_format;
+ __Pyx_INCREF(__pyx_t_3);
+ __Pyx_GIVEREF(__pyx_t_3);
__Pyx_GOTREF(__pyx_v_self->_format);
__Pyx_DECREF(__pyx_v_self->_format);
- __pyx_v_self->_format = ((PyObject*)__pyx_t_5);
- __pyx_t_5 = 0;
+ __pyx_v_self->_format = ((PyObject*)__pyx_t_3);
+ __pyx_t_3 = 0;
/* "View.MemoryView":140
* format = format.encode('ASCII')
@@ -9949,8 +10021,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(2, 140, __pyx_L1_error)
}
- __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
- __pyx_v_self->format = __pyx_t_6;
+ __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_self->_format); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(2, 140, __pyx_L1_error)
+ __pyx_v_self->format = __pyx_t_7;
/* "View.MemoryView":143
*
@@ -9987,10 +10059,10 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, 0, 0, 0);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(2, 147, __pyx_L1_error)
/* "View.MemoryView":146
@@ -10009,21 +10081,21 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* if dim <= 0:
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
- __pyx_t_7 = 0;
- __pyx_t_5 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
+ __pyx_t_8 = 0;
+ __pyx_t_3 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_3); __pyx_t_1 = 0;
for (;;) {
- if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
+ if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(2, 150, __pyx_L1_error)
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
#endif
- __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_v_dim = __pyx_t_8;
- __pyx_v_idx = __pyx_t_7;
- __pyx_t_7 = (__pyx_t_7 + 1);
+ __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 150, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __pyx_v_dim = __pyx_t_9;
+ __pyx_v_idx = __pyx_t_8;
+ __pyx_t_8 = (__pyx_t_8 + 1);
/* "View.MemoryView":151
*
@@ -10042,24 +10114,24 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self._shape[idx] = dim
*
*/
- __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_5);
+ __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
- __Pyx_GIVEREF(__pyx_t_9);
- PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9);
- __pyx_t_3 = 0;
- __pyx_t_9 = 0;
- __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 152, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
+ __Pyx_GIVEREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5);
+ __Pyx_GIVEREF(__pyx_t_6);
+ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_6);
+ __pyx_t_5 = 0;
+ __pyx_t_6 = 0;
+ __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 152, __pyx_L1_error)
@@ -10090,7 +10162,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* raise ValueError("Invalid shape in axis %d: %d." % (idx, dim))
*/
}
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* "View.MemoryView":156
*
@@ -10184,11 +10256,11 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
* self.len = fill_contig_strides_array(self._shape, self._strides,
*/
/*else*/ {
- __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 163, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_v_mode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 163, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
+ __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 163, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__PYX_ERR(2, 163, __pyx_L1_error)
@@ -10261,7 +10333,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
*
* if self.dtype_is_object:
*/
- __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 175, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_Raise(__pyx_t_10, 0, 0, 0);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -10311,8 +10383,8 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__PYX_ERR(2, 179, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_div_Py_ssize_t(__pyx_v_self->len, __pyx_v_itemsize);
- __pyx_t_8 = __pyx_t_1;
- for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_8; __pyx_t_11+=1) {
+ __pyx_t_9 = __pyx_t_1;
+ for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_9; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
/* "View.MemoryView":180
@@ -10366,7 +10438,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_9);
+ __Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("View.MemoryView.array.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
@@ -10502,7 +10574,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru
* info.buf = self.data
* info.len = self.len
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 191, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11218,7 +11290,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -11271,7 +11343,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -11747,7 +11819,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
* return __pyx_unpickle_Enum, (type(self), 0xb068931, state)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 11, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -11793,7 +11865,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi
*/
/*else*/ {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
+ __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
@@ -12915,7 +12987,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -13942,7 +14014,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview
* else:
* if len(self.view.format) == 1:
*/
- __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
+ __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 490, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -14298,7 +14370,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 515, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14838,7 +14910,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -14952,7 +15024,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__29, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __pyx_t_3 = PyNumber_Multiply(__pyx_tuple__26, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
@@ -15953,7 +16025,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16006,7 +16078,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -16357,9 +16429,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_7);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < ((__pyx_v_ndim - __pyx_t_8) + 1); __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__32);
- __Pyx_GIVEREF(__pyx_slice__32);
- PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__32);
+ __Pyx_INCREF(__pyx_slice__29);
+ __Pyx_GIVEREF(__pyx_slice__29);
+ PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_slice__29);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_7); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 677, __pyx_L1_error)
@@ -16392,7 +16464,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
* else:
*/
/*else*/ {
- __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__33); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
+ __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_result, __pyx_slice__29); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 680, __pyx_L1_error)
}
__pyx_L7:;
@@ -16442,7 +16514,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
*
* have_slices = have_slices or isinstance(item, slice)
*/
- __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_index_with_type_s, ((PyObject *)Py_TYPE(__pyx_v_item))); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
@@ -16532,9 +16604,9 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) {
__Pyx_GOTREF(__pyx_t_3);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < __pyx_v_nslices; __pyx_temp++) {
- __Pyx_INCREF(__pyx_slice__34);
- __Pyx_GIVEREF(__pyx_slice__34);
- PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__34);
+ __Pyx_INCREF(__pyx_slice__29);
+ __Pyx_GIVEREF(__pyx_slice__29);
+ PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_slice__29);
}
}
__pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(2, 691, __pyx_L1_error)
@@ -16658,7 +16730,7 @@ static PyObject *assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __
*
*
*/
- __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 698, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -18821,7 +18893,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -18874,7 +18946,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20755,7 +20827,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
- PyObject *__pyx_t_5 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -20788,41 +20859,11 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
- if (!__pyx_t_2) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
- PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_4};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_5);
- __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1254, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20842,7 +20883,6 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, char *__pyx_v_msg,
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
- __Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("View.MemoryView._err_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -20869,7 +20909,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
#ifdef WITH_THREAD
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
#endif
@@ -20906,41 +20945,11 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
- __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_3);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
- __pyx_t_3 = 0;
- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_2);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -20981,7 +20990,6 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, char *__pyx_v_msg) {
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView._err", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_XDECREF(__pyx_v_error);
@@ -22089,7 +22097,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t
/* Python wrapper */
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
+static PyMethodDef __pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum = {"__pyx_unpickle_Enum", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_15View_dot_MemoryView_1__pyx_unpickle_Enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v___pyx_type = 0;
long __pyx_v___pyx_checksum;
@@ -22170,8 +22178,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
- int __pyx_t_7;
+ int __pyx_t_6;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0);
/* "(tree fragment)":2
@@ -22228,41 +22235,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_5) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- } else
- #endif
- {
- __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
- __Pyx_GIVEREF(__pyx_t_4);
- PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
- __pyx_t_4 = 0;
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -22285,48 +22262,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
*/
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_MemviewEnum_type), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = NULL;
+ __pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
- __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
- if (likely(__pyx_t_6)) {
+ __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+ if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
- __Pyx_INCREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
- if (!__pyx_t_6) {
- __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
- PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_v___pyx_type};
- __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_3);
- } else
- #endif
- {
- __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_4);
- __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
- __Pyx_INCREF(__pyx_v___pyx_type);
- __Pyx_GIVEREF(__pyx_v___pyx_type);
- PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v___pyx_type);
- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_3);
- __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- }
- }
+ __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
+ __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+ if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v___pyx_result = __pyx_t_3;
__pyx_t_3 = 0;
@@ -22339,8 +22288,8 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
* return __pyx_result
*/
__pyx_t_1 = (__pyx_v___pyx_state != Py_None);
- __pyx_t_7 = (__pyx_t_1 != 0);
- if (__pyx_t_7) {
+ __pyx_t_6 = (__pyx_t_1 != 0);
+ if (__pyx_t_6) {
/* "(tree fragment)":7
* __pyx_result = Enum.__new__(__pyx_type)
@@ -22387,7 +22336,6 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
@@ -22417,7 +22365,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
PyObject *__pyx_t_6 = NULL;
PyObject *__pyx_t_7 = NULL;
PyObject *__pyx_t_8 = NULL;
- PyObject *__pyx_t_9 = NULL;
__Pyx_RefNannySetupContext("__pyx_unpickle_Enum__set_state", 0);
/* "(tree fragment)":10
@@ -22488,41 +22435,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
- if (!__pyx_t_8) {
- __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- } else {
- #if CYTHON_FAST_PYCALL
- if (PyFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- #if CYTHON_FAST_PYCCALL
- if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
- PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_6};
- __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- } else
- #endif
- {
- __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_9);
- __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
- __Pyx_GIVEREF(__pyx_t_6);
- PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
- __pyx_t_6 = 0;
- __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_t_1);
- __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- }
- }
+ __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
+ __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 12, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22550,7 +22467,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
- __Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
@@ -23265,6 +23181,15 @@ static struct PyModuleDef __pyx_moduledef = {
NULL /* m_free */
};
#endif
+#ifndef CYTHON_SMALL_CODE
+#if defined(__clang__)
+ #define CYTHON_SMALL_CODE
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+ #define CYTHON_SMALL_CODE __attribute__((cold))
+#else
+ #define CYTHON_SMALL_CODE
+#endif
+#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_02_05_2017, __pyx_k_02_05_2017, sizeof(__pyx_k_02_05_2017), 0, 0, 1, 0},
@@ -23284,7 +23209,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0},
{&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
{&__pyx_kp_s_Indirect_dimensions_not_supporte, __pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 0, 1, 0},
- {&__pyx_kp_s_Invalid_data_shape_Dimemsion_of, __pyx_k_Invalid_data_shape_Dimemsion_of, sizeof(__pyx_k_Invalid_data_shape_Dimemsion_of), 0, 0, 1, 0},
+ {&__pyx_n_s_Integral, __pyx_k_Integral, sizeof(__pyx_k_Integral), 0, 0, 1, 1},
+ {&__pyx_kp_s_Invalid_data_shape_Dimension_of, __pyx_k_Invalid_data_shape_Dimension_of, sizeof(__pyx_k_Invalid_data_shape_Dimension_of), 0, 0, 1, 0},
{&__pyx_kp_s_Invalid_mode_expected_c_or_fortr, __pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 0, 1, 0},
{&__pyx_kp_s_Invalid_shape_in_axis_d_d, __pyx_k_Invalid_shape_in_axis_d_d, sizeof(__pyx_k_Invalid_shape_in_axis_d_d), 0, 0, 1, 0},
{&__pyx_kp_s_J_Kieffer, __pyx_k_J_Kieffer, sizeof(__pyx_k_J_Kieffer), 0, 0, 1, 0},
@@ -23297,7 +23223,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_b_O, __pyx_k_O, sizeof(__pyx_k_O), 0, 0, 0, 1},
{&__pyx_kp_s_Out_of_bounds_on_buffer_access_a, __pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 0, 1, 0},
{&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
- {&__pyx_kp_s_Requested_mode_s_is_unknowed, __pyx_k_Requested_mode_s_is_unknowed, sizeof(__pyx_k_Requested_mode_s_is_unknowed), 0, 0, 1, 0},
+ {&__pyx_kp_s_Requested_mode_s_is_unknown, __pyx_k_Requested_mode_s_is_unknown, sizeof(__pyx_k_Requested_mode_s_is_unknown), 0, 0, 1, 0},
{&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
{&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
{&__pyx_kp_s_Unable_to_convert_item_to_object, __pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 0, 1, 0},
@@ -23314,8 +23240,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
{&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
{&__pyx_n_s_conditional, __pyx_k_conditional, sizeof(__pyx_k_conditional), 0, 0, 1, 1},
+ {&__pyx_n_s_constant, __pyx_k_constant, sizeof(__pyx_k_constant), 0, 0, 1, 1},
{&__pyx_kp_s_contiguous_and_direct, __pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 0, 1, 0},
{&__pyx_kp_s_contiguous_and_indirect, __pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 0, 1, 0},
+ {&__pyx_n_s_cval, __pyx_k_cval, sizeof(__pyx_k_cval), 0, 0, 1, 1},
{&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
{&__pyx_n_s_date, __pyx_k_date, sizeof(__pyx_k_date), 0, 0, 1, 1},
{&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
@@ -23376,6 +23304,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_nearest, __pyx_k_nearest, sizeof(__pyx_k_nearest), 0, 0, 1, 1},
{&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
{&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
+ {&__pyx_n_s_numbers, __pyx_k_numbers, sizeof(__pyx_k_numbers), 0, 0, 1, 1},
{&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
{&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0},
{&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0},
@@ -23429,11 +23358,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s_zeros_like, __pyx_k_zeros_like, sizeof(__pyx_k_zeros_like), 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0}
};
-static int __Pyx_InitCachedBuiltins(void) {
- __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 102, __pyx_L1_error)
- __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 242, __pyx_L1_error)
- __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 810, __pyx_L1_error)
- __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1000, __pyx_L1_error)
+static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
+ __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 145, __pyx_L1_error)
+ __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(1, 285, __pyx_L1_error)
+ __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 856, __pyx_L1_error)
+ __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 1038, __pyx_L1_error)
__pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 147, __pyx_L1_error)
__pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(2, 150, __pyx_L1_error)
__pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 2, __pyx_L1_error)
@@ -23445,183 +23374,183 @@ static int __Pyx_InitCachedBuiltins(void) {
return -1;
}
-static int __Pyx_InitCachedConstants(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
- /* "silx/math/medianfilter/medianfilter.pyx":109
- * reshaped = True
- * elif len(data.shape) > 2:
- * raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2") # <<<<<<<<<<<<<<
+ /* "silx/math/medianfilter/medianfilter.pyx":148
+ *
+ * if data.ndim > 2:
+ * raise ValueError( # <<<<<<<<<<<<<<
+ * "Invalid data shape. Dimension of the array should be 1 or 2")
*
- * # simple median filter apply into a 2D buffer
*/
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Invalid_data_shape_Dimemsion_of); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 109, __pyx_L1_error)
+ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Invalid_data_shape_Dimension_of); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 148, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple_);
__Pyx_GIVEREF(__pyx_tuple_);
- /* "silx/math/medianfilter/medianfilter.pyx":159
+ /* "silx/math/medianfilter/medianfilter.pyx":206
* """
* if (input_buffer.flags['C_CONTIGUOUS'] is False):
* raise ValueError('<input_buffer> must be a C_CONTIGUOUS numpy array.') # <<<<<<<<<<<<<<
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False):
*/
- __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_must_be_a_C_CONTIG); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 159, __pyx_L1_error)
+ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_must_be_a_C_CONTIG); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__2);
__Pyx_GIVEREF(__pyx_tuple__2);
- /* "silx/math/medianfilter/medianfilter.pyx":162
+ /* "silx/math/medianfilter/medianfilter.pyx":209
*
* if (output_buffer.flags['C_CONTIGUOUS'] is False):
* raise ValueError('<output_buffer> must be a C_CONTIGUOUS numpy array.') # <<<<<<<<<<<<<<
*
* if not (len(input_buffer.shape) <= 2):
*/
- __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_output_buffer_must_be_a_C_CONTI); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 162, __pyx_L1_error)
+ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_output_buffer_must_be_a_C_CONTI); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 209, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__3);
__Pyx_GIVEREF(__pyx_tuple__3);
- /* "silx/math/medianfilter/medianfilter.pyx":165
+ /* "silx/math/medianfilter/medianfilter.pyx":212
*
* if not (len(input_buffer.shape) <= 2):
* raise ValueError('<input_buffer> dimension must mo higher than 2.') # <<<<<<<<<<<<<<
*
* if not (len(output_buffer.shape) <= 2):
*/
- __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_dimension_must_mo); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 165, __pyx_L1_error)
+ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_dimension_must_mo); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 212, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__4);
__Pyx_GIVEREF(__pyx_tuple__4);
- /* "silx/math/medianfilter/medianfilter.pyx":168
+ /* "silx/math/medianfilter/medianfilter.pyx":215
*
* if not (len(output_buffer.shape) <= 2):
* raise ValueError('<output_buffer> dimension must mo higher than 2.') # <<<<<<<<<<<<<<
*
* if not(input_buffer.dtype == output_buffer.dtype):
*/
- __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_output_buffer_dimension_must_mo); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 168, __pyx_L1_error)
+ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_output_buffer_dimension_must_mo); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 215, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__5);
__Pyx_GIVEREF(__pyx_tuple__5);
- /* "silx/math/medianfilter/medianfilter.pyx":171
+ /* "silx/math/medianfilter/medianfilter.pyx":218
*
* if not(input_buffer.dtype == output_buffer.dtype):
* raise ValueError('input buffer and output_buffer must be of the same type') # <<<<<<<<<<<<<<
*
* if not (input_buffer.shape == output_buffer.shape):
*/
- __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_and_output_buffer_m); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 171, __pyx_L1_error)
+ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_and_output_buffer_m); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__6);
__Pyx_GIVEREF(__pyx_tuple__6);
- /* "silx/math/medianfilter/medianfilter.pyx":174
+ /* "silx/math/medianfilter/medianfilter.pyx":221
*
* if not (input_buffer.shape == output_buffer.shape):
* raise ValueError('input buffer and output_buffer must be of the same dimension and same dimension') # <<<<<<<<<<<<<<
*
*
*/
- __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_and_output_buffer_m_2); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 174, __pyx_L1_error)
+ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_input_buffer_and_output_buffer_m_2); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 221, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__7);
__Pyx_GIVEREF(__pyx_tuple__7);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":229
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272
* if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
* raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<<
*
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
*/
- __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__8);
__Pyx_GIVEREF(__pyx_tuple__8);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":233
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276
* if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
- * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
+ * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
* raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<<
*
* info.buf = PyArray_DATA(self)
*/
- __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(1, 276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__9);
__Pyx_GIVEREF(__pyx_tuple__9);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":263
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":306
* if ((descr.byteorder == c'>' and little_endian) or
* (descr.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* if t == NPY_BYTE: f = "b"
* elif t == NPY_UBYTE: f = "B"
*/
- __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 263, __pyx_L1_error)
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 306, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__10);
__Pyx_GIVEREF(__pyx_tuple__10);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":810
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":856
*
* if (end - f) - <int>(new_offset - offset[0]) < 15:
* raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<<
*
* if ((child.byteorder == c'>' and little_endian) or
*/
- __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 810, __pyx_L1_error)
+ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 856, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__11);
__Pyx_GIVEREF(__pyx_tuple__11);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":814
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":860
* if ((child.byteorder == c'>' and little_endian) or
* (child.byteorder == c'<' and not little_endian)):
* raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<<
* # One could encode it in the format string and have Cython
* # complain instead, BUT: < and > in format strings also imply
*/
- __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 814, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__12);
- __Pyx_GIVEREF(__pyx_tuple__12);
+ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 860, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__10);
+ __Pyx_GIVEREF(__pyx_tuple__10);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":880
* t = child.type_num
* if end - f < 5:
* raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<<
*
* # Until ticket #99 is fixed, use integers to avoid warnings
*/
- __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 834, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__13);
- __Pyx_GIVEREF(__pyx_tuple__13);
+ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 880, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__12);
+ __Pyx_GIVEREF(__pyx_tuple__12);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1000
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1038
* _import_array()
* except Exception:
* raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_umath() except -1:
*/
- __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 1000, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__14);
- __Pyx_GIVEREF(__pyx_tuple__14);
+ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(1, 1038, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__13);
+ __Pyx_GIVEREF(__pyx_tuple__13);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1006
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1044
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*
* cdef inline int import_ufunc() except -1:
*/
- __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 1006, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__15);
- __Pyx_GIVEREF(__pyx_tuple__15);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 1044, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
- /* "../../.local/lib/python2.7/site-packages/Cython/Includes/numpy/__init__.pxd":1012
+ /* "../build_venv/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1050
* _import_umath()
* except Exception:
* raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 1012, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__16);
- __Pyx_GIVEREF(__pyx_tuple__16);
+ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 1050, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__14);
+ __Pyx_GIVEREF(__pyx_tuple__14);
/* "View.MemoryView":132
*
@@ -23630,9 +23559,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if itemsize <= 0:
*/
- __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 132, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__17);
- __Pyx_GIVEREF(__pyx_tuple__17);
+ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Empty_shape_tuple_for_cython_arr); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(2, 132, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__15);
+ __Pyx_GIVEREF(__pyx_tuple__15);
/* "View.MemoryView":135
*
@@ -23641,20 +23570,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if not isinstance(format, bytes):
*/
- __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 135, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__18);
- __Pyx_GIVEREF(__pyx_tuple__18);
-
- /* "View.MemoryView":138
- *
- * if not isinstance(format, bytes):
- * format = format.encode('ASCII') # <<<<<<<<<<<<<<
- * self._format = format # keep a reference to the byte string
- * self.format = self._format
- */
- __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_ASCII); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 138, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__19);
- __Pyx_GIVEREF(__pyx_tuple__19);
+ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_itemsize_0_for_cython_array); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(2, 135, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__16);
+ __Pyx_GIVEREF(__pyx_tuple__16);
/* "View.MemoryView":147
*
@@ -23663,9 +23581,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 147, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__20);
- __Pyx_GIVEREF(__pyx_tuple__20);
+ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_shape_and_str); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(2, 147, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__17);
+ __Pyx_GIVEREF(__pyx_tuple__17);
/* "View.MemoryView":175
* self.data = <char *>malloc(self.len)
@@ -23674,9 +23592,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if self.dtype_is_object:
*/
- __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 175, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__21);
- __Pyx_GIVEREF(__pyx_tuple__21);
+ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_unable_to_allocate_array_data); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(2, 175, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__18);
+ __Pyx_GIVEREF(__pyx_tuple__18);
/* "View.MemoryView":191
* bufmode = PyBUF_F_CONTIGUOUS | PyBUF_ANY_CONTIGUOUS
@@ -23685,9 +23603,9 @@ static int __Pyx_InitCachedConstants(void) {
* info.buf = self.data
* info.len = self.len
*/
- __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 191, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__22);
- __Pyx_GIVEREF(__pyx_tuple__22);
+ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Can_only_create_a_buffer_that_is); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(2, 191, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__19);
+ __Pyx_GIVEREF(__pyx_tuple__19);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -23695,18 +23613,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__23);
- __Pyx_GIVEREF(__pyx_tuple__23);
+ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__20);
+ __Pyx_GIVEREF(__pyx_tuple__20);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__24);
- __Pyx_GIVEREF(__pyx_tuple__24);
+ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__21);
+ __Pyx_GIVEREF(__pyx_tuple__21);
/* "View.MemoryView":413
* def __setitem__(memoryview self, object index, object value):
@@ -23715,9 +23633,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* have_slices, index = _unellipsify(index, self.view.ndim)
*/
- __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 413, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__25);
- __Pyx_GIVEREF(__pyx_tuple__25);
+ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Cannot_assign_to_read_only_memor); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 413, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__22);
+ __Pyx_GIVEREF(__pyx_tuple__22);
/* "View.MemoryView":490
* result = struct.unpack(self.view.format, bytesitem)
@@ -23726,9 +23644,9 @@ static int __Pyx_InitCachedConstants(void) {
* else:
* if len(self.view.format) == 1:
*/
- __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 490, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__26);
- __Pyx_GIVEREF(__pyx_tuple__26);
+ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_convert_item_to_object); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 490, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__23);
+ __Pyx_GIVEREF(__pyx_tuple__23);
/* "View.MemoryView":515
* def __getbuffer__(self, Py_buffer *info, int flags):
@@ -23737,9 +23655,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* if flags & PyBUF_STRIDES:
*/
- __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 515, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__27);
- __Pyx_GIVEREF(__pyx_tuple__27);
+ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Cannot_create_writable_memory_vi); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 515, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__24);
+ __Pyx_GIVEREF(__pyx_tuple__24);
/* "View.MemoryView":565
* if self.view.strides == NULL:
@@ -23748,9 +23666,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([stride for stride in self.view.strides[:self.view.ndim]])
*/
- __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 565, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__28);
- __Pyx_GIVEREF(__pyx_tuple__28);
+ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Buffer_view_does_not_expose_stri); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 565, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__25);
+ __Pyx_GIVEREF(__pyx_tuple__25);
/* "View.MemoryView":572
* def suboffsets(self):
@@ -23759,12 +23677,12 @@ static int __Pyx_InitCachedConstants(void) {
*
* return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]])
*/
- __pyx_tuple__29 = PyTuple_New(1); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(2, 572, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__29);
+ __pyx_tuple__26 = PyTuple_New(1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 572, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__26);
__Pyx_INCREF(__pyx_int_neg_1);
__Pyx_GIVEREF(__pyx_int_neg_1);
- PyTuple_SET_ITEM(__pyx_tuple__29, 0, __pyx_int_neg_1);
- __Pyx_GIVEREF(__pyx_tuple__29);
+ PyTuple_SET_ITEM(__pyx_tuple__26, 0, __pyx_int_neg_1);
+ __Pyx_GIVEREF(__pyx_tuple__26);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -23772,18 +23690,18 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__30);
- __Pyx_GIVEREF(__pyx_tuple__30);
+ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__27);
+ __Pyx_GIVEREF(__pyx_tuple__27);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__31);
- __Pyx_GIVEREF(__pyx_tuple__31);
+ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__28);
+ __Pyx_GIVEREF(__pyx_tuple__28);
/* "View.MemoryView":677
* if item is Ellipsis:
@@ -23792,9 +23710,9 @@ static int __Pyx_InitCachedConstants(void) {
* seen_ellipsis = True
* else:
*/
- __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) __PYX_ERR(2, 677, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__32);
- __Pyx_GIVEREF(__pyx_slice__32);
+ __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(2, 677, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__29);
+ __Pyx_GIVEREF(__pyx_slice__29);
/* "View.MemoryView":680
* seen_ellipsis = True
@@ -23803,9 +23721,9 @@ static int __Pyx_InitCachedConstants(void) {
* have_slices = True
* else:
*/
- __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) __PYX_ERR(2, 680, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__33);
- __Pyx_GIVEREF(__pyx_slice__33);
+ __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(2, 680, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__29);
+ __Pyx_GIVEREF(__pyx_slice__29);
/* "View.MemoryView":691
* nslices = ndim - len(result)
@@ -23814,9 +23732,9 @@ static int __Pyx_InitCachedConstants(void) {
*
* return have_slices or nslices, tuple(result)
*/
- __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) __PYX_ERR(2, 691, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_slice__34);
- __Pyx_GIVEREF(__pyx_slice__34);
+ __pyx_slice__29 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__29)) __PYX_ERR(2, 691, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_slice__29);
+ __Pyx_GIVEREF(__pyx_slice__29);
/* "View.MemoryView":698
* for suboffset in suboffsets[:ndim]:
@@ -23825,9 +23743,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(2, 698, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__35);
- __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Indirect_dimensions_not_supporte); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(2, 698, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__30);
+ __Pyx_GIVEREF(__pyx_tuple__30);
/* "(tree fragment)":2
* def __reduce_cython__(self):
@@ -23835,186 +23753,186 @@ static int __Pyx_InitCachedConstants(void) {
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
*/
- __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(2, 2, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__36);
- __Pyx_GIVEREF(__pyx_tuple__36);
+ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(2, 2, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__31);
+ __Pyx_GIVEREF(__pyx_tuple__31);
/* "(tree fragment)":4
* raise TypeError("no default __reduce__ due to non-trivial __cinit__")
* def __setstate_cython__(self, __pyx_state):
* raise TypeError("no default __reduce__ due to non-trivial __cinit__") # <<<<<<<<<<<<<<
*/
- __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(2, 4, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__37);
- __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(2, 4, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__32);
+ __Pyx_GIVEREF(__pyx_tuple__32);
- /* "silx/math/medianfilter/medianfilter.pyx":48
+ /* "silx/math/medianfilter/medianfilter.pyx":50
*
*
- * def medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt1d(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_tuple__38 = PyTuple_Pack(4, __pyx_n_s_data, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 48, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__38);
- __Pyx_GIVEREF(__pyx_tuple__38);
- __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt1d, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 48, __pyx_L1_error)
+ __pyx_tuple__33 = PyTuple_Pack(5, __pyx_n_s_data, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 50, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__33);
+ __Pyx_GIVEREF(__pyx_tuple__33);
+ __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt1d, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 50, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":65
+ /* "silx/math/medianfilter/medianfilter.pyx":82
*
*
- * def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt2d(image, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_tuple__40 = PyTuple_Pack(4, __pyx_n_s_image, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 65, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__40);
- __Pyx_GIVEREF(__pyx_tuple__40);
- __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt2d, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __pyx_tuple__35 = PyTuple_Pack(5, __pyx_n_s_image, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 82, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__35);
+ __Pyx_GIVEREF(__pyx_tuple__35);
+ __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt2d, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 82, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":83
+ /* "silx/math/medianfilter/medianfilter.pyx":114
*
*
- * def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_tuple__42 = PyTuple_Pack(9, __pyx_n_s_data, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_err, __pyx_n_s_reshaped, __pyx_n_s_output_buffer, __pyx_n_s_ker_dim, __pyx_n_s_medfilterfc); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 83, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__42);
- __Pyx_GIVEREF(__pyx_tuple__42);
- __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(4, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 83, __pyx_L1_error)
+ __pyx_tuple__37 = PyTuple_Pack(10, __pyx_n_s_data, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_err, __pyx_n_s_reshaped, __pyx_n_s_output_buffer, __pyx_n_s_ker_dim, __pyx_n_s_medfilterfc); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 114, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__37);
+ __Pyx_GIVEREF(__pyx_tuple__37);
+ __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(5, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_medfilt, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 114, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":155
+ /* "silx/math/medianfilter/medianfilter.pyx":202
*
*
* def check(input_buffer, output_buffer): # <<<<<<<<<<<<<<
* """Simple check on the two buffers to make sure we can apply the median filter
* """
*/
- __pyx_tuple__44 = PyTuple_Pack(2, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 155, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__44);
- __Pyx_GIVEREF(__pyx_tuple__44);
- __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_check, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 202, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__39);
+ __Pyx_GIVEREF(__pyx_tuple__39);
+ __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_check, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 202, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":182
+ /* "silx/math/medianfilter/medianfilter.pyx":229
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def reflect(int index, int length_max): # <<<<<<<<<<<<<<
* """find the correct index into [0, length_max-1] for index in reflect mode
*
*/
- __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_length_max); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 182, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__46);
- __Pyx_GIVEREF(__pyx_tuple__46);
- __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_reflect, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 182, __pyx_L1_error)
+ __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_length_max); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 229, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__41);
+ __Pyx_GIVEREF(__pyx_tuple__41);
+ __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_reflect, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 229, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":195
+ /* "silx/math/medianfilter/medianfilter.pyx":242
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def mirror(int index, int length_max): # <<<<<<<<<<<<<<
* """find the correct index into [0, length_max-1] for index in mirror mode
*
*/
- __pyx_tuple__48 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_length_max); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 195, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__48);
- __Pyx_GIVEREF(__pyx_tuple__48);
- __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_mirror, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_length_max); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 242, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__43);
+ __Pyx_GIVEREF(__pyx_tuple__43);
+ __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_mirror, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 242, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":208
+ /* "silx/math/medianfilter/medianfilter.pyx":255
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float32(float[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* float[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__50 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 208, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__50);
- __Pyx_GIVEREF(__pyx_tuple__50);
- __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_float32, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __pyx_tuple__45 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 255, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__45);
+ __Pyx_GIVEREF(__pyx_tuple__45);
+ __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_float32, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 255, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":237
+ /* "silx/math/medianfilter/medianfilter.pyx":286
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float64(double[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* double[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__52 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 237, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__52);
- __Pyx_GIVEREF(__pyx_tuple__52);
- __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_float64, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_tuple__47 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__47);
+ __Pyx_GIVEREF(__pyx_tuple__47);
+ __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_float64, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 286, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":266
+ /* "silx/math/medianfilter/medianfilter.pyx":317
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int64_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__54 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 266, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__54);
- __Pyx_GIVEREF(__pyx_tuple__54);
- __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int64, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __pyx_tuple__49 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 317, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__49);
+ __Pyx_GIVEREF(__pyx_tuple__49);
+ __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int64, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 317, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":294
+ /* "silx/math/medianfilter/medianfilter.pyx":347
* @cython.wraparound(False)
* @cython.initializedcheck(False)
- * def _median_filter_uint64( # <<<<<<<<<<<<<<
- * cnumpy.uint64_t[:, ::1] input_buffer not None,
+ * def _median_filter_uint64(cnumpy.uint64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint64_t[:, ::1] output_buffer not None,
+ * cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__56 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 294, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__56);
- __Pyx_GIVEREF(__pyx_tuple__56);
- __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint64, 294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_tuple__51 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 347, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__51);
+ __Pyx_GIVEREF(__pyx_tuple__51);
+ __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint64, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 347, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":324
+ /* "silx/math/medianfilter/medianfilter.pyx":378
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int32_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__58 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 324, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__58);
- __Pyx_GIVEREF(__pyx_tuple__58);
- __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int32, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __pyx_tuple__53 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 378, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__53);
+ __Pyx_GIVEREF(__pyx_tuple__53);
+ __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int32, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 378, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":353
+ /* "silx/math/medianfilter/medianfilter.pyx":409
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint32_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__60 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 353, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__60);
- __Pyx_GIVEREF(__pyx_tuple__60);
- __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint32, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __pyx_tuple__55 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 409, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__55);
+ __Pyx_GIVEREF(__pyx_tuple__55);
+ __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint32, 409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 409, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":382
+ /* "silx/math/medianfilter/medianfilter.pyx":440
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int16_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_tuple__62 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 382, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__62);
- __Pyx_GIVEREF(__pyx_tuple__62);
- __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int16, 382, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __pyx_tuple__57 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 440, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__57);
+ __Pyx_GIVEREF(__pyx_tuple__57);
+ __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_int16, 440, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 440, __pyx_L1_error)
- /* "silx/math/medianfilter/medianfilter.pyx":411
+ /* "silx/math/medianfilter/medianfilter.pyx":471
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint16( # <<<<<<<<<<<<<<
* cnumpy.uint16_t[:, ::1] input_buffer not None,
* cnumpy.uint16_t[:, ::1] output_buffer not None,
*/
- __pyx_tuple__64 = PyTuple_Pack(8, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 411, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__64);
- __Pyx_GIVEREF(__pyx_tuple__64);
- __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint16, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __pyx_tuple__59 = PyTuple_Pack(9, __pyx_n_s_input_buffer, __pyx_n_s_output_buffer, __pyx_n_s_kernel_size, __pyx_n_s_conditional, __pyx_n_s_mode, __pyx_n_s_cval, __pyx_n_s_y, __pyx_n_s_image_dim, __pyx_n_s_buffer_shape); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 471, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__59);
+ __Pyx_GIVEREF(__pyx_tuple__59);
+ __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(6, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_silx_math_medianfilter_medianfil, __pyx_n_s_median_filter_uint16, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 471, __pyx_L1_error)
/* "View.MemoryView":285
* return self.name
@@ -24023,9 +23941,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(2, 285, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__66);
- __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct_or_indirect); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__61);
+ __Pyx_GIVEREF(__pyx_tuple__61);
/* "View.MemoryView":286
*
@@ -24034,9 +23952,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(2, 286, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__67);
- __Pyx_GIVEREF(__pyx_tuple__67);
+ __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_strided_and_direct); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__62);
+ __Pyx_GIVEREF(__pyx_tuple__62);
/* "View.MemoryView":287
* cdef generic = Enum("<strided and direct or indirect>")
@@ -24045,9 +23963,9 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(2, 287, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__68);
- __Pyx_GIVEREF(__pyx_tuple__68);
+ __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_strided_and_indirect); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__63);
+ __Pyx_GIVEREF(__pyx_tuple__63);
/* "View.MemoryView":290
*
@@ -24056,9 +23974,9 @@ static int __Pyx_InitCachedConstants(void) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(2, 290, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__69);
- __Pyx_GIVEREF(__pyx_tuple__69);
+ __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_direct); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__64);
+ __Pyx_GIVEREF(__pyx_tuple__64);
/* "View.MemoryView":291
*
@@ -24067,19 +23985,19 @@ static int __Pyx_InitCachedConstants(void) {
*
*
*/
- __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(2, 291, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__70);
- __Pyx_GIVEREF(__pyx_tuple__70);
+ __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_contiguous_and_indirect); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__65);
+ __Pyx_GIVEREF(__pyx_tuple__65);
/* "(tree fragment)":1
* def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
* if __pyx_checksum != 0xb068931:
* from pickle import PickleError as __pyx_PickleError
*/
- __pyx_tuple__71 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(2, 1, __pyx_L1_error)
- __Pyx_GOTREF(__pyx_tuple__71);
- __Pyx_GIVEREF(__pyx_tuple__71);
- __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __pyx_tuple__66 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(2, 1, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_tuple__66);
+ __Pyx_GIVEREF(__pyx_tuple__66);
+ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Enum, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(2, 1, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -24087,7 +24005,7 @@ static int __Pyx_InitCachedConstants(void) {
return -1;
}
-static int __Pyx_InitGlobals(void) {
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
/* InitThreads.init */
#ifdef WITH_THREAD
PyEval_InitThreads();
@@ -24100,6 +24018,7 @@ if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
+ __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
return 0;
@@ -24107,13 +24026,13 @@ if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
return -1;
}
-static int __Pyx_modinit_global_init_code(void); /*proto*/
-static int __Pyx_modinit_variable_export_code(void); /*proto*/
-static int __Pyx_modinit_function_export_code(void); /*proto*/
-static int __Pyx_modinit_type_init_code(void); /*proto*/
-static int __Pyx_modinit_type_import_code(void); /*proto*/
-static int __Pyx_modinit_variable_import_code(void); /*proto*/
-static int __Pyx_modinit_function_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
+static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
static int __Pyx_modinit_global_init_code(void) {
__Pyx_RefNannyDeclarations
@@ -24200,23 +24119,37 @@ static int __Pyx_modinit_type_init_code(void) {
static int __Pyx_modinit_type_import_code(void) {
__Pyx_RefNannyDeclarations
+ PyObject *__pyx_t_1 = NULL;
__Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
/*--- Type import code ---*/
- __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type",
+ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
#if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
sizeof(PyTypeObject),
#else
sizeof(PyHeapTypeObject),
#endif
- 0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) __PYX_ERR(3, 9, __pyx_L1_error)
- __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) __PYX_ERR(1, 164, __pyx_L1_error)
- __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) __PYX_ERR(1, 186, __pyx_L1_error)
- __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) __PYX_ERR(1, 190, __pyx_L1_error)
- __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) __PYX_ERR(1, 199, __pyx_L1_error)
- __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) __PYX_ERR(1, 872, __pyx_L1_error)
+ __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 206, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 206, __pyx_L1_error)
+ __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 229, __pyx_L1_error)
+ __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 233, __pyx_L1_error)
+ __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
+ if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 242, __pyx_L1_error)
+ __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
+ if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 918, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
__Pyx_RefNannyFinishContext();
return -1;
}
@@ -24251,15 +24184,6 @@ static int __Pyx_modinit_function_import_code(void) {
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#endif
#endif
-#ifndef CYTHON_SMALL_CODE
-#if defined(__clang__)
- #define CYTHON_SMALL_CODE
-#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
- #define CYTHON_SMALL_CODE __attribute__((optimize("Os")))
-#else
- #define CYTHON_SMALL_CODE
-#endif
-#endif
#if PY_MAJOR_VERSION < 3
@@ -24272,7 +24196,30 @@ __Pyx_PyMODINIT_FUNC PyInit_medianfilter(void)
{
return PyModuleDef_Init(&__pyx_moduledef);
}
-static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
+static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
+ #if PY_VERSION_HEX >= 0x030700A1
+ static PY_INT64_T main_interpreter_id = -1;
+ PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
+ if (main_interpreter_id == -1) {
+ main_interpreter_id = current_id;
+ return (unlikely(current_id == -1)) ? -1 : 0;
+ } else if (unlikely(main_interpreter_id != current_id))
+ #else
+ static PyInterpreterState *main_interpreter = NULL;
+ PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
+ if (!main_interpreter) {
+ main_interpreter = current_interpreter;
+ } else if (unlikely(main_interpreter != current_interpreter))
+ #endif
+ {
+ PyErr_SetString(
+ PyExc_ImportError,
+ "Interpreter change detected - this module can only be loaded into one interpreter per process.");
+ return -1;
+ }
+ return 0;
+}
+static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {
PyObject *value = PyObject_GetAttrString(spec, from_name);
int result = 0;
if (likely(value)) {
@@ -24285,8 +24232,10 @@ static int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const ch
}
return result;
}
-static PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
+static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
PyObject *module = NULL, *moddict, *modname;
+ if (__Pyx_check_single_interpreter())
+ return NULL;
if (__pyx_m)
return __Pyx_NewRef(__pyx_m);
modname = PyObject_GetAttrString(spec, "name");
@@ -24307,7 +24256,7 @@ bad:
}
-static int __pyx_pymod_exec_medianfilter(PyObject *__pyx_pyinit_module)
+static CYTHON_SMALL_CODE int __pyx_pymod_exec_medianfilter(PyObject *__pyx_pyinit_module)
#endif
#endif
{
@@ -24315,7 +24264,11 @@ static int __pyx_pymod_exec_medianfilter(PyObject *__pyx_pyinit_module)
static PyThread_type_lock __pyx_t_2[8];
__Pyx_RefNannyDeclarations
#if CYTHON_PEP489_MULTI_PHASE_INIT
- if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;
+ if (__pyx_m) {
+ if (__pyx_m == __pyx_pyinit_module) return 0;
+ PyErr_SetString(PyExc_RuntimeError, "Module 'medianfilter' has already been imported. Re-initialisation is not supported.");
+ return -1;
+ }
#elif PY_MAJOR_VERSION >= 3
if (__pyx_m) return __Pyx_NewRef(__pyx_m);
#endif
@@ -24330,6 +24283,9 @@ if (!__Pyx_RefNanny) {
#endif
__Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_medianfilter(void)", 0);
if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ #ifdef __Pxy_PyFrame_Initialize_Offsets
+ __Pxy_PyFrame_Initialize_Offsets();
+ #endif
__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
@@ -24384,7 +24340,7 @@ if (!__Pyx_RefNanny) {
if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
#endif
if (__pyx_module_is_main_silx__math__medianfilter__medianfilter) {
- if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
}
#if PY_MAJOR_VERSION >= 3
{
@@ -24459,188 +24415,201 @@ if (!__Pyx_RefNanny) {
if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_1) < 0) __PYX_ERR(0, 36, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":45
+ /* "silx/math/medianfilter/medianfilter.pyx":40
+ * from libcpp cimport bool
+ *
+ * import numbers # <<<<<<<<<<<<<<
+ *
+ * ctypedef unsigned long uint64
+ */
+ __pyx_t_1 = __Pyx_Import(__pyx_n_s_numbers, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_1);
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_numbers, __pyx_t_1) < 0) __PYX_ERR(0, 40, __pyx_L1_error)
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+ /* "silx/math/medianfilter/medianfilter.pyx":47
*
*
- * MODES = {'nearest':0, 'reflect':1, 'mirror':2, 'shrink':3} # <<<<<<<<<<<<<<
+ * MODES = {'nearest': 0, 'reflect': 1, 'mirror': 2, 'shrink': 3, 'constant': 4} # <<<<<<<<<<<<<<
*
*
*/
- __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nearest, __pyx_int_0) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reflect, __pyx_int_1) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_mirror, __pyx_int_2) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shrink, __pyx_int_3) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODES, __pyx_t_1) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nearest, __pyx_int_0) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_reflect, __pyx_int_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_mirror, __pyx_int_2) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shrink, __pyx_int_3) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_constant, __pyx_int_4) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODES, __pyx_t_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":48
+ /* "silx/math/medianfilter/medianfilter.pyx":50
*
*
- * def medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt1d(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_1medfilt1d, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_1medfilt1d, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt1d, __pyx_t_1) < 0) __PYX_ERR(0, 48, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt1d, __pyx_t_1) < 0) __PYX_ERR(0, 50, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":65
+ /* "silx/math/medianfilter/medianfilter.pyx":82
*
*
- * def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt2d(image, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_3medfilt2d, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_3medfilt2d, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt2d, __pyx_t_1) < 0) __PYX_ERR(0, 65, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt2d, __pyx_t_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":83
+ /* "silx/math/medianfilter/medianfilter.pyx":114
*
*
- * def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'): # <<<<<<<<<<<<<<
- * """Function computing the median filter of the given input.
- * Behavior at boundaries: the algorithm is reducing the size of the
+ * def medfilt(data, # <<<<<<<<<<<<<<
+ * kernel_size=3,
+ * bool conditional=False,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_5medfilt, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_5medfilt, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt, __pyx_t_1) < 0) __PYX_ERR(0, 83, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_medfilt, __pyx_t_1) < 0) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":155
+ /* "silx/math/medianfilter/medianfilter.pyx":202
*
*
* def check(input_buffer, output_buffer): # <<<<<<<<<<<<<<
* """Simple check on the two buffers to make sure we can apply the median filter
* """
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_7check, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_7check, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_check, __pyx_t_1) < 0) __PYX_ERR(0, 155, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_check, __pyx_t_1) < 0) __PYX_ERR(0, 202, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":182
+ /* "silx/math/medianfilter/medianfilter.pyx":229
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def reflect(int index, int length_max): # <<<<<<<<<<<<<<
* """find the correct index into [0, length_max-1] for index in reflect mode
*
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_9reflect, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 182, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_9reflect, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_reflect, __pyx_t_1) < 0) __PYX_ERR(0, 182, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_reflect, __pyx_t_1) < 0) __PYX_ERR(0, 229, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":195
+ /* "silx/math/medianfilter/medianfilter.pyx":242
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def mirror(int index, int length_max): # <<<<<<<<<<<<<<
* """find the correct index into [0, length_max-1] for index in mirror mode
*
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_11mirror, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_11mirror, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_mirror, __pyx_t_1) < 0) __PYX_ERR(0, 195, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_mirror, __pyx_t_1) < 0) __PYX_ERR(0, 242, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":208
+ /* "silx/math/medianfilter/medianfilter.pyx":255
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float32(float[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* float[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_13_median_filter_float32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_float32, __pyx_t_1) < 0) __PYX_ERR(0, 208, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_float32, __pyx_t_1) < 0) __PYX_ERR(0, 255, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":237
+ /* "silx/math/medianfilter/medianfilter.pyx":286
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_float64(double[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* double[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_15_median_filter_float64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_float64, __pyx_t_1) < 0) __PYX_ERR(0, 237, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_float64, __pyx_t_1) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":266
+ /* "silx/math/medianfilter/medianfilter.pyx":317
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int64_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 266, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_17_median_filter_int64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int64, __pyx_t_1) < 0) __PYX_ERR(0, 266, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int64, __pyx_t_1) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":294
+ /* "silx/math/medianfilter/medianfilter.pyx":347
* @cython.wraparound(False)
* @cython.initializedcheck(False)
- * def _median_filter_uint64( # <<<<<<<<<<<<<<
- * cnumpy.uint64_t[:, ::1] input_buffer not None,
+ * def _median_filter_uint64(cnumpy.uint64_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint64_t[:, ::1] output_buffer not None,
+ * cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_19_median_filter_uint64, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint64, __pyx_t_1) < 0) __PYX_ERR(0, 294, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint64, __pyx_t_1) < 0) __PYX_ERR(0, 347, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":324
+ /* "silx/math/medianfilter/medianfilter.pyx":378
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int32_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_21_median_filter_int32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int32, __pyx_t_1) < 0) __PYX_ERR(0, 324, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int32, __pyx_t_1) < 0) __PYX_ERR(0, 378, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":353
+ /* "silx/math/medianfilter/medianfilter.pyx":409
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.uint32_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_23_median_filter_uint32, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint32, __pyx_t_1) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint32, __pyx_t_1) < 0) __PYX_ERR(0, 409, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":382
+ /* "silx/math/medianfilter/medianfilter.pyx":440
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None, # <<<<<<<<<<<<<<
* cnumpy.int16_t[:, ::1] output_buffer not None,
* cnumpy.int32_t[::1] kernel_size not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_25_median_filter_int16, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int16, __pyx_t_1) < 0) __PYX_ERR(0, 382, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_int16, __pyx_t_1) < 0) __PYX_ERR(0, 440, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "silx/math/medianfilter/medianfilter.pyx":411
+ /* "silx/math/medianfilter/medianfilter.pyx":471
* @cython.wraparound(False)
* @cython.initializedcheck(False)
* def _median_filter_uint16( # <<<<<<<<<<<<<<
* cnumpy.uint16_t[:, ::1] input_buffer not None,
* cnumpy.uint16_t[:, ::1] output_buffer not None,
*/
- __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error)
+ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4silx_4math_12medianfilter_12medianfilter_27_median_filter_uint16, NULL, __pyx_n_s_silx_math_medianfilter_medianfil_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
- if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint16, __pyx_t_1) < 0) __PYX_ERR(0, 411, __pyx_L1_error)
+ if (PyDict_SetItem(__pyx_d, __pyx_n_s_median_filter_uint16, __pyx_t_1) < 0) __PYX_ERR(0, 471, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "silx/math/medianfilter/medianfilter.pyx":1
@@ -24673,7 +24642,7 @@ if (!__Pyx_RefNanny) {
* cdef strided = Enum("<strided and direct>") # default
* cdef indirect = Enum("<strided and indirect>")
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 285, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(generic);
__Pyx_DECREF_SET(generic, __pyx_t_1);
@@ -24687,7 +24656,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect = Enum("<strided and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 286, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(strided);
__Pyx_DECREF_SET(strided, __pyx_t_1);
@@ -24701,7 +24670,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect);
__Pyx_DECREF_SET(indirect, __pyx_t_1);
@@ -24715,7 +24684,7 @@ if (!__Pyx_RefNanny) {
* cdef indirect_contiguous = Enum("<contiguous and indirect>")
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 290, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(contiguous);
__Pyx_DECREF_SET(contiguous, __pyx_t_1);
@@ -24729,7 +24698,7 @@ if (!__Pyx_RefNanny) {
*
*
*/
- __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
+ __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_MemviewEnum_type), __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(indirect_contiguous);
__Pyx_DECREF_SET(indirect_contiguous, __pyx_t_1);
@@ -24813,9 +24782,9 @@ if (!__Pyx_RefNanny) {
__Pyx_XDECREF(__pyx_t_1);
if (__pyx_m) {
if (__pyx_d) {
- __Pyx_AddTraceback("init silx.math.medianfilter.medianfilter", 0, __pyx_lineno, __pyx_filename);
+ __Pyx_AddTraceback("init silx.math.medianfilter.medianfilter", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
- Py_DECREF(__pyx_m); __pyx_m = 0;
+ Py_CLEAR(__pyx_m);
} else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ImportError, "init silx.math.medianfilter.medianfilter");
}
@@ -24836,9 +24805,9 @@ if (!__Pyx_RefNanny) {
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
PyObject *m = NULL, *p = NULL;
void *r = NULL;
- m = PyImport_ImportModule((char *)modname);
+ m = PyImport_ImportModule(modname);
if (!m) goto end;
- p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+ p = PyObject_GetAttrString(m, "RefNannyAPI");
if (!p) goto end;
r = PyLong_AsVoidPtr(p);
end:
@@ -25019,35 +24988,42 @@ static void __Pyx_RaiseArgtupleInvalid(
}
/* GetModuleGlobalName */
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
+#if CYTHON_USE_DICT_VERSIONS
+static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
+#else
+static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
+#endif
+{
PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
+ return __Pyx_NewRef(result);
} else if (unlikely(PyErr_Occurred())) {
- result = NULL;
- } else {
+ return NULL;
+ }
#else
result = PyDict_GetItem(__pyx_d, name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
if (likely(result)) {
- Py_INCREF(result);
- } else {
+ return __Pyx_NewRef(result);
+ }
#endif
#else
result = PyObject_GetItem(__pyx_d, name);
- if (!result) {
- PyErr_Clear();
-#endif
- result = __Pyx_GetBuiltinName(name);
+ __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
+ if (likely(result)) {
+ return __Pyx_NewRef(result);
}
- return result;
+ PyErr_Clear();
+#endif
+ return __Pyx_GetBuiltinName(name);
}
/* PyFunctionFastCall */
- #if CYTHON_FAST_PYCALL
-#include "frameobject.h"
+#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
PyObject *globals) {
PyFrameObject *f;
@@ -25065,7 +25041,7 @@ static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args
if (f == NULL) {
return NULL;
}
- fastlocals = f->f_localsplus;
+ fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
for (i = 0; i < na; i++) {
Py_INCREF(*args);
fastlocals[i] = *args++;
@@ -25166,14 +25142,14 @@ done:
#endif
/* PyCFunctionFastCall */
- #if CYTHON_FAST_PYCCALL
+#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
PyCFunction meth = PyCFunction_GET_FUNCTION(func);
PyObject *self = PyCFunction_GET_SELF(func);
int flags = PyCFunction_GET_FLAGS(func);
assert(PyCFunction_Check(func));
- assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));
+ assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
assert(nargs >= 0);
assert(nargs == 0 || args != NULL);
/* _PyCFunction_FastCallDict() must not be called with an exception set,
@@ -25181,15 +25157,15 @@ static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, P
caller loses its exception */
assert(!PyErr_Occurred());
if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
- return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);
+ return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
} else {
- return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);
+ return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
}
}
#endif
/* PyObjectCall */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
PyObject *result;
ternaryfunc call = func->ob_type->tp_call;
@@ -25209,7 +25185,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg
#endif
/* PyObjectCallMethO */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
PyObject *self, *result;
PyCFunction cfunc;
@@ -25229,7 +25205,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
#endif
/* PyObjectCallOneArg */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
PyObject *result;
PyObject *args = PyTuple_New(1);
@@ -25269,7 +25245,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
#endif
/* PyErrFetchRestore */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
tmp_type = tstate->curexc_type;
@@ -25293,7 +25269,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject
#endif
/* RaiseException */
- #if PY_MAJOR_VERSION < 3
+#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
CYTHON_UNUSED PyObject *cause) {
__Pyx_PyThreadState_declare
@@ -25452,7 +25428,7 @@ bad:
#endif
/* GetItemInt */
- static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
PyObject *r;
if (!j) return NULL;
r = PyObject_GetItem(o, j);
@@ -25467,7 +25443,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyList_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
PyObject *r = PyList_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -25485,7 +25461,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize
if (wraparound & unlikely(i < 0)) {
wrapped_i += PyTuple_GET_SIZE(o);
}
- if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
Py_INCREF(r);
return r;
@@ -25501,7 +25477,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
if (is_list || PyList_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
- if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
+ if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
PyObject *r = PyList_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -25509,7 +25485,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
}
else if (PyTuple_CheckExact(o)) {
Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
- if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+ if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
PyObject *r = PyTuple_GET_ITEM(o, n);
Py_INCREF(r);
return r;
@@ -25538,8 +25514,37 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}
+/* PyObjectCall2Args */
+static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+ PyObject *args, *result = NULL;
+ #if CYTHON_FAST_PYCALL
+ if (PyFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyFunction_FastCall(function, args, 2);
+ }
+ #endif
+ #if CYTHON_FAST_PYCCALL
+ if (__Pyx_PyFastCFunction_Check(function)) {
+ PyObject *args[2] = {arg1, arg2};
+ return __Pyx_PyCFunction_FastCall(function, args, 2);
+ }
+ #endif
+ args = PyTuple_New(2);
+ if (unlikely(!args)) goto done;
+ Py_INCREF(arg1);
+ PyTuple_SET_ITEM(args, 0, arg1);
+ Py_INCREF(arg2);
+ PyTuple_SET_ITEM(args, 1, arg2);
+ Py_INCREF(function);
+ result = __Pyx_PyObject_Call(function, args, NULL);
+ Py_DECREF(args);
+ Py_DECREF(function);
+done:
+ return result;
+}
+
/* ObjectGetItem */
- #if CYTHON_USE_TYPE_SLOTS
+#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
PyObject *runerr;
Py_ssize_t key_value;
@@ -25567,17 +25572,36 @@ static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
}
#endif
+/* PyObjectSetAttrStr */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
+ PyTypeObject* tp = Py_TYPE(obj);
+ if (likely(tp->tp_setattro))
+ return tp->tp_setattro(obj, attr_name, value);
+#if PY_MAJOR_VERSION < 3
+ if (likely(tp->tp_setattr))
+ return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
+#endif
+ return PyObject_SetAttr(obj, attr_name, value);
+}
+#endif
+
/* DictGetItem */
- #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
+#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
PyObject *value;
value = PyDict_GetItemWithError(d, key);
if (unlikely(!value)) {
if (!PyErr_Occurred()) {
- PyObject* args = PyTuple_Pack(1, key);
- if (likely(args))
- PyErr_SetObject(PyExc_KeyError, args);
- Py_XDECREF(args);
+ if (unlikely(PyTuple_Check(key))) {
+ PyObject* args = PyTuple_Pack(1, key);
+ if (likely(args)) {
+ PyErr_SetObject(PyExc_KeyError, args);
+ Py_DECREF(args);
+ }
+ } else {
+ PyErr_SetObject(PyExc_KeyError, key);
+ }
}
return NULL;
}
@@ -25587,7 +25611,7 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
#endif
/* MemviewSliceInit */
- static int
+static int
__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview,
int ndim,
__Pyx_memviewslice *memviewslice,
@@ -25725,25 +25749,25 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
}
/* RaiseTooManyValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
PyErr_Format(PyExc_ValueError,
"too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}
/* RaiseNeedMoreValuesToUnpack */
- static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
PyErr_Format(PyExc_ValueError,
"need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
index, (index == 1) ? "" : "s");
}
/* RaiseNoneIterError */
- static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}
/* ExtTypeTest */
- static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
return 0;
@@ -25755,13 +25779,29 @@ static CYTHON_INLINE void __Pyx_XDEC_MEMVIEW(__Pyx_memviewslice *memslice,
return 0;
}
+/* GetTopmostException */
+#if CYTHON_USE_EXC_INFO_STACK
+static _PyErr_StackItem *
+__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+#endif
+
/* SaveResetException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
- #if PY_VERSION_HEX >= 0x030700A2
- *type = tstate->exc_state.exc_type;
- *value = tstate->exc_state.exc_value;
- *tb = tstate->exc_state.exc_traceback;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
+ *type = exc_info->exc_type;
+ *value = exc_info->exc_value;
+ *tb = exc_info->exc_traceback;
#else
*type = tstate->exc_type;
*value = tstate->exc_value;
@@ -25773,13 +25813,14 @@ static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject *
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = type;
- tstate->exc_state.exc_value = value;
- tstate->exc_state.exc_traceback = tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = type;
+ exc_info->exc_value = value;
+ exc_info->exc_traceback = tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -25795,7 +25836,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject
#endif
/* PyErrExceptionMatches */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
Py_ssize_t i, n;
n = PyTuple_GET_SIZE(tuple);
@@ -25820,11 +25861,12 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta
#endif
/* GetException */
- #if CYTHON_FAST_THREAD_STATE
-static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_FAST_THREAD_STATE
+static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
-static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
+{
PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
PyObject *tmp_type, *tmp_value, *tmp_tb;
@@ -25857,13 +25899,16 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
*value = local_value;
*tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = local_type;
- tstate->exc_state.exc_value = local_value;
- tstate->exc_state.exc_traceback = local_tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ {
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = local_type;
+ exc_info->exc_value = local_value;
+ exc_info->exc_traceback = local_tb;
+ }
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -25890,7 +25935,7 @@ bad:
}
/* ArgTypeTest */
- static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
+static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
if (unlikely(!type)) {
PyErr_SetString(PyExc_SystemError, "Missing type object");
@@ -25911,7 +25956,7 @@ bad:
}
/* BytesEquals */
- static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -25958,7 +26003,7 @@ bad:
}
/* UnicodeEquals */
- static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
+static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
return PyObject_RichCompareBool(s1, s2, equals);
#else
@@ -26037,6 +26082,9 @@ bad:
} else {
int result;
PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(owned_ref);
+ #endif
if (!py_result)
return -1;
result = __Pyx_PyObject_IsTrue(py_result);
@@ -26057,7 +26105,7 @@ return_ne:
}
/* None */
- static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
+static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
Py_ssize_t q = a / b;
Py_ssize_t r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -26065,7 +26113,7 @@ return_ne:
}
/* GetAttr */
- static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
if (likely(PyUnicode_Check(n)))
@@ -26078,7 +26126,7 @@ return_ne:
}
/* decode_c_string */
- static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
const char* cstring, Py_ssize_t start, Py_ssize_t stop,
const char* encoding, const char* errors,
PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
@@ -26111,7 +26159,7 @@ return_ne:
}
/* GetAttr3 */
- static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
+static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
@@ -26126,16 +26174,17 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject
}
/* SwapException */
- #if CYTHON_FAST_THREAD_STATE
+#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
PyObject *tmp_type, *tmp_value, *tmp_tb;
- #if PY_VERSION_HEX >= 0x030700A2
- tmp_type = tstate->exc_state.exc_type;
- tmp_value = tstate->exc_state.exc_value;
- tmp_tb = tstate->exc_state.exc_traceback;
- tstate->exc_state.exc_type = *type;
- tstate->exc_state.exc_value = *value;
- tstate->exc_state.exc_traceback = *tb;
+ #if CYTHON_USE_EXC_INFO_STACK
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ tmp_type = exc_info->exc_type;
+ tmp_value = exc_info->exc_value;
+ tmp_tb = exc_info->exc_traceback;
+ exc_info->exc_type = *type;
+ exc_info->exc_value = *value;
+ exc_info->exc_traceback = *tb;
#else
tmp_type = tstate->exc_type;
tmp_value = tstate->exc_value;
@@ -26160,7 +26209,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
#endif
/* Import */
- static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
PyObject *empty_list = 0;
PyObject *module = 0;
PyObject *global_dict = 0;
@@ -26207,7 +26256,7 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value,
if (!py_level)
goto bad;
module = PyObject_CallFunctionObjArgs(py_import,
- name, global_dict, empty_dict, list, py_level, NULL);
+ name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
Py_DECREF(py_level);
#else
module = PyImport_ImportModuleLevelObject(
@@ -26225,7 +26274,7 @@ bad:
}
/* FastTypeChecks */
- #if CYTHON_COMPILING_IN_CPYTHON
+#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
while (a) {
a = a->tp_base;
@@ -26280,14 +26329,42 @@ static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err,
return res;
}
#endif
+static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
+ Py_ssize_t i, n;
+ assert(PyExceptionClass_Check(exc_type));
+ n = PyTuple_GET_SIZE(tuple);
+#if PY_MAJOR_VERSION >= 3
+ for (i=0; i<n; i++) {
+ if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
+ }
+#endif
+ for (i=0; i<n; i++) {
+ PyObject *t = PyTuple_GET_ITEM(tuple, i);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(exc_type == t)) return 1;
+ #endif
+ if (likely(PyExceptionClass_Check(t))) {
+ if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
+ } else {
+ }
+ }
+ return 0;
+}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
if (likely(err == exc_type)) return 1;
if (likely(PyExceptionClass_Check(err))) {
- return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ if (likely(PyExceptionClass_Check(exc_type))) {
+ return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
+ } else if (likely(PyTuple_Check(exc_type))) {
+ return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
+ } else {
+ }
}
return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
+ assert(PyExceptionClass_Check(exc_type1));
+ assert(PyExceptionClass_Check(exc_type2));
if (likely(err == exc_type1 || err == exc_type2)) return 1;
if (likely(PyExceptionClass_Check(err))) {
return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
@@ -26297,7 +26374,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj
#endif
/* PyIntBinop */
- #if !CYTHON_COMPILING_IN_PYPY
+#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_CheckExact(op1))) {
@@ -26419,12 +26496,12 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
#endif
/* None */
- static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}
/* None */
- static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
+static CYTHON_INLINE long __Pyx_div_long(long a, long b) {
long q = a / b;
long r = a - q*b;
q -= ((r != 0) & ((r ^ b) < 0));
@@ -26432,7 +26509,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* WriteUnraisableException */
- static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
int full_traceback, CYTHON_UNUSED int nogil) {
PyObject *old_exc, *old_val, *old_tb;
@@ -26474,7 +26551,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* ImportFrom */
- static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError,
@@ -26488,7 +26565,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* HasAttr */
- static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
PyObject *r;
if (unlikely(!__Pyx_PyBaseString_Check(n))) {
PyErr_SetString(PyExc_TypeError,
@@ -26506,7 +26583,7 @@ static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED
}
/* PyObject_GenericGetAttrNoDict */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
@@ -26546,7 +26623,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj
#endif
/* PyObject_GenericGetAttr */
- #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
return PyObject_GenericGetAttr(obj, attr_name);
@@ -26556,7 +26633,7 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam
#endif
/* SetVTable */
- static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
@@ -26574,7 +26651,7 @@ bad:
}
/* SetupReduce */
- static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
+static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
int ret;
PyObject *name_attr;
name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
@@ -26649,9 +26726,70 @@ GOOD:
return ret;
}
+/* TypeImport */
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
+ size_t size, enum __Pyx_ImportType_CheckSize check_size)
+{
+ PyObject *result = 0;
+ char warning[200];
+ Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+ PyObject *py_basicsize;
+#endif
+ result = PyObject_GetAttrString(module, class_name);
+ if (!result)
+ goto bad;
+ if (!PyType_Check(result)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.%.200s is not a type object",
+ module_name, class_name);
+ goto bad;
+ }
+#ifndef Py_LIMITED_API
+ basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+ py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+ if (!py_basicsize)
+ goto bad;
+ basicsize = PyLong_AsSsize_t(py_basicsize);
+ Py_DECREF(py_basicsize);
+ py_basicsize = 0;
+ if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+ goto bad;
+#endif
+ if ((size_t)basicsize < size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
+ PyErr_Format(PyExc_ValueError,
+ "%.200s.%.200s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ goto bad;
+ }
+ else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
+ PyOS_snprintf(warning, sizeof(warning),
+ "%s.%s size changed, may indicate binary incompatibility. "
+ "Expected %zd from C header, got %zd from PyObject",
+ module_name, class_name, size, basicsize);
+ if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+ }
+ return (PyTypeObject *)result;
+bad:
+ Py_XDECREF(result);
+ return NULL;
+}
+#endif
+
/* CLineInTraceback */
- #ifndef CYTHON_CLINE_IN_TRACEBACK
-static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {
+#ifndef CYTHON_CLINE_IN_TRACEBACK
+static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
PyObject *use_cline;
PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
@@ -26664,7 +26802,9 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#if CYTHON_COMPILING_IN_CPYTHON
cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
if (likely(cython_runtime_dict)) {
- use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);
+ __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
+ use_cline, *cython_runtime_dict,
+ __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
} else
#endif
{
@@ -26681,7 +26821,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
c_line = 0;
PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
}
- else if (PyObject_Not(use_cline) != 0) {
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
c_line = 0;
}
__Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
@@ -26690,7 +26830,7 @@ static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_li
#endif
/* CodeObjectCache */
- static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
int start = 0, mid = 0, end = count - 1;
if (end >= 0 && code_line > entries[end].code_line) {
return count;
@@ -26770,7 +26910,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
}
/* AddTraceback */
- #include "compile.h"
+#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
@@ -26878,8 +27018,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) {
#endif
- /* MemviewSliceIsContig */
- static int
+/* MemviewSliceIsContig */
+static int
__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
{
int i, index, step, start;
@@ -26901,7 +27041,7 @@ __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim)
}
/* OverlappingSlices */
- static void
+static void
__pyx_get_array_memory_extents(__Pyx_memviewslice *slice,
void **out_start, void **out_end,
int ndim, size_t itemsize)
@@ -26937,7 +27077,7 @@ __pyx_slices_overlap(__Pyx_memviewslice *slice1,
}
/* Capsule */
- static CYTHON_INLINE PyObject *
+static CYTHON_INLINE PyObject *
__pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
{
PyObject *cobj;
@@ -26950,7 +27090,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* CIntFromPyVerify */
- #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
+#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
__PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
@@ -26972,7 +27112,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* IsLittleEndian */
- static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
+static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
{
union {
uint32_t u32;
@@ -26983,7 +27123,7 @@ __pyx_capsule_create(void *p, CYTHON_UNUSED const char *sig)
}
/* BufferFormatCheck */
- static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
+static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
__Pyx_BufFmt_StackElem* stack,
__Pyx_TypeInfo* type) {
stack[0].field = &ctx->root;
@@ -27485,7 +27625,7 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha
}
/* TypeInfoCompare */
- static int
+ static int
__pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
{
int i;
@@ -27526,7 +27666,7 @@ __pyx_typeinfo_cmp(__Pyx_TypeInfo *a, __Pyx_TypeInfo *b)
}
/* MemviewSliceValidateAndInit */
- static int
+ static int
__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec)
{
if (buf->shape[dim] <= 1)
@@ -27708,7 +27848,7 @@ no_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_float(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27731,7 +27871,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27754,7 +27894,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_double(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27777,7 +27917,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27800,7 +27940,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint64_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27823,7 +27963,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27846,7 +27986,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint32_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27869,7 +28009,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_int16_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27892,7 +28032,7 @@ __pyx_fail:
}
/* ObjectToMemviewSlice */
- static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(PyObject *obj, int writable_flag) {
+ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_5numpy_uint16_t(PyObject *obj, int writable_flag) {
__Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_BufFmt_StackElem stack[1];
int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) };
@@ -27915,8 +28055,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -27946,8 +28086,8 @@ __pyx_fail:
}
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
@@ -27977,7 +28117,7 @@ __pyx_fail:
}
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
return ::std::complex< float >(x, y);
@@ -27997,7 +28137,7 @@ __pyx_fail:
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -28132,7 +28272,7 @@ __pyx_fail:
#endif
/* Declarations */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#ifdef __cplusplus
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
return ::std::complex< double >(x, y);
@@ -28152,7 +28292,7 @@ __pyx_fail:
#endif
/* Arithmetic */
- #if CYTHON_CCOMPLEX
+ #if CYTHON_CCOMPLEX
#else
static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
return (a.real == b.real) && (a.imag == b.imag);
@@ -28287,8 +28427,8 @@ __pyx_fail:
#endif
/* CIntToPy */
- static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
- const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0;
+ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
+ const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(enum NPY_TYPES) < sizeof(long)) {
@@ -28318,7 +28458,7 @@ __pyx_fail:
}
/* MemviewSliceCopyTemplate */
- static __Pyx_memviewslice
+ static __Pyx_memviewslice
__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs,
const char *mode, int ndim,
size_t sizeof_dtype, int contig_flag,
@@ -28385,8 +28525,8 @@ no_fail:
}
/* CIntFromPy */
- static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) -1, const_zero = (int) 0;
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+ const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -28574,8 +28714,1142 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) -1, const_zero = (long) 0;
+ static CYTHON_INLINE npy_int64 __Pyx_PyInt_As_npy_int64(PyObject *x) {
+ const npy_int64 neg_one = (npy_int64) ((npy_int64) 0 - (npy_int64) 1), const_zero = (npy_int64) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_int64) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_int64) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int64) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int64, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_int64) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) >= 2 * PyLong_SHIFT) {
+ return (npy_int64) (((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int64) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) >= 3 * PyLong_SHIFT) {
+ return (npy_int64) (((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int64) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) >= 4 * PyLong_SHIFT) {
+ return (npy_int64) (((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_int64) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_int64) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int64, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int64) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int64, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int64) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_int64, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int64, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_int64) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int64) (((npy_int64)-1)*(((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_int64) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int64) ((((((npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_int64) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int64) (((npy_int64)-1)*(((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int64) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int64) ((((((((npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_int64) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int64) (((npy_int64)-1)*(((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int64) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int64) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int64) ((((((((((npy_int64)digits[3]) << PyLong_SHIFT) | (npy_int64)digits[2]) << PyLong_SHIFT) | (npy_int64)digits[1]) << PyLong_SHIFT) | (npy_int64)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_int64) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int64, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int64) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int64, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_int64 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_int64) -1;
+ }
+ } else {
+ npy_int64 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_int64) -1;
+ val = __Pyx_PyInt_As_npy_int64(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_int64");
+ return (npy_int64) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_int64");
+ return (npy_int64) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE npy_uint64 __Pyx_PyInt_As_npy_uint64(PyObject *x) {
+ const npy_uint64 neg_one = (npy_uint64) ((npy_uint64) 0 - (npy_uint64) 1), const_zero = (npy_uint64) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_uint64) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_uint64) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint64) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint64, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_uint64) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) >= 2 * PyLong_SHIFT) {
+ return (npy_uint64) (((((npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint64) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) >= 3 * PyLong_SHIFT) {
+ return (npy_uint64) (((((((npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint64) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) >= 4 * PyLong_SHIFT) {
+ return (npy_uint64) (((((((((npy_uint64)digits[3]) << PyLong_SHIFT) | (npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_uint64) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_uint64) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint64, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint64) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint64, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint64) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_uint64, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint64, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_uint64) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint64) (((npy_uint64)-1)*(((((npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_uint64) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint64) ((((((npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_uint64) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint64) (((npy_uint64)-1)*(((((((npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint64) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint64) ((((((((npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_uint64) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint64) (((npy_uint64)-1)*(((((((((npy_uint64)digits[3]) << PyLong_SHIFT) | (npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint64) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint64, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint64) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint64) ((((((((((npy_uint64)digits[3]) << PyLong_SHIFT) | (npy_uint64)digits[2]) << PyLong_SHIFT) | (npy_uint64)digits[1]) << PyLong_SHIFT) | (npy_uint64)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_uint64) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint64, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint64) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint64, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_uint64 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_uint64) -1;
+ }
+ } else {
+ npy_uint64 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_uint64) -1;
+ val = __Pyx_PyInt_As_npy_uint64(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_uint64");
+ return (npy_uint64) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_uint64");
+ return (npy_uint64) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE npy_int32 __Pyx_PyInt_As_npy_int32(PyObject *x) {
+ const npy_int32 neg_one = (npy_int32) ((npy_int32) 0 - (npy_int32) 1), const_zero = (npy_int32) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_int32) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_int32) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int32) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int32, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_int32) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) >= 2 * PyLong_SHIFT) {
+ return (npy_int32) (((((npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int32) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) >= 3 * PyLong_SHIFT) {
+ return (npy_int32) (((((((npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int32) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) >= 4 * PyLong_SHIFT) {
+ return (npy_int32) (((((((((npy_int32)digits[3]) << PyLong_SHIFT) | (npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_int32) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_int32) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int32, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int32) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int32, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int32) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_int32, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int32, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_int32) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int32) (((npy_int32)-1)*(((((npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_int32) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int32) ((((((npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_int32) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int32) (((npy_int32)-1)*(((((((npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int32) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int32) ((((((((npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_int32) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int32) (((npy_int32)-1)*(((((((((npy_int32)digits[3]) << PyLong_SHIFT) | (npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int32) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int32) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int32) ((((((((((npy_int32)digits[3]) << PyLong_SHIFT) | (npy_int32)digits[2]) << PyLong_SHIFT) | (npy_int32)digits[1]) << PyLong_SHIFT) | (npy_int32)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_int32) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int32, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int32) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int32, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_int32 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_int32) -1;
+ }
+ } else {
+ npy_int32 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_int32) -1;
+ val = __Pyx_PyInt_As_npy_int32(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_int32");
+ return (npy_int32) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_int32");
+ return (npy_int32) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE npy_uint32 __Pyx_PyInt_As_npy_uint32(PyObject *x) {
+ const npy_uint32 neg_one = (npy_uint32) ((npy_uint32) 0 - (npy_uint32) 1), const_zero = (npy_uint32) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_uint32) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_uint32) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint32) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint32, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_uint32) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) >= 2 * PyLong_SHIFT) {
+ return (npy_uint32) (((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint32) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) >= 3 * PyLong_SHIFT) {
+ return (npy_uint32) (((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint32) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) >= 4 * PyLong_SHIFT) {
+ return (npy_uint32) (((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_uint32) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_uint32) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint32) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint32) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_uint32, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint32, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_uint32) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint32) (((npy_uint32)-1)*(((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_uint32) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint32) ((((((npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_uint32) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint32) (((npy_uint32)-1)*(((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint32) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint32) ((((((((npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_uint32) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint32) (((npy_uint32)-1)*(((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint32) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint32, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint32) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint32) ((((((((((npy_uint32)digits[3]) << PyLong_SHIFT) | (npy_uint32)digits[2]) << PyLong_SHIFT) | (npy_uint32)digits[1]) << PyLong_SHIFT) | (npy_uint32)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_uint32) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint32) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint32, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_uint32 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_uint32) -1;
+ }
+ } else {
+ npy_uint32 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_uint32) -1;
+ val = __Pyx_PyInt_As_npy_uint32(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_uint32");
+ return (npy_uint32) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_uint32");
+ return (npy_uint32) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE npy_int16 __Pyx_PyInt_As_npy_int16(PyObject *x) {
+ const npy_int16 neg_one = (npy_int16) ((npy_int16) 0 - (npy_int16) 1), const_zero = (npy_int16) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_int16) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_int16) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int16) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int16, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_int16) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) >= 2 * PyLong_SHIFT) {
+ return (npy_int16) (((((npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int16) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) >= 3 * PyLong_SHIFT) {
+ return (npy_int16) (((((((npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int16) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) >= 4 * PyLong_SHIFT) {
+ return (npy_int16) (((((((((npy_int16)digits[3]) << PyLong_SHIFT) | (npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_int16) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_int16) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int16, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int16) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int16, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_int16) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_int16, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_int16, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_int16) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int16) (((npy_int16)-1)*(((((npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_int16) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_int16) ((((((npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_int16) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int16) (((npy_int16)-1)*(((((((npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_int16) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_int16) ((((((((npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_int16) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int16) (((npy_int16)-1)*(((((((((npy_int16)digits[3]) << PyLong_SHIFT) | (npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_int16) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_int16, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_int16) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_int16) ((((((((((npy_int16)digits[3]) << PyLong_SHIFT) | (npy_int16)digits[2]) << PyLong_SHIFT) | (npy_int16)digits[1]) << PyLong_SHIFT) | (npy_int16)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_int16) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int16, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_int16) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_int16, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_int16 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_int16) -1;
+ }
+ } else {
+ npy_int16 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_int16) -1;
+ val = __Pyx_PyInt_As_npy_int16(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_int16");
+ return (npy_int16) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_int16");
+ return (npy_int16) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE npy_uint16 __Pyx_PyInt_As_npy_uint16(PyObject *x) {
+ const npy_uint16 neg_one = (npy_uint16) ((npy_uint16) 0 - (npy_uint16) 1), const_zero = (npy_uint16) 0;
+ const int is_unsigned = neg_one > const_zero;
+#if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+ if (sizeof(npy_uint16) < sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, long, PyInt_AS_LONG(x))
+ } else {
+ long val = PyInt_AS_LONG(x);
+ if (is_unsigned && unlikely(val < 0)) {
+ goto raise_neg_overflow;
+ }
+ return (npy_uint16) val;
+ }
+ } else
+#endif
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint16) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint16, digit, digits[0])
+ case 2:
+ if (8 * sizeof(npy_uint16) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) >= 2 * PyLong_SHIFT) {
+ return (npy_uint16) (((((npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0]));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint16) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) >= 3 * PyLong_SHIFT) {
+ return (npy_uint16) (((((((npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0]));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint16) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) >= 4 * PyLong_SHIFT) {
+ return (npy_uint16) (((((((((npy_uint16)digits[3]) << PyLong_SHIFT) | (npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0]));
+ }
+ }
+ break;
+ }
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON
+ if (unlikely(Py_SIZE(x) < 0)) {
+ goto raise_neg_overflow;
+ }
+#else
+ {
+ int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
+ if (unlikely(result < 0))
+ return (npy_uint16) -1;
+ if (unlikely(result == 1))
+ goto raise_neg_overflow;
+ }
+#endif
+ if (sizeof(npy_uint16) <= sizeof(unsigned long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint16, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint16) <= sizeof(unsigned PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint16, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+ }
+ } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+ const digit* digits = ((PyLongObject*)x)->ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (npy_uint16) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(npy_uint16, sdigit, (sdigit) (-(sdigit)digits[0]))
+ case 1: __PYX_VERIFY_RETURN_INT(npy_uint16, digit, +digits[0])
+ case -2:
+ if (8 * sizeof(npy_uint16) - 1 > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint16) (((npy_uint16)-1)*(((((npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ case 2:
+ if (8 * sizeof(npy_uint16) > 1 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 2 * PyLong_SHIFT) {
+ return (npy_uint16) ((((((npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ case -3:
+ if (8 * sizeof(npy_uint16) - 1 > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint16) (((npy_uint16)-1)*(((((((npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ case 3:
+ if (8 * sizeof(npy_uint16) > 2 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 3 * PyLong_SHIFT) {
+ return (npy_uint16) ((((((((npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ case -4:
+ if (8 * sizeof(npy_uint16) - 1 > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint16) (((npy_uint16)-1)*(((((((((npy_uint16)digits[3]) << PyLong_SHIFT) | (npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ case 4:
+ if (8 * sizeof(npy_uint16) > 3 * PyLong_SHIFT) {
+ if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
+ __PYX_VERIFY_RETURN_INT(npy_uint16, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+ } else if (8 * sizeof(npy_uint16) - 1 > 4 * PyLong_SHIFT) {
+ return (npy_uint16) ((((((((((npy_uint16)digits[3]) << PyLong_SHIFT) | (npy_uint16)digits[2]) << PyLong_SHIFT) | (npy_uint16)digits[1]) << PyLong_SHIFT) | (npy_uint16)digits[0])));
+ }
+ }
+ break;
+ }
+#endif
+ if (sizeof(npy_uint16) <= sizeof(long)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint16, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+ } else if (sizeof(npy_uint16) <= sizeof(PY_LONG_LONG)) {
+ __PYX_VERIFY_RETURN_INT_EXC(npy_uint16, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+ }
+ }
+ {
+#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+ PyErr_SetString(PyExc_RuntimeError,
+ "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+#else
+ npy_uint16 val;
+ PyObject *v = __Pyx_PyNumber_IntOrLong(x);
+ #if PY_MAJOR_VERSION < 3
+ if (likely(v) && !PyLong_Check(v)) {
+ PyObject *tmp = v;
+ v = PyNumber_Long(tmp);
+ Py_DECREF(tmp);
+ }
+ #endif
+ if (likely(v)) {
+ int one = 1; int is_little = (int)*(unsigned char *)&one;
+ unsigned char *bytes = (unsigned char *)&val;
+ int ret = _PyLong_AsByteArray((PyLongObject *)v,
+ bytes, sizeof(val),
+ is_little, !is_unsigned);
+ Py_DECREF(v);
+ if (likely(!ret))
+ return val;
+ }
+#endif
+ return (npy_uint16) -1;
+ }
+ } else {
+ npy_uint16 val;
+ PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+ if (!tmp) return (npy_uint16) -1;
+ val = __Pyx_PyInt_As_npy_uint16(tmp);
+ Py_DECREF(tmp);
+ return val;
+ }
+raise_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "value too large to convert to npy_uint16");
+ return (npy_uint16) -1;
+raise_neg_overflow:
+ PyErr_SetString(PyExc_OverflowError,
+ "can't convert negative value to npy_uint16");
+ return (npy_uint16) -1;
+}
+
+/* CIntFromPy */
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+ const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -28763,8 +30037,8 @@ raise_neg_overflow:
}
/* CIntFromPy */
- static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
- const char neg_one = (char) -1, const_zero = (char) 0;
+ static CYTHON_INLINE char __Pyx_PyInt_As_char(PyObject *x) {
+ const char neg_one = (char) ((char) 0 - (char) 1), const_zero = (char) 0;
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -28952,7 +30226,7 @@ raise_neg_overflow:
}
/* CheckBinaryVersion */
- static int __Pyx_check_binary_version(void) {
+ static int __Pyx_check_binary_version(void) {
char ctversion[4], rtversion[4];
PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
@@ -28967,91 +30241,8 @@ raise_neg_overflow:
return 0;
}
-/* ModuleImport */
- #ifndef __PYX_HAVE_RT_ImportModule
-#define __PYX_HAVE_RT_ImportModule
-static PyObject *__Pyx_ImportModule(const char *name) {
- PyObject *py_name = 0;
- PyObject *py_module = 0;
- py_name = __Pyx_PyIdentifier_FromString(name);
- if (!py_name)
- goto bad;
- py_module = PyImport_Import(py_name);
- Py_DECREF(py_name);
- return py_module;
-bad:
- Py_XDECREF(py_name);
- return 0;
-}
-#endif
-
-/* TypeImport */
- #ifndef __PYX_HAVE_RT_ImportType
-#define __PYX_HAVE_RT_ImportType
-static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
- size_t size, int strict)
-{
- PyObject *py_module = 0;
- PyObject *result = 0;
- PyObject *py_name = 0;
- char warning[200];
- Py_ssize_t basicsize;
-#ifdef Py_LIMITED_API
- PyObject *py_basicsize;
-#endif
- py_module = __Pyx_ImportModule(module_name);
- if (!py_module)
- goto bad;
- py_name = __Pyx_PyIdentifier_FromString(class_name);
- if (!py_name)
- goto bad;
- result = PyObject_GetAttr(py_module, py_name);
- Py_DECREF(py_name);
- py_name = 0;
- Py_DECREF(py_module);
- py_module = 0;
- if (!result)
- goto bad;
- if (!PyType_Check(result)) {
- PyErr_Format(PyExc_TypeError,
- "%.200s.%.200s is not a type object",
- module_name, class_name);
- goto bad;
- }
-#ifndef Py_LIMITED_API
- basicsize = ((PyTypeObject *)result)->tp_basicsize;
-#else
- py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
- if (!py_basicsize)
- goto bad;
- basicsize = PyLong_AsSsize_t(py_basicsize);
- Py_DECREF(py_basicsize);
- py_basicsize = 0;
- if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
- goto bad;
-#endif
- if (!strict && (size_t)basicsize > size) {
- PyOS_snprintf(warning, sizeof(warning),
- "%s.%s size changed, may indicate binary incompatibility. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
- }
- else if ((size_t)basicsize != size) {
- PyErr_Format(PyExc_ValueError,
- "%.200s.%.200s has the wrong size, try recompiling. Expected %zd, got %zd",
- module_name, class_name, basicsize, size);
- goto bad;
- }
- return (PyTypeObject *)result;
-bad:
- Py_XDECREF(py_module);
- Py_XDECREF(result);
- return NULL;
-}
-#endif
-
/* InitStrings */
- static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
while (t->p) {
#if PY_MAJOR_VERSION < 3
if (t->is_unicode) {
@@ -29160,6 +30351,13 @@ static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
else return PyObject_IsTrue(x);
}
+static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
+ int retval;
+ if (unlikely(!x)) return -1;
+ retval = __Pyx_PyObject_IsTrue(x);
+ Py_DECREF(x);
+ return retval;
+}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
if (PyLong_Check(result)) {
@@ -29237,7 +30435,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
if (sizeof(Py_ssize_t) >= sizeof(long))
return PyInt_AS_LONG(b);
else
- return PyInt_AsSsize_t(x);
+ return PyInt_AsSsize_t(b);
}
#endif
if (likely(PyLong_CheckExact(b))) {
diff --git a/silx/math/medianfilter/medianfilter.pyx b/silx/math/medianfilter/medianfilter.pyx
index 10dbcfe..7f7019f 100644
--- a/silx/math/medianfilter/medianfilter.pyx
+++ b/silx/math/medianfilter/medianfilter.pyx
@@ -37,36 +37,64 @@ import numpy
cimport numpy as cnumpy
from libcpp cimport bool
+import numbers
+
ctypedef unsigned long uint64
ctypedef unsigned int uint32
ctypedef unsigned short uint16
-MODES = {'nearest':0, 'reflect':1, 'mirror':2, 'shrink':3}
+MODES = {'nearest': 0, 'reflect': 1, 'mirror': 2, 'shrink': 3, 'constant': 4}
-def medfilt1d(data, kernel_size=3, bool conditional=False, mode='nearest'):
+def medfilt1d(data,
+ kernel_size=3,
+ bool conditional=False,
+ mode='nearest',
+ cval=0):
"""Function computing the median filter of the given input.
+
Behavior at boundaries: the algorithm is reducing the size of the
window/kernel for pixels at boundaries (there is no mirroring).
+ Not-a-Number (NaN) float values are ignored.
+ If the window only contains NaNs, it evaluates to NaN.
+
+ In event of an even number of valid values in the window (either
+ because of NaN values or on image border in shrink mode),
+ the highest of the 2 central sorted values is taken.
+
:param numpy.ndarray data: the array for which we want to apply
the median filter. Should be 1d.
:param kernel_size: the dimension of the kernel.
:type kernel_size: int
:param bool conditional: True if we want to apply a conditional median
filtering.
+ :param str mode: the algorithm used to determine how values at borders
+ are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'
+ :param cval: Value used outside borders in 'constant' mode
:returns: the array with the median value for each pixel.
"""
- return medfilt(data, kernel_size, conditional, mode)
+ return medfilt(data, kernel_size, conditional, mode, cval)
-def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'):
+def medfilt2d(image,
+ kernel_size=3,
+ bool conditional=False,
+ mode='nearest',
+ cval=0):
"""Function computing the median filter of the given input.
Behavior at boundaries: the algorithm is reducing the size of the
window/kernel for pixels at boundaries (there is no mirroring).
+ Not-a-Number (NaN) float values are ignored.
+ If the window only contains NaNs, it evaluates to NaN.
+
+ In event of an even number of valid values in the window (either
+ because of NaN values or on image border in shrink mode),
+ the highest of the 2 central sorted values is taken.
+
:param numpy.ndarray data: the array for which we want to apply
the median filter. Should be 2d.
:param kernel_size: the dimension of the kernel.
@@ -74,51 +102,70 @@ def medfilt2d(image, kernel_size=3, bool conditional=False, mode='nearest'):
a list of (kernel_height, kernel_width)
:param bool conditional: True if we want to apply a conditional median
filtering.
+ :param str mode: the algorithm used to determine how values at borders
+ are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'
+ :param cval: Value used outside borders in 'constant' mode
:returns: the array with the median value for each pixel.
"""
- return medfilt(image, kernel_size, conditional, mode)
+ return medfilt(image, kernel_size, conditional, mode, cval)
-def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'):
+def medfilt(data,
+ kernel_size=3,
+ bool conditional=False,
+ mode='nearest',
+ cval=0):
"""Function computing the median filter of the given input.
Behavior at boundaries: the algorithm is reducing the size of the
window/kernel for pixels at boundaries (there is no mirroring).
- :param numpy.ndarray data: the array for which we want to apply
+ Not-a-Number (NaN) float values are ignored.
+ If the window only contains NaNs, it evaluates to NaN.
+
+ In event of an even number of valid values in the window (either
+ because of NaN values or on image border in shrink mode),
+ the highest of the 2 central sorted values is taken.
+
+ :param numpy.ndarray data: the array for which we want to apply
the median filter. Should be 1d or 2d.
:param kernel_size: the dimension of the kernel.
- :type kernel_size: For 1D should be an int for 2D should be a tuple or
+ :type kernel_size: For 1D should be an int for 2D should be a tuple or
a list of (kernel_height, kernel_width)
:param bool conditional: True if we want to apply a conditional median
filtering.
:param str mode: the algorithm used to determine how values at borders
- are determined.
+ are determined: 'nearest', 'reflect', 'mirror', 'shrink', 'constant'
+ :param cval: Value used outside borders in 'constant' mode
:returns: the array with the median value for each pixel.
"""
if mode not in MODES:
- err = 'Requested mode %s is unknowed.' % mode
+ err = 'Requested mode %s is unknown.' % mode
raise ValueError(err)
+ if data.ndim > 2:
+ raise ValueError(
+ "Invalid data shape. Dimension of the array should be 1 or 2")
+
+ # Handle case of scalar kernel size
+ if isinstance(kernel_size, numbers.Integral):
+ kernel_size = [kernel_size] * data.ndim
+
+ assert len(kernel_size) == data.ndim
+
+ # Convert 1D arrays to 2D
reshaped = False
if len(data.shape) == 1:
- data = data.reshape(data.shape[0], 1)
+ data = data.reshape(1, data.shape[0])
+ kernel_size = [1, kernel_size[0]]
reshaped = True
- elif len(data.shape) > 2:
- raise ValueError("Invalid data shape. Dimemsion of the arary should be 1 or 2")
# simple median filter apply into a 2D buffer
output_buffer = numpy.zeros_like(data)
check(data, output_buffer)
- if type(kernel_size) in (tuple, list):
- if(len(kernel_size) == 1):
- ker_dim = numpy.array(1, [kernel_size[0]], dtype=numpy.int32)
- else:
- ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
- else:
- ker_dim = numpy.array([kernel_size, kernel_size], dtype=numpy.int32)
+ ker_dim = numpy.array(kernel_size, dtype=numpy.int32)
if data.dtype == numpy.float64:
medfilterfc = _median_filter_float64
@@ -143,11 +190,11 @@ def medfilt(data, kernel_size=3, bool conditional=False, mode='nearest'):
output_buffer=output_buffer,
kernel_size=ker_dim,
conditional=conditional,
- mode=MODES[mode])
+ mode=MODES[mode],
+ cval=cval)
if reshaped:
- data = data.reshape(data.shape[0])
- output_buffer = output_buffer.reshape(data.shape[0])
+ output_buffer.shape = -1 # Convert to 1D array
return output_buffer
@@ -209,7 +256,8 @@ def _median_filter_float32(float[:, ::1] input_buffer not None,
float[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ float cval):
cdef:
int y = 0
@@ -227,7 +275,8 @@ def _median_filter_float32(float[:, ::1] input_buffer not None,
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -238,7 +287,8 @@ def _median_filter_float64(double[:, ::1] input_buffer not None,
double[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ double cval):
cdef:
int y = 0
@@ -256,7 +306,8 @@ def _median_filter_float64(double[:, ::1] input_buffer not None,
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -267,7 +318,8 @@ def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None,
cnumpy.int64_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.int64_t cval):
cdef:
int y = 0
@@ -280,23 +332,24 @@ def _median_filter_int64(cnumpy.int64_t[:, ::1] input_buffer not None,
median_filter.median_filter[long](<long*> & input_buffer[0,0],
<long*> & output_buffer[0, 0],
<int*>&kernel_size[0],
- <int*>buffer_shape,
- y,
- 0,
- image_dim,
- conditional,
- mode)
+ <int*>buffer_shape,
+ y,
+ 0,
+ image_dim,
+ conditional,
+ mode,
+ cval)
@cython.cdivision(True)
@cython.boundscheck(False)
@cython.wraparound(False)
@cython.initializedcheck(False)
-def _median_filter_uint64(
- cnumpy.uint64_t[:, ::1] input_buffer not None,
+def _median_filter_uint64(cnumpy.uint64_t[:, ::1] input_buffer not None,
cnumpy.uint64_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.uint64_t cval):
cdef:
int y = 0
@@ -314,7 +367,8 @@ def _median_filter_uint64(
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -325,7 +379,8 @@ def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None,
cnumpy.int32_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.int32_t cval):
cdef:
int y = 0
@@ -343,7 +398,8 @@ def _median_filter_int32(cnumpy.int32_t[:, ::1] input_buffer not None,
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -354,7 +410,8 @@ def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None,
cnumpy.uint32_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.uint32_t cval):
cdef:
int y = 0
@@ -372,7 +429,8 @@ def _median_filter_uint32(cnumpy.uint32_t[:, ::1] input_buffer not None,
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -383,7 +441,8 @@ def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None,
cnumpy.int16_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.int16_t cval):
cdef:
int y = 0
@@ -401,7 +460,8 @@ def _median_filter_int16(cnumpy.int16_t[:, ::1] input_buffer not None,
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
@cython.cdivision(True)
@@ -413,7 +473,8 @@ def _median_filter_uint16(
cnumpy.uint16_t[:, ::1] output_buffer not None,
cnumpy.int32_t[::1] kernel_size not None,
bool conditional,
- int mode):
+ int mode,
+ cnumpy.uint16_t cval):
cdef:
int y = 0
@@ -431,4 +492,5 @@ def _median_filter_uint16(
0,
image_dim,
conditional,
- mode)
+ mode,
+ cval)
diff --git a/silx/math/medianfilter/test/__init__.py b/silx/math/medianfilter/test/__init__.py
index ec08d21..92a6524 100644
--- a/silx/math/medianfilter/test/__init__.py
+++ b/silx/math/medianfilter/test/__init__.py
@@ -1,6 +1,6 @@
# coding: utf-8
# /*##########################################################################
-# Copyright (C) 2016 European Synchrotron Radiation Facility
+# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -27,10 +27,10 @@ __date__ = "22/06/2016"
import unittest
-from .test_medianfilter import suite as test_medianfilter
+from . import test_medianfilter
def suite():
test_suite = unittest.TestSuite()
- test_suite.addTest(test_medianfilter())
+ test_suite.addTest(test_medianfilter.suite())
return test_suite
diff --git a/silx/math/medianfilter/test/test_medianfilter.py b/silx/math/medianfilter/test/test_medianfilter.py
index 1171e23..3a45b3d 100644
--- a/silx/math/medianfilter/test/test_medianfilter.py
+++ b/silx/math/medianfilter/test/test_medianfilter.py
@@ -1,6 +1,6 @@
# coding: utf-8
# ##########################################################################
-# Copyright (C) 2017 European Synchrotron Radiation Facility
+# Copyright (C) 2017-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -29,7 +29,7 @@ __date__ = "17/01/2018"
import unittest
import numpy
-from silx.math.medianfilter import medfilt2d
+from silx.math.medianfilter import medfilt2d, medfilt1d
from silx.math.medianfilter.medianfilter import reflect, mirror
from silx.math.medianfilter.medianfilter import MODES as silx_mf_modes
from silx.utils.testutils import ParametricTestCase
@@ -109,6 +109,14 @@ class TestMedianFilterNearest(ParametricTestCase):
self.assertTrue(numpy.array_equal(dataIn, dataOut))
+ def testFilter3_1d(self):
+ """Test binding and result of the 1d filter"""
+ self.assertTrue(numpy.array_equal(
+ medfilt1d(RANDOM_INT_MAT[0], kernel_size=3, conditional=False,
+ mode='nearest'),
+ [0, 2, 5, 2, 1])
+ )
+
def testFilter3Conditionnal(self):
"""Test that the conditional filter apply correctly in a 10x10 matrix
with a 3x3 kernel
@@ -138,6 +146,30 @@ class TestMedianFilterNearest(ParametricTestCase):
self.assertTrue(dataOut[9] == 9)
self.assertTrue(dataOut[99] == 99)
+ def testNaNs(self):
+ """Test median filter on image with NaNs in nearest mode"""
+ # Data with a NaN in first corner
+ nan_corner = numpy.arange(100.).reshape(10, 10)
+ nan_corner[0, 0] = numpy.nan
+ output = medfilt2d(
+ nan_corner, kernel_size=3, conditional=False, mode='nearest')
+ self.assertEqual(output[0, 0], 10)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 11)
+ self.assertEqual(output[1, 1], 12)
+
+ # Data with some NaNs
+ some_nans = numpy.arange(100.).reshape(10, 10)
+ some_nans[0, 1] = numpy.nan
+ some_nans[1, 1] = numpy.nan
+ some_nans[1, 0] = numpy.nan
+ output = medfilt2d(
+ some_nans, kernel_size=3, conditional=False, mode='nearest')
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 20)
+ self.assertEqual(output[1, 1], 20)
+
class TestMedianFilterReflect(ParametricTestCase):
"""Unit test for the median filter in reflect mode"""
@@ -209,6 +241,38 @@ class TestMedianFilterReflect(ParametricTestCase):
mode='reflect')
self.assertTrue(numpy.array_equal(thRes, res))
+ def testNaNs(self):
+ """Test median filter on image with NaNs in reflect mode"""
+ # Data with a NaN in first corner
+ nan_corner = numpy.arange(100.).reshape(10, 10)
+ nan_corner[0, 0] = numpy.nan
+ output = medfilt2d(
+ nan_corner, kernel_size=3, conditional=False, mode='reflect')
+ self.assertEqual(output[0, 0], 10)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 11)
+ self.assertEqual(output[1, 1], 12)
+
+ # Data with some NaNs
+ some_nans = numpy.arange(100.).reshape(10, 10)
+ some_nans[0, 1] = numpy.nan
+ some_nans[1, 1] = numpy.nan
+ some_nans[1, 0] = numpy.nan
+ output = medfilt2d(
+ some_nans, kernel_size=3, conditional=False, mode='reflect')
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 20)
+ self.assertEqual(output[1, 1], 20)
+
+ def testFilter3_1d(self):
+ """Test binding and result of the 1d filter"""
+ self.assertTrue(numpy.array_equal(
+ medfilt1d(RANDOM_INT_MAT[0], kernel_size=5, conditional=False,
+ mode='reflect'),
+ [2, 2, 2, 2, 2])
+ )
+
class TestMedianFilterMirror(ParametricTestCase):
"""Unit test for the median filter in mirror mode
@@ -269,6 +333,37 @@ class TestMedianFilterMirror(ParametricTestCase):
self.assertTrue(numpy.array_equal(thRes, res))
+ def testNaNs(self):
+ """Test median filter on image with NaNs in mirror mode"""
+ # Data with a NaN in first corner
+ nan_corner = numpy.arange(100.).reshape(10, 10)
+ nan_corner[0, 0] = numpy.nan
+ output = medfilt2d(
+ nan_corner, kernel_size=3, conditional=False, mode='mirror')
+ self.assertEqual(output[0, 0], 11)
+ self.assertEqual(output[0, 1], 11)
+ self.assertEqual(output[1, 0], 11)
+ self.assertEqual(output[1, 1], 12)
+
+ # Data with some NaNs
+ some_nans = numpy.arange(100.).reshape(10, 10)
+ some_nans[0, 1] = numpy.nan
+ some_nans[1, 1] = numpy.nan
+ some_nans[1, 0] = numpy.nan
+ output = medfilt2d(
+ some_nans, kernel_size=3, conditional=False, mode='mirror')
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 12)
+ self.assertEqual(output[1, 0], 21)
+ self.assertEqual(output[1, 1], 20)
+
+ def testFilter3_1d(self):
+ """Test binding and result of the 1d filter"""
+ self.assertTrue(numpy.array_equal(
+ medfilt1d(RANDOM_INT_MAT[0], kernel_size=5, conditional=False,
+ mode='mirror'),
+ [2, 5, 2, 5, 2])
+ )
class TestMedianFilterShrink(ParametricTestCase):
"""Unit test for the median filter in mirror mode
@@ -362,6 +457,125 @@ class TestMedianFilterShrink(ParametricTestCase):
self.assertTrue(numpy.array_equal(resK1, thRes))
+ def testNaNs(self):
+ """Test median filter on image with NaNs in shrink mode"""
+ # Data with a NaN in first corner
+ nan_corner = numpy.arange(100.).reshape(10, 10)
+ nan_corner[0, 0] = numpy.nan
+ output = medfilt2d(
+ nan_corner, kernel_size=3, conditional=False, mode='shrink')
+ self.assertEqual(output[0, 0], 10)
+ self.assertEqual(output[0, 1], 10)
+ self.assertEqual(output[1, 0], 11)
+ self.assertEqual(output[1, 1], 12)
+
+ # Data with some NaNs
+ some_nans = numpy.arange(100.).reshape(10, 10)
+ some_nans[0, 1] = numpy.nan
+ some_nans[1, 1] = numpy.nan
+ some_nans[1, 0] = numpy.nan
+ output = medfilt2d(
+ some_nans, kernel_size=3, conditional=False, mode='shrink')
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 20)
+ self.assertEqual(output[1, 1], 20)
+
+ def testFilter3_1d(self):
+ """Test binding and result of the 1d filter"""
+ self.assertTrue(numpy.array_equal(
+ medfilt1d(RANDOM_INT_MAT[0], kernel_size=3, conditional=False,
+ mode='shrink'),
+ [5, 2, 5, 2, 6])
+ )
+
+class TestMedianFilterConstant(ParametricTestCase):
+ """Unit test for the median filter in constant mode
+ """
+
+ def testRandom10(self):
+ """Test a (5, 3) window to a random array"""
+ kernel = (3, 5)
+
+ thRes = numpy.array([
+ [0., 0.02839148, 0.05564293, 0.02839148, 0.],
+ [0.05272484, 0.40555336, 0.4440632, 0.42161216, 0.28773158],
+ [0.05272484, 0.44406320, 0.46372299, 0.42161216, 0.28773158],
+ [0.20303021, 0.46372299, 0.56049024, 0.44406320, 0.33623165],
+ [0., 0.07813661, 0.33623165, 0.07813661, 0.]])
+
+ res = medfilt2d(image=RANDOM_FLOAT_MAT,
+ kernel_size=kernel,
+ conditional=False,
+ mode='constant')
+
+ self.assertTrue(numpy.array_equal(thRes, res))
+
+ RANDOM_FLOAT_MAT = numpy.array([
+ [0.05564293, 0.62717157, 0.75002406, 0.40555336, 0.70278975],
+ [0.76532598, 0.02839148, 0.05272484, 0.65166994, 0.42161216],
+ [0.23067427, 0.74219128, 0.56049024, 0.44406320, 0.28773158],
+ [0.81025249, 0.20303021, 0.68382382, 0.46372299, 0.81281709],
+ [0.94691602, 0.07813661, 0.81651256, 0.84220106, 0.33623165]])
+
+ def testRandom10Conditionnal(self):
+ """Test the median filter in reflect mode and with the conditionnal
+ option"""
+ kernel = (1, 3)
+
+ print(RANDOM_FLOAT_MAT)
+
+ thRes = numpy.array([
+ [0.05564293, 0.62717157, 0.62717157, 0.70278975, 0.40555336],
+ [0.02839148, 0.05272484, 0.05272484, 0.42161216, 0.42161216],
+ [0.23067427, 0.56049024, 0.56049024, 0.44406320, 0.28773158],
+ [0.20303021, 0.68382382, 0.46372299, 0.68382382, 0.46372299],
+ [0.07813661, 0.81651256, 0.81651256, 0.81651256, 0.33623165]])
+
+ res = medfilt2d(image=RANDOM_FLOAT_MAT,
+ kernel_size=kernel,
+ conditional=True,
+ mode='constant')
+
+ self.assertTrue(numpy.array_equal(thRes, res))
+
+ def testNaNs(self):
+ """Test median filter on image with NaNs in constant mode"""
+ # Data with a NaN in first corner
+ nan_corner = numpy.arange(100.).reshape(10, 10)
+ nan_corner[0, 0] = numpy.nan
+ output = medfilt2d(nan_corner,
+ kernel_size=3,
+ conditional=False,
+ mode='constant',
+ cval=0)
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 2)
+ self.assertEqual(output[1, 0], 10)
+ self.assertEqual(output[1, 1], 12)
+
+ # Data with some NaNs
+ some_nans = numpy.arange(100.).reshape(10, 10)
+ some_nans[0, 1] = numpy.nan
+ some_nans[1, 1] = numpy.nan
+ some_nans[1, 0] = numpy.nan
+ output = medfilt2d(some_nans,
+ kernel_size=3,
+ conditional=False,
+ mode='constant',
+ cval=0)
+ self.assertEqual(output[0, 0], 0)
+ self.assertEqual(output[0, 1], 0)
+ self.assertEqual(output[1, 0], 0)
+ self.assertEqual(output[1, 1], 20)
+
+ def testFilter3_1d(self):
+ """Test binding and result of the 1d filter"""
+ self.assertTrue(numpy.array_equal(
+ medfilt1d(RANDOM_INT_MAT[0], kernel_size=5, conditional=False,
+ mode='constant'),
+ [0, 2, 2, 2, 1])
+ )
class TestGeneralExecution(ParametricTestCase):
"""Some general test on median filter application"""
@@ -396,6 +610,42 @@ class TestGeneralExecution(ParametricTestCase):
mode=mode)
self.assertTrue(numpy.array_equal(dataIn, dataInCopy))
+ def testAllNaNs(self):
+ """Test median filter on image all NaNs"""
+ all_nans = numpy.empty((10, 10), dtype=numpy.float32)
+ all_nans[:] = numpy.nan
+
+ for mode in silx_mf_modes:
+ for conditional in (True, False):
+ with self.subTest(mode=mode, conditional=conditional):
+ output = medfilt2d(
+ all_nans,
+ kernel_size=3,
+ conditional=conditional,
+ mode=mode,
+ cval=numpy.nan)
+ self.assertTrue(numpy.all(numpy.isnan(output)))
+
+ def testConditionalWithNaNs(self):
+ """Test that NaNs are propagated through conditional median filter"""
+ for mode in silx_mf_modes:
+ with self.subTest(mode=mode):
+ image = numpy.ones((10, 10), dtype=numpy.float32)
+ nan_mask = numpy.zeros_like(image, dtype=bool)
+ nan_mask[0, 0] = True
+ nan_mask[4, :] = True
+ nan_mask[6, 4] = True
+ image[nan_mask] = numpy.nan
+ output = medfilt2d(
+ image,
+ kernel_size=3,
+ conditional=True,
+ mode=mode)
+ out_isnan = numpy.isnan(output)
+ self.assertTrue(numpy.all(out_isnan[nan_mask]))
+ self.assertFalse(
+ numpy.any(out_isnan[numpy.logical_not(nan_mask)]))
+
def _getScipyAndSilxCommonModes():
"""return the mode which are comparable between silx and scipy"""
@@ -474,9 +724,13 @@ class TestVsScipy(ParametricTestCase):
def suite():
test_suite = unittest.TestSuite()
- for test in [TestGeneralExecution, TestVsScipy,
- TestMedianFilterNearest, TestMedianFilterReflect,
- TestMedianFilterMirror, TestMedianFilterShrink]:
+ for test in [TestGeneralExecution,
+ TestVsScipy,
+ TestMedianFilterNearest,
+ TestMedianFilterReflect,
+ TestMedianFilterMirror,
+ TestMedianFilterShrink,
+ TestMedianFilterConstant]:
test_suite.addTest(
unittest.defaultTestLoader.loadTestsFromTestCase(test))
return test_suite
diff --git a/silx/opencl/codec/byte_offset.py b/silx/opencl/codec/byte_offset.py
index 565b0c5..eaf37ee 100644
--- a/silx/opencl/codec/byte_offset.py
+++ b/silx/opencl/codec/byte_offset.py
@@ -37,7 +37,7 @@ __authors__ = ["Jérôme Kieffer"]
__contact__ = "jerome.kieffer@esrf.eu"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "24/10/2017"
+__date__ = "11/10/2018"
__status__ = "production"
@@ -404,8 +404,8 @@ class ByteOffset(OpenclProcessing):
allocator=functools.partial(out.base_data.get_sub_region,
out.offset))
- evt = pyopencl.enqueue_copy_buffer(
- self.queue, d_compressed.data, out.data, byte_count=byte_count)
+ evt = pyopencl.enqueue_copy(self.queue, out.data, d_compressed.data,
+ byte_count=byte_count)
events.append(
EventDescription("copy D -> D: internal -> out", evt))
diff --git a/silx/opencl/common.py b/silx/opencl/common.py
index e955f46..9a04035 100644
--- a/silx/opencl/common.py
+++ b/silx/opencl/common.py
@@ -4,7 +4,7 @@
# Project: S I L X project
# https://github.com/silx-kit/silx
#
-# Copyright (C) 2012-2017 European Synchrotron Radiation Facility, Grenoble, France
+# Copyright (C) 2012-2018 European Synchrotron Radiation Facility, Grenoble, France
#
# Principal author: Jérôme Kieffer (Jerome.Kieffer@ESRF.eu)
#
@@ -34,7 +34,7 @@ __author__ = "Jerome Kieffer"
__contact__ = "Jerome.Kieffer@ESRF.eu"
__license__ = "MIT"
__copyright__ = "2012-2017 European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "16/10/2017"
+__date__ = "20/09/2018"
__status__ = "stable"
__all__ = ["ocl", "pyopencl", "mf", "release_cl_buffers", "allocate_cl_buffers",
"measure_workgroup_size", "kernel_workgroup_size"]
@@ -51,7 +51,7 @@ logger = logging.getLogger(__name__)
if os.environ.get("SILX_OPENCL") in ["0", "False"]:
- logger.warning("Use of OpenCL has been disables from environment variable: SILX_OPENCL=0")
+ logger.info("Use of OpenCL has been disabled from environment variable: SILX_OPENCL=0")
pyopencl = None
else:
try:
@@ -317,7 +317,7 @@ class OpenCL(object):
flop_core = 1
workgroup = device.max_work_group_size
if (devtype == "CPU") and (pypl.vendor == "Apple"):
- logger.warning("For Apple's OpenCL on CPU: Measuring actual valid max_work_goup_size.")
+ logger.info("For Apple's OpenCL on CPU: Measuring actual valid max_work_goup_size.")
workgroup = _measure_workgroup_size(device, fast=True)
if (devtype == "GPU") and os.environ.get("GPU") == "False":
# Environment variable to disable GPU devices
diff --git a/silx/opencl/test/test_addition.py b/silx/opencl/test/test_addition.py
index cde86e2..3283a4d 100644
--- a/silx/opencl/test/test_addition.py
+++ b/silx/opencl/test/test_addition.py
@@ -35,7 +35,7 @@ __authors__ = ["Henri Payno, Jérôme Kieffer"]
__contact__ = "jerome.kieffer@esrf.eu"
__license__ = "MIT"
__copyright__ = "2013 European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "12/02/2018"
+__date__ = "05/07/2018"
import logging
import numpy
@@ -110,7 +110,7 @@ class TestAddition(unittest.TestCase):
good = numpy.allclose(res, self.data - 5)
if good and wg > self.max_valid_wg:
self.__class__.max_valid_wg = wg
- self.assert_(good, "calculation is correct for WG=%s" % wg)
+ self.assertTrue(good, "calculation is correct for WG=%s" % wg)
@unittest.skipUnless(ocl, "pyopencl is missing")
def test_measurement(self):
diff --git a/silx/opencl/test/test_medfilt.py b/silx/opencl/test/test_medfilt.py
index f4e4cc8..976b199 100644
--- a/silx/opencl/test/test_medfilt.py
+++ b/silx/opencl/test/test_medfilt.py
@@ -35,7 +35,7 @@ __authors__ = ["Jérôme Kieffer"]
__contact__ = "jerome.kieffer@esrf.eu"
__license__ = "MIT"
__copyright__ = "2013-2017 European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "15/03/2017"
+__date__ = "05/07/2018"
import sys
@@ -112,7 +112,7 @@ class TestMedianFilter(unittest.TestCase):
logger.info("test_medfilt: size: %s: skipped")
else:
logger.info("test_medfilt: size: %s error %s, t_ref: %.3fs, t_ocl: %.3fs" % r)
- self.assert_(r.error == 0, 'Results are correct')
+ self.assertEqual(r.error, 0, 'Results are correct')
def benchmark(self, limit=36):
"Run some benchmarking"
diff --git a/silx/resources/gui/icons/compare-align-auto.png b/silx/resources/gui/icons/compare-align-auto.png
new file mode 100644
index 0000000..0a716e7
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-auto.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-align-auto.svg b/silx/resources/gui/icons/compare-align-auto.svg
new file mode 100644
index 0000000..de82c30
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-auto.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg44" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata50"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><radialGradient id="a" cx="22.443" cy="21.502" r="0" gradientUnits="userSpaceOnUse"><stop id="stop21" stop-color="#00aeef" stop-opacity=".6" offset="0"/><stop id="stop23" stop-color="#517180" stop-opacity=".5317" offset=".6832"/><stop id="stop25" stop-color="#414042" stop-opacity=".5" offset="1"/></radialGradient><path id="path34" d="m22.443 21.502" fill="url(#a)"/><path id="path36" d="m10.992 6.764s4.839-0.584 5.992 4.366" fill="none" stroke="#FFF" stroke-miterlimit="10" stroke-width="1.2"/><g id="g4597" transform="matrix(.89618 0 0 .89618 33.643 30.672)"><rect id="rect2-6" x="-34.289" y="-27.796" width="26.026" height="26.026" ry="0" fill="#fab058" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.5622"/><text id="text4553" x="-33.067287" y="-5.5593224" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" stroke-width=".79075px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551" x="-33.067287" y="-5.5593224" font-family="sans-serif" font-weight="bold" stroke-width=".79075px">A</tspan></text>
+</g><g id="g4602" transform="matrix(.50611 .17057 -.17057 .50611 -5.8136 18.919)"><rect id="rect2-6-4" x="33.767" y="-32.267" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2" stroke-width="2.6213"/><text id="text4553-1" x="36.864368" y="-10.030853" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" stroke-width=".79075px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="36.864368" y="-10.030853" font-family="sans-serif" font-weight="bold" stroke-width=".79075px">B</tspan></text>
+</g></svg>
diff --git a/silx/resources/gui/icons/compare-align-center.png b/silx/resources/gui/icons/compare-align-center.png
new file mode 100644
index 0000000..bb2e8c1
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-center.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-align-center.svg b/silx/resources/gui/icons/compare-align-center.svg
new file mode 100644
index 0000000..1888820
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-center.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg44" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata50"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><radialGradient id="a" cx="22.443" cy="21.502" r="0" gradientTransform="translate(-6.443 -5.502)" gradientUnits="userSpaceOnUse"><stop id="stop21" stop-color="#00aeef" stop-opacity=".6" offset="0"/><stop id="stop23" stop-color="#517180" stop-opacity=".5317" offset=".6832"/><stop id="stop25" stop-color="#414042" stop-opacity=".5" offset="1"/></radialGradient><path id="path34" d="m16 16" fill="url(#a)"/><g id="g4597" transform="matrix(.89618 0 0 .89618 35.067 29.248)"><rect id="rect2-6" x="-34.289" y="-27.796" width="26.026" height="26.026" ry="0" fill="#fab058" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.5622"/>
+</g><g id="g4602" transform="matrix(.70181 0 0 .70181 -16.83 29.513)"><rect id="rect2-6-4" x="33.767" y="-32.267" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.9948"/><text id="text4553-1" x="36.864368" y="-10.030853" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" stroke-width=".79075px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="36.864368" y="-10.030853" font-family="sans-serif" font-weight="bold" stroke-width=".79075px">B</tspan></text>
+</g></svg>
diff --git a/silx/resources/gui/icons/compare-align-origin.png b/silx/resources/gui/icons/compare-align-origin.png
new file mode 100644
index 0000000..e209ce2
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-origin.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-align-origin.svg b/silx/resources/gui/icons/compare-align-origin.svg
new file mode 100644
index 0000000..efccf50
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-origin.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg44" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata50"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><radialGradient id="a" cx="22.443" cy="21.502" r="0" gradientTransform="translate(1.4237 -1.4237)" gradientUnits="userSpaceOnUse"><stop id="stop21" stop-color="#00aeef" stop-opacity=".6" offset="0"/><stop id="stop23" stop-color="#517180" stop-opacity=".5317" offset=".6832"/><stop id="stop25" stop-color="#414042" stop-opacity=".5" offset="1"/></radialGradient><path id="path34" d="m23.867 20.078" fill="url(#a)"/><g id="g4597" transform="matrix(.89618 0 0 .89618 35.067 29.248)"><rect id="rect2-6" x="-34.289" y="-27.796" width="26.026" height="26.026" ry="0" fill="#fab058" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.5622"/>
+</g><g id="g4602" transform="matrix(.70181 0 0 .70181 -19.285 27.058)"><rect id="rect2-6-4" x="33.767" y="-32.267" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.9948"/><text id="text4553-1" x="36.864368" y="-10.030853" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" stroke-width=".79075px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="36.864368" y="-10.030853" font-family="sans-serif" font-weight="bold" stroke-width=".79075px">B</tspan></text>
+</g></svg>
diff --git a/silx/resources/gui/icons/compare-align-stretch.png b/silx/resources/gui/icons/compare-align-stretch.png
new file mode 100644
index 0000000..707bcd1
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-stretch.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-align-stretch.svg b/silx/resources/gui/icons/compare-align-stretch.svg
new file mode 100644
index 0000000..4c4b653
--- /dev/null
+++ b/silx/resources/gui/icons/compare-align-stretch.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg44" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata50"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><radialGradient id="a" cx="22.443" cy="21.502" r="0" gradientTransform="translate(-6.443 -5.502)" gradientUnits="userSpaceOnUse"><stop id="stop21" stop-color="#00aeef" stop-opacity=".6" offset="0"/><stop id="stop23" stop-color="#517180" stop-opacity=".5317" offset=".6832"/><stop id="stop25" stop-color="#414042" stop-opacity=".5" offset="1"/></radialGradient><path id="path34" d="m16 16" fill="url(#a)"/><g id="g4597" transform="matrix(.89618 0 0 .89618 35.067 29.248)"><rect id="rect2-6" x="-34.289" y="-27.796" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2.1" stroke-width="1.5622"/>
+</g><g id="g4602" transform="matrix(.70866 0 0 .70866 -17.151 29.645)"><text id="text4553-1" x="36.864368" y="-10.030853" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" stroke-width=".79075px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="36.864368" y="-10.030853" font-family="sans-serif" font-weight="bold" stroke-width=".79075px">B</tspan></text>
+</g><path id="rect969" d="m6.3051 6.1695h5.4237l-5.4237 5.4237z" color="#000000" fill="#f0f"/><path id="rect969-5" d="m26.034 6.1695h-5.4237l5.4237 5.4237z" color="#000000" fill="#f0f"/><path id="rect969-5-3" d="m26.034 25.763h-5.4237l5.4237-5.4237z" color="#000000" fill="#f0f"/><path id="rect969-5-3-5" d="m6.3051 25.763h5.4237l-5.4237-5.4237z" color="#000000" fill="#f0f"/></svg>
diff --git a/silx/resources/gui/icons/compare-keypoints.png b/silx/resources/gui/icons/compare-keypoints.png
new file mode 100644
index 0000000..0f93111
--- /dev/null
+++ b/silx/resources/gui/icons/compare-keypoints.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-keypoints.svg b/silx/resources/gui/icons/compare-keypoints.svg
new file mode 100644
index 0000000..9282526
--- /dev/null
+++ b/silx/resources/gui/icons/compare-keypoints.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g id="g4597" transform="translate(37.276 30.783)">
+ <rect id="rect2-6" x="-34.289" y="-27.796" width="26.026" height="26.026" ry="0" fill="#f7941e" fill-opacity=".81569" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ </g>
+ <circle id="path825" cx="8.9167" cy="10.523" r="1.9176" color="#000000" fill="#f0f"/>
+ <circle id="path825-3" cx="12.177" cy="20.495" r="1.9176" color="#000000" fill="#f0f"/>
+ <circle id="path825-6" cx="17.45" cy="16.276" r="1.9176" color="#000000" fill="#f0f"/>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-a.png b/silx/resources/gui/icons/compare-mode-a.png
new file mode 100644
index 0000000..f1158f9
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-a.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-a.svg b/silx/resources/gui/icons/compare-mode-a.svg
new file mode 100644
index 0000000..57be2f3
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-a.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path id="rect2-6-4" d="m2.987 2.987h26.026v26.026h-26.026z" fill="#f8ac4f" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <text id="text4553-1" x="6.208262" y="25.223385" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="6.208262" y="25.223385" font-family="sans-serif" font-weight="bold">A</tspan></text>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-b.png b/silx/resources/gui/icons/compare-mode-b.png
new file mode 100644
index 0000000..58cd231
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-b.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-b.svg b/silx/resources/gui/icons/compare-mode-b.svg
new file mode 100644
index 0000000..929c2c0
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-b.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect2-6-4" x="2.987" y="2.987" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <text id="text4553-1" x="6.0847068" y="25.223385" fill="#000000" font-family="Scriptina" font-size="25.304px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7" x="6.0847068" y="25.223385" font-family="sans-serif" font-weight="bold">B</tspan></text>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-hline.png b/silx/resources/gui/icons/compare-mode-hline.png
new file mode 100644
index 0000000..2a9d403
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-hline.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-hline.svg b/silx/resources/gui/icons/compare-mode-hline.svg
new file mode 100644
index 0000000..9f9a2d4
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-hline.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect2-6-4" x="2.987" y="2.987" width="26.026" height="26.026" ry="0" fill="#d5fa58" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <path id="path4539" d="m15.796 15.165q1.1244 0 1.7051-0.49422 0.58071-0.49422 0.58071-1.458 0-0.95137-0.58071-1.4456-0.58071-0.50658-1.7051-0.50658h-2.6317v3.9043zm0.16062 8.0681q1.4332 0 2.1499-0.60542 0.72898-0.60542 0.72898-1.8286 0-1.1985-0.71662-1.7915-0.71662-0.60542-2.1622-0.60542h-2.7923v4.831zm4.4233-6.6349q1.5321 0.4448 2.3723 1.6433t0.84017 2.9406q0 2.6688-1.8039 3.9785t-5.4858 1.3097h-7.8952v-18.447h7.1415q3.8426 0 5.56 1.1614 1.7298 1.1614 1.7298 3.719 0 1.3468-0.63013 2.2981-0.63013 0.93902-1.8286 1.3962z"/>
+ <path id="rect2-6-9" d="m29.013 15.874v-12.887h-26.025v12.887" fill="#f8ac4f" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <path id="path948" d="m13.165 5.1472-3.9746 10.727h4.6055l2.2109-6.4023 2.1992 6.4023h4.6035l-3.9746-10.727z"/>
+ <path id="path3715" d="m29.898 16h-27.797" fill="#f7941e" fill-opacity=".81569" fill-rule="evenodd" stroke="#00f" stroke-miterlimit="2" stroke-width="1.4"/>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-rb-channel.png b/silx/resources/gui/icons/compare-mode-rb-channel.png
new file mode 100644
index 0000000..689c8a6
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-rb-channel.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-rb-channel.svg b/silx/resources/gui/icons/compare-mode-rb-channel.svg
new file mode 100644
index 0000000..9bcadd7
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-rb-channel.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path id="path3034" transform="matrix(.94611 0 0 .94611 -3.5575 -5.4879)" d="m28.339 22.712c0 7.7507-5.069 14.034-11.322 14.034s-11.322-6.2832-11.322-14.034c0-7.7507 5.069-14.034 11.322-14.034s11.322 6.2832 11.322 14.034z" color="#000000" fill="#ff8000" stroke-width="1.057"/>
+ <path id="path3034-3" transform="matrix(.94611 0 0 .94611 3.3578 -5.4879)" d="m28.339 22.712c0 7.7507-5.069 14.034-11.322 14.034s-11.322-6.2832-11.322-14.034c0-7.7507 5.069-14.034 11.322-14.034s11.322 6.2832 11.322 14.034z" color="#000000" fill="#0080ff"/>
+ <path id="path3034-6" d="m16 3.4375c-4.216 1.7849-7.25 6.7321-7.25 12.562s3.034 10.778 7.25 12.562c4.216-1.7849 7.25-6.7321 7.25-12.562s-3.034-10.778-7.25-12.562z" color="#000000" fill="#808080"/>
+ <text id="text4553-1-3" x="17.196516" y="20.749096" fill="#000000" font-family="Scriptina" font-size="13.029px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7-6" x="17.196516" y="20.749096" fill="#000000" font-family="sans-serif" font-weight="bold">B</tspan></text>
+ <text id="text4553-7" x="6.0431499" y="20.749096" fill="#000000" font-family="Scriptina" font-size="13.029px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-5" x="6.0431499" y="20.749096" fill="#000000" font-family="sans-serif" font-weight="bold">A</tspan></text>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-rbneg-channel.png b/silx/resources/gui/icons/compare-mode-rbneg-channel.png
new file mode 100644
index 0000000..53b339f
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-rbneg-channel.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-rbneg-channel.svg b/silx/resources/gui/icons/compare-mode-rbneg-channel.svg
new file mode 100644
index 0000000..8c23e65
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-rbneg-channel.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path id="path3034" transform="matrix(.94611 0 0 .94611 -3.5575 -5.4879)" d="m28.339 22.712c0 7.7507-5.069 14.034-11.322 14.034s-11.322-6.2832-11.322-14.034c0-7.7507 5.069-14.034 11.322-14.034s11.322 6.2832 11.322 14.034z" color="#000000" fill="#ff8000"/>
+ <path id="path3034-3" transform="matrix(.94611 0 0 .94611 3.3578 -5.4879)" d="m28.339 22.712c0 7.7507-5.069 14.034-11.322 14.034s-11.322-6.2832-11.322-14.034c0-7.7507 5.069-14.034 11.322-14.034s11.322 6.2832 11.322 14.034z" color="#000000" fill="#0080ff"/>
+ <path id="path3034-6" d="m16 3.4375c-4.216 1.7849-7.25 6.7321-7.25 12.562s3.034 10.778 7.25 12.562c4.216-1.7849 7.25-6.7321 7.25-12.562s-3.034-10.778-7.25-12.562z" color="#000000" fill="#808080"/>
+ <text id="text4553-1-3" x="17.196516" y="20.749096" fill="#ffffff" font-family="Scriptina" font-size="13.029px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-7-6" x="17.196516" y="20.749096" fill="#ffffff" font-family="sans-serif" font-weight="bold">B</tspan></text>
+ <text id="text4553-7" x="6.0431499" y="20.749096" fill="#ffffff" font-family="Scriptina" font-size="13.029px" letter-spacing="0px" word-spacing="0px" style="line-height:125%" xml:space="preserve"><tspan id="tspan4551-5" x="6.0431499" y="20.749096" fill="#ffffff" font-family="sans-serif" font-weight="bold">A</tspan></text>
+</svg>
diff --git a/silx/resources/gui/icons/compare-mode-vline.png b/silx/resources/gui/icons/compare-mode-vline.png
new file mode 100644
index 0000000..fe12d9d
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-vline.png
Binary files differ
diff --git a/silx/resources/gui/icons/compare-mode-vline.svg b/silx/resources/gui/icons/compare-mode-vline.svg
new file mode 100644
index 0000000..06d74b3
--- /dev/null
+++ b/silx/resources/gui/icons/compare-mode-vline.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg4" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata id="metadata10">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path id="rect2-6-4" d="m2.987 2.987h26.026v26.026h-26.026z" fill="#d5fa58" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <path id="path825" d="m17.932 13.918q1.1244 0 1.7051-0.49422t0.58071-1.458q0-0.95137-0.58071-1.4456-0.58071-0.50658-1.7051-0.50658h-2.6317v3.9043zm0.16062 8.0681q1.4332 0 2.1499-0.60542 0.72898-0.60542 0.72898-1.8286 0-1.1985-0.71662-1.7915-0.71662-0.60542-2.1622-0.60542h-2.7923v4.831zm4.4233-6.6349q1.5321 0.4448 2.3723 1.6433t0.84017 2.9406q0 2.6688-1.8039 3.9785t-5.4858 1.3097h-7.8952v-18.447h7.1415q3.8426 0 5.56 1.1614 1.7298 1.1614 1.7298 3.719 0 1.3468-0.63013 2.2981-0.63013 0.93902-1.8286 1.3962z"/>
+ <path id="rect2-6-5" d="m16.665 2.987h-13.678v26.025h13.678" fill="#f8ac4f" stroke="#000" stroke-miterlimit="2" stroke-width="1.4"/>
+ <path id="path11006" d="m11.231 6.7761-6.832 18.447h4.7813l1.1738-3.3613h6.3105v-15.086z"/>
+ <path id="path11011" d="m11.54 18.44h4.6005v-1.3189l-2.0676-6.0203z" fill="#f9a847"/>
+ <path id="path3715" d="m16 2.1017v27.797" fill="#f7941e" fill-opacity=".81569" fill-rule="evenodd" stroke="#00f" stroke-miterlimit="2" stroke-width="1.4"/>
+</svg>
diff --git a/silx/resources/gui/icons/math-mean.png b/silx/resources/gui/icons/math-mean.png
new file mode 100644
index 0000000..fb4a210
--- /dev/null
+++ b/silx/resources/gui/icons/math-mean.png
Binary files differ
diff --git a/silx/resources/gui/icons/math-mean.svg b/silx/resources/gui/icons/math-mean.svg
new file mode 100644
index 0000000..f6b121d
--- /dev/null
+++ b/silx/resources/gui/icons/math-mean.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="svg2" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata39"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><linearGradient id="a" x1="7" x2="26.5" y1="16.334" y2="16.334" gradientUnits="userSpaceOnUse"><stop id="stop5" stop-color="#fff" offset="0"/><stop id="stop7" stop-color="#fdfdfd" stop-opacity=".9623" offset=".3769"/><stop id="stop9" stop-color="#f6f6f6" stop-opacity=".9487" offset=".5127"/><stop id="stop11" stop-color="#ebebeb" stop-opacity=".9391" offset=".6094"/><stop id="stop13" stop-color="#dadada" stop-opacity=".9312" offset=".6877"/><stop id="stop15" stop-color="#c4c4c4" stop-opacity=".9245" offset=".7548"/><stop id="stop17" stop-color="#a8a8a8" stop-opacity=".9186" offset=".8142"/><stop id="stop19" stop-color="#888" stop-opacity=".9132" offset=".8679"/><stop id="stop21" stop-color="#626262" stop-opacity=".9083" offset=".9172"/><stop id="stop23" stop-color="#393939" stop-opacity=".9039" offset=".9612"/><stop id="stop25" stop-color="#0e0e0e" stop-opacity=".9" offset="1"/></linearGradient><rect id="rect27" x="7.5" y="7.084" width="18.5" height="18.499" fill="none" stroke="url(#a)" stroke-miterlimit="10"/><line id="line29" x1="13.63" x2="2.9567" y1="2.3675" y2="2.3675" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.1805"/><polyline id="polyline31" transform="matrix(.80328 0 0 .75496 -1.9272 -2.9807)" points="7.3 7.418 14.349 14.71 7.3 25.159" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.8"/><line id="line33" x1="3.0418" x2="13.715" y1="16.333" y2="16.333" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.1805"/><line id="line33-6" x1="20.761" x2="20.691" y1="17.987" y2="28.722" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.6702"/><line id="line33-6-7" x1="20.154" x2="28.809" y1="19.095" y2="27.754" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.8577"/><line id="line33-6-5" x1="29.13" x2="29.446" y1="17.877" y2="29.091" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2.7298"/><line id="line33-6-3" x1="27.823" x2="8.2448" y1="4.4883" y2="28.596" fill="none" stroke="#f7941e" stroke-miterlimit="10" stroke-width="2"/></svg>
diff --git a/silx/resources/opencl/bitonic.cl b/silx/resources/opencl/bitonic.cl
index f1cb55c..4096ce8 100644
--- a/silx/resources/opencl/bitonic.cl
+++ b/silx/resources/opencl/bitonic.cl
@@ -45,39 +45,40 @@
// The _FILE extension correspond to the formula found in the "OpenCL in Action" supplementary files
-#define VECTOR_SORT_FILE(input, dir) \
- comp = (input < shuffle(input, mask2)) ^ dir; \
- input = shuffle(input, as_uint4(comp * 2 + add2)); \
- comp = (input < shuffle(input, mask1)) ^ dir; \
- input = shuffle(input, as_uint4(comp + add1)); \
+#define VECTOR_SORT_FILE(input, dir)\
+ comp = (input < shuffle(input, mask2)) ^ dir;\
+ input = shuffle(input, as_uint4(comp * 2 + add2));\
+ comp = (input < shuffle(input, mask1)) ^ dir;\
+ input = shuffle(input, as_uint4(comp + add1));\
-#define VECTOR_SWAP_FILE(input1, input2, dir) \
- temp = input1; \
- comp = ((input1 < input2) ^ dir) * 4 + add3; \
- input1 = shuffle2(input1, input2, as_uint4(comp)); \
- input2 = shuffle2(input2, temp, as_uint4(comp)); \
+#define VECTOR_SWAP_FILE(input1, input2, dir)\
+ temp = input1;\
+ comp = ((input1 < input2) ^ dir) * 4 + add3;\
+ input1 = shuffle2(input1, input2, as_uint4(comp));\
+ input2 = shuffle2(input2, temp, as_uint4(comp));\
// Functions to be called from an actual kernel.
static float8 my_sort_file(uint local_id, uint group_id, uint local_size,
- float8 input, __local float4 *l_data){
+ float8 input, local float4 *l_data)
+{
float4 input1, input2, temp;
float8 output;
- int dir;
- uint id, size, stride;
- int4 comp;
+ int dir;
+ uint id, size, stride;
+ int4 comp;
- uint4 mask1 = (uint4)(1, 0, 3, 2);
- uint4 mask2 = (uint4)(2, 3, 0, 1);
- uint4 mask3 = (uint4)(3, 2, 1, 0);
+ uint4 mask1 = (uint4)(1, 0, 3, 2);
+ uint4 mask2 = (uint4)(2, 3, 0, 1);
+ uint4 mask3 = (uint4)(3, 2, 1, 0);
- int4 add1 = (int4)(1, 1, 3, 3);
- int4 add2 = (int4)(2, 3, 2, 3);
- int4 add3 = (int4)(1, 2, 2, 3);
+ int4 add1 = (int4)(1, 1, 3, 3);
+ int4 add2 = (int4)(2, 3, 2, 3);
+ int4 add3 = (int4)(1, 2, 2, 3);
// retrieve input data
input1 = (float4)(input.s0, input.s1, input.s2, input.s3);
@@ -86,86 +87,91 @@ static float8 my_sort_file(uint local_id, uint group_id, uint local_size,
// Find global address
id = local_id * 2;
- /* Sort input 1 - ascending */
- comp = input1 < shuffle(input1, mask1);
- input1 = shuffle(input1, as_uint4(comp + add1));
- comp = input1 < shuffle(input1, mask2);
- input1 = shuffle(input1, as_uint4(comp * 2 + add2));
- comp = input1 < shuffle(input1, mask3);
- input1 = shuffle(input1, as_uint4(comp + add3));
-
- /* Sort input 2 - descending */
- comp = input2 > shuffle(input2, mask1);
- input2 = shuffle(input2, as_uint4(comp + add1));
- comp = input2 > shuffle(input2, mask2);
- input2 = shuffle(input2, as_uint4(comp * 2 + add2));
- comp = input2 > shuffle(input2, mask3);
- input2 = shuffle(input2, as_uint4(comp + add3));
-
- /* Swap corresponding elements of input 1 and 2 */
- add3 = (int4)(4, 5, 6, 7);
- dir = - (int) (local_id % 2);
- temp = input1;
- comp = ((input1 < input2) ^ dir) * 4 + add3;
- input1 = shuffle2(input1, input2, as_uint4(comp));
- input2 = shuffle2(input2, temp, as_uint4(comp));
-
- /* Sort data and store in local memory */
- VECTOR_SORT_FILE(input1, dir);
- VECTOR_SORT_FILE(input2, dir);
- l_data[id] = input1;
- l_data[id+1] = input2;
-
- /* Create bitonic set */
- for(size = 2; size < local_size; size <<= 1) {
- dir = - (int) (local_id/size & 1) ;
-
- for(stride = size; stride > 1; stride >>= 1) {
- barrier(CLK_LOCAL_MEM_FENCE);
- id = local_id + (local_id/stride)*stride;
- VECTOR_SWAP_FILE(l_data[id], l_data[id + stride], dir)
- }
-
- barrier(CLK_LOCAL_MEM_FENCE);
- id = local_id * 2;
- input1 = l_data[id];
- input2 = l_data[id+1];
- temp = input1;
- comp = ((input1 < input2) ^ dir) * 4 + add3;
- input1 = shuffle2(input1, input2, as_uint4(comp));
- input2 = shuffle2(input2, temp, as_uint4(comp));
- VECTOR_SORT_FILE(input1, dir);
- VECTOR_SORT_FILE(input2, dir);
- l_data[id] = input1;
- l_data[id+1] = input2;
- }
-
- /* Perform bitonic merge */
- dir = - (int) (group_id % 2);
- for(stride = local_size; stride > 1; stride >>= 1) {
- barrier(CLK_LOCAL_MEM_FENCE);
- id = local_id + (local_id/stride)*stride;
- VECTOR_SWAP_FILE(l_data[id], l_data[id + stride], dir)
- }
- barrier(CLK_LOCAL_MEM_FENCE);
-
- /* Perform final sort */
- id = local_id * 2;
- input1 = l_data[id]; input2 = l_data[id+1];
- temp = input1;
- comp = ((input1 < input2) ^ dir) * 4 + add3;
- input1 = shuffle2(input1, input2, as_uint4(comp));
- input2 = shuffle2(input2, temp, as_uint4(comp));
- VECTOR_SORT_FILE(input1, dir);
- VECTOR_SORT_FILE(input2, dir);
-
- // setup output and return it
- output = (float8)(input1, input2);
- return output;
+ /* Sort input 1 - ascending */
+ comp = input1 < shuffle(input1, mask1);
+ input1 = shuffle(input1, as_uint4(comp + add1));
+ comp = input1 < shuffle(input1, mask2);
+ input1 = shuffle(input1, as_uint4(comp * 2 + add2));
+ comp = input1 < shuffle(input1, mask3);
+ input1 = shuffle(input1, as_uint4(comp + add3));
+
+ /* Sort input 2 - descending */
+ comp = input2 > shuffle(input2, mask1);
+ input2 = shuffle(input2, as_uint4(comp + add1));
+ comp = input2 > shuffle(input2, mask2);
+ input2 = shuffle(input2, as_uint4(comp * 2 + add2));
+ comp = input2 > shuffle(input2, mask3);
+ input2 = shuffle(input2, as_uint4(comp + add3));
+
+ /* Swap corresponding elements of input 1 and 2 */
+ add3 = (int4)(4, 5, 6, 7);
+ dir = - (int) (local_id % 2);
+ temp = input1;
+ comp = ((input1 < input2) ^ dir) * 4 + add3;
+ input1 = shuffle2(input1, input2, as_uint4(comp));
+ input2 = shuffle2(input2, temp, as_uint4(comp));
+
+ /* Sort data and store in local memory */
+ VECTOR_SORT_FILE(input1, dir);
+ VECTOR_SORT_FILE(input2, dir);
+ l_data[id] = input1;
+ l_data[id+1] = input2;
+ barrier(CLK_LOCAL_MEM_FENCE);
+
+ /* Create bitonic set */
+ for(size = 2; size < local_size; size <<= 1) {
+ dir = - (int) (local_id/size & 1) ;
+
+ for(stride = size; stride > 1; stride >>= 1) {
+ barrier(CLK_LOCAL_MEM_FENCE);
+ id = local_id + (local_id/stride)*stride;
+ VECTOR_SWAP_FILE(l_data[id], l_data[id + stride], dir)
+ }
+
+ barrier(CLK_LOCAL_MEM_FENCE);
+ id = local_id * 2;
+ input1 = l_data[id];
+ input2 = l_data[id+1];
+ temp = input1;
+ comp = ((input1 < input2) ^ dir) * 4 + add3;
+ input1 = shuffle2(input1, input2, as_uint4(comp));
+ input2 = shuffle2(input2, temp, as_uint4(comp));
+ VECTOR_SORT_FILE(input1, dir);
+ VECTOR_SORT_FILE(input2, dir);
+ l_data[id] = input1;
+ l_data[id+1] = input2;
+ barrier(CLK_LOCAL_MEM_FENCE);
+ }
+
+ /* Perform bitonic merge */
+ dir = - (int) (group_id % 2);
+ for(stride = local_size; stride > 1; stride >>= 1)
+ {
+ barrier(CLK_LOCAL_MEM_FENCE);
+ id = local_id + (local_id/stride)*stride;
+ VECTOR_SWAP_FILE(l_data[id], l_data[id + stride], dir)
+ }
+ barrier(CLK_LOCAL_MEM_FENCE);
+
+ /* Perform final sort */
+ id = local_id * 2;
+ input1 = l_data[id];
+ input2 = l_data[id+1];
+ temp = input1;
+ comp = ((input1 < input2) ^ dir) * 4 + add3;
+ input1 = shuffle2(input1, input2, as_uint4(comp));
+ input2 = shuffle2(input2, temp, as_uint4(comp));
+ VECTOR_SORT_FILE(input1, dir);
+ VECTOR_SORT_FILE(input2, dir);
+
+ // setup output and return it
+ output = (float8)(input1, input2);
+ return output;
}
static float8 my_sort_book(uint local_id, uint group_id, uint local_size,
- float8 input, __local float4 *l_data){
+ float8 input, local float4 *l_data)
+{
float4 input1, input2, temp;
float8 output;
uint4 comp, swap, mask1, mask2, add1, add2, add3;
@@ -213,11 +219,13 @@ static float8 my_sort_book(uint local_id, uint group_id, uint local_size,
l_data[id+1] = input2;
// Perform upper stages
- for(size = 2; size < local_size; size <<= 1) {
+ for(size = 2; size < local_size; size <<= 1)
+ {
dir = local_id/size & 1;
//Perform lower stages
- for(stride = size; stride > 1; stride >>= 1) {
+ for(stride = size; stride > 1; stride >>= 1)
+ {
barrier(CLK_LOCAL_MEM_FENCE);
id = local_id + (local_id/stride)*stride;
VECTOR_SWAP_BOOK(l_data[id], l_data[id + stride], dir)
@@ -239,7 +247,8 @@ static float8 my_sort_book(uint local_id, uint group_id, uint local_size,
dir = group_id % 2;
// Perform bitonic merge
- for(stride = local_size; stride > 1; stride >>= 1) {
+ for(stride = local_size; stride > 1; stride >>= 1)
+ {
barrier(CLK_LOCAL_MEM_FENCE);
id = local_id + (local_id/stride)*stride;
VECTOR_SWAP_BOOK(l_data[id], l_data[id + stride], dir)
@@ -269,8 +278,9 @@ static float8 my_sort_book(uint local_id, uint group_id, uint local_size,
// Perform the sort on the whole array
// dim0: wg=number_of_element/8
-__kernel void bsort_all(__global float4 *g_data,
- __local float4 *l_data) {
+kernel void bsort_all(global float4 *g_data,
+ local float4 *l_data)
+{
float4 input1, input2;
float8 input, output;
uint id, global_start;
@@ -293,8 +303,9 @@ __kernel void bsort_all(__global float4 *g_data,
// Perform the sort along the horizontal axis of a 2D image
// dim0 = y: wg=1
// dim1 = x: wg=number_of_element/8
-__kernel void bsort_horizontal(__global float *g_data,
- __local float4 *l_data) {
+kernel void bsort_horizontal(global float *g_data,
+ local float4 *l_data)
+{
float8 input, output;
uint id, global_start, offset;
@@ -331,8 +342,9 @@ __kernel void bsort_horizontal(__global float *g_data,
// dim1 = x: wg=1
// check if transposing +bsort_horizontal is not more efficient ?
-__kernel void bsort_vertical(__global float *g_data,
- __local float4 *l_data) {
+kernel void bsort_vertical(global float *g_data,
+ local float4 *l_data)
+{
// we need to read 8 float position along the vertical axis
float8 input, output;
uint id, global_start, padding;
@@ -342,7 +354,7 @@ __kernel void bsort_vertical(__global float *g_data,
id = get_local_id(0) * 8 * padding + get_global_id(1);
global_start = get_group_id(0) * get_local_size(0) * 8 * padding + id;
- input = (float8)(g_data[global_start ],
+ input = (float8)(g_data[global_start ],
g_data[global_start + padding ],
g_data[global_start + 2*padding],
g_data[global_start + 3*padding],
@@ -365,8 +377,8 @@ __kernel void bsort_vertical(__global float *g_data,
//Tested working reference kernel frm the book. This only works under Linux
-__kernel void bsort_book(__global float4 *g_data,
- __local float4 *l_data) {
+kernel void bsort_book(global float4 *g_data,
+ local float4 *l_data) {
float4 input1, input2, temp;
uint4 comp, swap, mask1, mask2, add1, add2, add3;
uint id, dir, global_start, size, stride;
@@ -459,7 +471,7 @@ __kernel void bsort_book(__global float4 *g_data,
//Tested working reference kernel from the addition files. This only works under any operating system
/* Perform initial sort */
-__kernel void bsort_file(__global float4 *g_data, __local float4 *l_data) {
+kernel void bsort_file(global float4 *g_data, local float4 *l_data) {
int dir;
uint id, global_start, size, stride;
diff --git a/silx/resources/opencl/linalg.cl b/silx/resources/opencl/linalg.cl
index 82a76eb..8710528 100644
--- a/silx/resources/opencl/linalg.cl
+++ b/silx/resources/opencl/linalg.cl
@@ -33,25 +33,25 @@
* sizeY: number of rows of the image
*
**/
-__kernel void kern_gradient2D(
- __global float* slice,
- __global float2* slice_grad,
+kernel void kern_gradient2D(
+ global float* slice,
+ global float2* slice_grad,
int sizeX,
int sizeY)
{
- uint gidx = get_global_id(0);
- uint gidy = get_global_id(1);
- float val_x = 0, val_y = 0;
+ int gidx = (int) get_global_id(0);
+ int gidy = (int) get_global_id(1);
- if (gidx < sizeX && gidy < sizeY) {
- if (gidx == sizeX-1) val_y = 0;
- else val_y = slice[(gidy)*sizeX+gidx+1] - slice[(gidy)*sizeX+gidx];
- if (gidy == sizeY-1) val_x = 0;
- else val_x = slice[(gidy+1)*sizeX+gidx] - slice[(gidy)*sizeX+gidx];
+ if ((gidx < sizeX) && (gidy < sizeY))
+ {
+ // Note the direction inconstancy ! (JK 07/2018)
- slice_grad[(gidy)*sizeX+gidx].x = val_x;
- slice_grad[(gidy)*sizeX+gidx].y = val_y;
+ float val_y = (gidx == (sizeX-1))? 0: slice[gidy*sizeX+gidx+1] - slice[gidy*sizeX+gidx];
+ float val_x = (gidy == (sizeY-1))? 0: slice[(gidy+1)*sizeX+gidx] - slice[(gidy)*sizeX+gidx];
+
+ slice_grad[gidy*sizeX+gidx].x = val_x;
+ slice_grad[gidy*sizeX+gidx].y = val_y;
}
}
@@ -65,25 +65,24 @@ __kernel void kern_gradient2D(
* sizeY: number of rows of the input
*
**/
-__kernel void kern_divergence2D(
- __global float2* slice_grad,
- __global float* slice,
+kernel void kern_divergence2D(
+ global float2* slice_grad,
+ global float* slice,
int sizeX,
int sizeY)
{
- uint gidx = get_global_id(0);
- uint gidy = get_global_id(1);
- float val_x = 0, val_y = 0;
+ int gidx = (int) get_global_id(0);
+ int gidy = (int) get_global_id(1);
- if (gidx < sizeX && gidy < sizeY) {
- if (gidx == 0) val_y = slice_grad[(gidy)*sizeX+gidx].y;
- else val_y = slice_grad[(gidy)*sizeX+gidx].y - slice_grad[(gidy)*sizeX+gidx-1].y;
- if (gidy == 0) val_x = slice_grad[(gidy)*sizeX+gidx].x;
- else val_x = slice_grad[(gidy)*sizeX+gidx].x - slice_grad[(gidy-1)*sizeX+gidx].x;
- slice[(gidy)*sizeX+gidx] = val_x + val_y;
+ if (gidx < sizeX && gidy < sizeY)
+ {
+ float val_x, val_y;
+ val_y = (gidx == 0)?
+ slice_grad[(gidy)*sizeX+gidx].y :
+ slice_grad[(gidy)*sizeX+gidx].y - slice_grad[(gidy)*sizeX+gidx-1].y;
+ val_x = (gidy == 0)?
+ slice_grad[(gidy)*sizeX+gidx].x:
+ slice_grad[(gidy)*sizeX+gidx].x - slice_grad[(gidy-1)*sizeX+gidx].x;
+ slice[gidy*sizeX+gidx] = val_x + val_y;
}
}
-
-
-
-
diff --git a/silx/resources/opencl/medfilt.cl b/silx/resources/opencl/medfilt.cl
index f1e342b..0680230 100644
--- a/silx/resources/opencl/medfilt.cl
+++ b/silx/resources/opencl/medfilt.cl
@@ -64,7 +64,7 @@ __kernel void medfilt2d(__global float *image, // input image
int width) // Image size along dim2 (nb columns)
{
int threadid = get_local_id(0);
- int wg = get_local_size(0);
+ //int wg = get_local_size(0);
int x = get_global_id(1);
if (x < width)
diff --git a/silx/setup.py b/silx/setup.py
index 3b3cd4e..ac747a2 100644
--- a/silx/setup.py
+++ b/silx/setup.py
@@ -25,7 +25,7 @@
__authors__ = ["T. Vincent"]
__license__ = "MIT"
-__date__ = "30/03/2017"
+__date__ = "26/07/2018"
from numpy.distutils.misc_util import Configuration
@@ -44,6 +44,7 @@ def configuration(parent_package='', top_path=None):
config.add_subpackage('third_party')
config.add_subpackage('utils')
config.add_subpackage('app')
+ config.add_subpackage("examples", "../examples")
return config
diff --git a/silx/sx/test/test_sx.py b/silx/sx/test/test_sx.py
index 9de1f8b..d264779 100644
--- a/silx/sx/test/test_sx.py
+++ b/silx/sx/test/test_sx.py
@@ -24,7 +24,7 @@
# ###########################################################################*/
__authors__ = ["T. Vincent", "P. Knobel"]
__license__ = "MIT"
-__date__ = "24/04/2018"
+__date__ = "05/10/2018"
import logging
@@ -36,7 +36,7 @@ from silx.test.utils import test_options
from silx.gui import qt
# load TestCaseQt before sx
-from silx.gui.test.utils import TestCaseQt
+from silx.gui.utils.testutils import TestCaseQt
from silx.gui.colors import rgba
from silx import sx
@@ -204,7 +204,6 @@ class SXTest(TestCaseQt, ParametricTestCase):
isosurfaces = window.getIsosurfaces()
self.assertEqual(len(isosurfaces), 1)
- self._expose_and_close(window)
if not window.getPlot3DWidget().isValid():
self.skipTest("OpenGL context is not valid")
@@ -218,8 +217,6 @@ class SXTest(TestCaseQt, ParametricTestCase):
for iso, color in zip(isosurfaces, colors):
self.assertEqual(rgba(iso.getColor()), rgba(color))
- self._expose_and_close(window)
-
# by isolevel, single color
contours = 0.2, 0.5
window = sx.contour3d(data, copy=False, contours=contours,
@@ -232,8 +229,6 @@ class SXTest(TestCaseQt, ParametricTestCase):
self.assertEqual(rgba(iso.getColor()),
rgba('yellow'))
- self._expose_and_close(window)
-
# Single isolevel, colormap
window = sx.contour3d(data, copy=False, contours=0.5,
colormap='gray', vmin=0.6, opacity=0.4)
@@ -244,8 +239,6 @@ class SXTest(TestCaseQt, ParametricTestCase):
self.assertEqual(rgba(isosurfaces[0].getColor()),
(0., 0., 0., 0.4))
- self._expose_and_close(window)
-
@unittest.skipUnless(test_options.WITH_GL_TEST,
test_options.WITH_GL_TEST_REASON)
def test_points3d(self):
@@ -258,23 +251,19 @@ class SXTest(TestCaseQt, ParametricTestCase):
# 3D positions, no value
window = sx.points3d(x, y, z)
- self._expose_and_close(window)
if not window.getSceneWidget().isValid():
self.skipTest("OpenGL context is not valid")
# 3D positions, values
window = sx.points3d(x, y, z, values, mode='2dsquare',
colormap='magma', vmin=0.4, vmax=0.5)
- self._expose_and_close(window)
# 2D positions, no value
window = sx.points3d(x, y)
- self._expose_and_close(window)
# 2D positions, values
window = sx.points3d(x, y, values=values, mode=',',
colormap='magma', vmin=0.4, vmax=0.5)
- self._expose_and_close(window)
def suite():
diff --git a/silx/third_party/EdfFile.py b/silx/third_party/EdfFile.py
index b20e5bb..d06a211 100644
--- a/silx/third_party/EdfFile.py
+++ b/silx/third_party/EdfFile.py
@@ -434,7 +434,7 @@ class EdfFile(object):
self.Images[Index].DataType = 'UnsignedShort'
try:
self.__data = numpy.reshape(
- numpy.fromstring(binary, numpy.uint16),
+ numpy.copy(numpy.frombuffer(binary, numpy.uint16)),
(self.Images[Index].Dim2, self.Images[Index].Dim1))
except ValueError:
msg = 'Size spec in ADSC-header does not match size of image data field'
@@ -587,12 +587,12 @@ class EdfFile(object):
if self.Images[Index].NumDim == 3:
image = self.Images[Index]
sizeToRead = image.Dim1 * image.Dim2 * image.Dim3 * datasize
- Data = numpy.fromstring(self.File.read(sizeToRead), datatype)
+ Data = numpy.copy(numpy.frombuffer(self.File.read(sizeToRead), datatype))
Data = numpy.reshape(Data, (self.Images[Index].Dim3, self.Images[Index].Dim2, self.Images[Index].Dim1))
elif self.Images[Index].NumDim == 2:
image = self.Images[Index]
sizeToRead = image.Dim1 * image.Dim2 * datasize
- Data = numpy.fromstring(self.File.read(sizeToRead), datatype)
+ Data = numpy.copy(numpy.frombuffer(self.File.read(sizeToRead), datatype))
# print "datatype = ",datatype
# print "Data.type = ", Data.dtype.char
# print "self.Images[Index].DataType ", self.Images[Index].DataType
@@ -603,7 +603,7 @@ class EdfFile(object):
Data = numpy.reshape(Data, (self.Images[Index].Dim2, self.Images[Index].Dim1))
elif self.Images[Index].NumDim == 1:
sizeToRead = self.Images[Index].Dim1 * datasize
- Data = numpy.fromstring(self.File.read(sizeToRead), datatype)
+ Data = numpy.copy(numpy.frombuffer(self.File.read(sizeToRead), datatype))
elif self.ADSC or self.MARCCD or self.PILATUS_CBF or self.SPE:
return self.__data[Pos[1]:(Pos[1] + Size[1]),
Pos[0]:(Pos[0] + Size[0])]
@@ -628,7 +628,7 @@ class EdfFile(object):
if Size[0] == 0:
Size[0] = sizex - Pos[0]
self.File.seek((Pos[0] * size_pixel) + self.Images[Index].DataPosition, 0)
- Data = numpy.fromstring(self.File.read(Size[0] * size_pixel), type_)
+ Data = numpy.copy(numpy.frombuffer(self.File.read(Size[0] * size_pixel), type_))
elif self.Images[Index].NumDim == 2:
if Pos is None:
Pos = (0, 0)
@@ -646,7 +646,7 @@ class EdfFile(object):
dataindex = 0
for y in range(Pos[1], Pos[1] + Size[1]):
self.File.seek((((y * sizex) + Pos[0]) * size_pixel) + self.Images[Index].DataPosition, 0)
- line = numpy.fromstring(self.File.read(Size[0] * size_pixel), type_)
+ line = numpy.copy(numpy.frombuffer(self.File.read(Size[0] * size_pixel), type_))
Data[dataindex, :] = line[:]
# Data=numpy.concatenate((Data,line))
dataindex += 1
@@ -669,7 +669,7 @@ class EdfFile(object):
for z in range(Pos[2], Pos[2] + Size[2]):
for y in range(Pos[1], Pos[1] + Size[1]):
self.File.seek(((((z * sizey + y) * sizex) + Pos[0]) * size_pixel) + self.Images[Index].DataPosition, 0)
- line = numpy.fromstring(self.File.read(Size[0] * size_pixel), type_)
+ line = numpy.copy(numpy.frombuffer(self.File.read(Size[0] * size_pixel), type_))
Data = numpy.concatenate((Data, line))
Data = numpy.reshape(Data, (Size[2], Size[1], Size[0]))
@@ -698,7 +698,9 @@ class EdfFile(object):
size_img = size_row * self.Images[Index].Dim2
offset = offset + (Position[2] * size_img)
self.File.seek(self.Images[Index].DataPosition + offset, 0)
- Data = numpy.fromstring(self.File.read(size_pixel), self.__GetDefaultNumpyType__(self.Images[Index].DataType, index=Index))
+ Data = numpy.copy(numpy.frombuffer(self.File.read(size_pixel),
+ self.__GetDefaultNumpyType__(self.Images[Index].DataType,
+ index=Index)))
if self.SysByteOrder.upper() != self.Images[Index].ByteOrder.upper():
Data = Data.byteswap()
Data = self.__SetDataType__(Data, "DoubleValue")
diff --git a/silx/third_party/TiffIO.py b/silx/third_party/TiffIO.py
index 156ae11..8768cff 100644
--- a/silx/third_party/TiffIO.py
+++ b/silx/third_party/TiffIO.py
@@ -653,9 +653,9 @@ class TiffIO(object):
fd.seek(stripOffsets[0] + rowMin * bytesPerRow)
nBytes = (rowMax-rowMin+1) * bytesPerRow
if self._swap:
- readout = numpy.fromstring(fd.read(nBytes), dtype).byteswap()
+ readout = numpy.copy(numpy.frombuffer(fd.read(nBytes), dtype)).byteswap()
else:
- readout = numpy.fromstring(fd.read(nBytes), dtype)
+ readout = numpy.copy(numpy.frombuffer(fd.read(nBytes), dtype))
if hasattr(nBits, 'index'):
readout.shape = -1, nColumns, len(nBits)
elif info['colormap'] is not None:
@@ -704,9 +704,9 @@ class TiffIO(object):
#if read -128 ignore the byte
continue
if self._swap:
- readout = numpy.fromstring(bufferBytes, dtype).byteswap()
+ readout = numpy.copy(numpy.frombuffer(bufferBytes, dtype)).byteswap()
else:
- readout = numpy.fromstring(bufferBytes, dtype)
+ readout = numpy.copy(numpy.frombuffer(bufferBytes, dtype))
if hasattr(nBits, 'index'):
readout.shape = -1, nColumns, len(nBits)
elif info['colormap'] is not None:
@@ -719,9 +719,9 @@ class TiffIO(object):
if 1:
#use numpy
if self._swap:
- readout = numpy.fromstring(fd.read(nBytes), dtype).byteswap()
+ readout = numpy.copy(numpy.frombuffer(fd.read(nBytes), dtype)).byteswap()
else:
- readout = numpy.fromstring(fd.read(nBytes), dtype)
+ readout = numpy.copy(numpy.frombuffer(fd.read(nBytes), dtype))
if hasattr(nBits, 'index'):
readout.shape = -1, nColumns, len(nBits)
elif colormap is not None:
diff --git a/silx/third_party/modest_image.py b/silx/third_party/modest_image.py
new file mode 100644
index 0000000..3a64d1a
--- /dev/null
+++ b/silx/third_party/modest_image.py
@@ -0,0 +1,322 @@
+"""
+Taken from https://github.com/ChrisBeaumont/mpl-modest-image,
+commit 0545d2c58970bed9ac366193eaf771cc3247d250
+
+Copyright (c) 2013 Chris Beaumont
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+Modification of Chris Beaumont's mpl-modest-image package to allow the use of
+set_extent.
+"""
+from __future__ import print_function, division
+
+import matplotlib
+rcParams = matplotlib.rcParams
+
+import matplotlib.image as mi
+import matplotlib.colors as mcolors
+import matplotlib.cbook as cbook
+from matplotlib.transforms import IdentityTransform, Affine2D
+
+import numpy as np
+
+IDENTITY_TRANSFORM = IdentityTransform()
+
+
+class ModestImage(mi.AxesImage):
+
+ """
+ Computationally modest image class.
+
+ ModestImage is an extension of the Matplotlib AxesImage class
+ better suited for the interactive display of larger images. Before
+ drawing, ModestImage resamples the data array based on the screen
+ resolution and view window. This has very little affect on the
+ appearance of the image, but can substantially cut down on
+ computation since calculations of unresolved or clipped pixels
+ are skipped.
+
+ The interface of ModestImage is the same as AxesImage. However, it
+ does not currently support setting the 'extent' property. There
+ may also be weird coordinate warping operations for images that
+ I'm not aware of. Don't expect those to work either.
+ """
+
+ def __init__(self, *args, **kwargs):
+ self._full_res = None
+ self._full_extent = kwargs.get('extent', None)
+ super(ModestImage, self).__init__(*args, **kwargs)
+ self.invalidate_cache()
+
+ def set_data(self, A):
+ """
+ Set the image array
+
+ ACCEPTS: numpy/PIL Image A
+ """
+ self._full_res = A
+ self._A = A
+
+ if self._A.dtype != np.uint8 and not np.can_cast(self._A.dtype,
+ np.float):
+ raise TypeError("Image data can not convert to float")
+
+ if (self._A.ndim not in (2, 3) or
+ (self._A.ndim == 3 and self._A.shape[-1] not in (3, 4))):
+ raise TypeError("Invalid dimensions for image data")
+
+ self.invalidate_cache()
+
+ def invalidate_cache(self):
+ self._bounds = None
+ self._imcache = None
+ self._rgbacache = None
+ self._oldxslice = None
+ self._oldyslice = None
+ self._sx, self._sy = None, None
+ self._pixel2world_cache = None
+ self._world2pixel_cache = None
+
+ def set_extent(self, extent):
+ self._full_extent = extent
+ self.invalidate_cache()
+ mi.AxesImage.set_extent(self, extent)
+
+ def get_array(self):
+ """Override to return the full-resolution array"""
+ return self._full_res
+
+ @property
+ def _pixel2world(self):
+
+ if self._pixel2world_cache is None:
+
+ # Pre-compute affine transforms to convert between the 'world'
+ # coordinates of the axes (what is shown by the axis labels) to
+ # 'pixel' coordinates in the underlying array.
+
+ extent = self._full_extent
+
+ if extent is None:
+
+ self._pixel2world_cache = IDENTITY_TRANSFORM
+
+ else:
+
+ self._pixel2world_cache = Affine2D()
+
+ self._pixel2world.translate(+0.5, +0.5)
+
+ self._pixel2world.scale((extent[1] - extent[0]) / self._full_res.shape[1],
+ (extent[3] - extent[2]) / self._full_res.shape[0])
+
+ self._pixel2world.translate(extent[0], extent[2])
+
+ self._world2pixel_cache = None
+
+ return self._pixel2world_cache
+
+ @property
+ def _world2pixel(self):
+ if self._world2pixel_cache is None:
+ self._world2pixel_cache = self._pixel2world.inverted()
+ return self._world2pixel_cache
+
+ def _scale_to_res(self):
+ """
+ Change self._A and _extent to render an image whose resolution is
+ matched to the eventual rendering.
+ """
+
+ # Find out how we need to slice the array to make sure we match the
+ # resolution of the display. We pass self._world2pixel which matters
+ # for cases where the extent has been set.
+ x0, x1, sx, y0, y1, sy = extract_matched_slices(axes=self.axes,
+ shape=self._full_res.shape,
+ transform=self._world2pixel)
+
+ # Check whether we've already calculated what we need, and if so just
+ # return without doing anything further.
+ if (self._bounds is not None and
+ sx >= self._sx and sy >= self._sy and
+ x0 >= self._bounds[0] and x1 <= self._bounds[1] and
+ y0 >= self._bounds[2] and y1 <= self._bounds[3]):
+ return
+
+ # Slice the array using the slices determined previously to optimally
+ # match the display
+ self._A = self._full_res[y0:y1:sy, x0:x1:sx]
+ self._A = cbook.safe_masked_invalid(self._A)
+
+ # We now determine the extent of the subset of the image, by determining
+ # it first in pixel space, and converting it to the 'world' coordinates.
+
+ # See https://github.com/matplotlib/matplotlib/issues/8693 for a
+ # demonstration of why origin='upper' and extent=None needs to be
+ # special-cased.
+
+ if self.origin == 'upper' and self._full_extent is None:
+ xmin, xmax, ymin, ymax = x0 - .5, x1 - .5, y1 - .5, y0 - .5
+ else:
+ xmin, xmax, ymin, ymax = x0 - .5, x1 - .5, y0 - .5, y1 - .5
+
+ xmin, ymin, xmax, ymax = self._pixel2world.transform([(xmin, ymin), (xmax, ymax)]).ravel()
+
+ mi.AxesImage.set_extent(self, [xmin, xmax, ymin, ymax])
+ # self.set_extent([xmin, xmax, ymin, ymax])
+
+ # Finally, we cache the current settings to avoid re-computing similar
+ # arrays in future.
+ self._sx = sx
+ self._sy = sy
+ self._bounds = (x0, x1, y0, y1)
+
+ self.changed()
+
+ def draw(self, renderer, *args, **kwargs):
+ if self._full_res.shape is None:
+ return
+ self._scale_to_res()
+ super(ModestImage, self).draw(renderer, *args, **kwargs)
+
+
+def main():
+ from time import time
+ import matplotlib.pyplot as plt
+ x, y = np.mgrid[0:2000, 0:2000]
+ data = np.sin(x / 10.) * np.cos(y / 30.)
+
+ f = plt.figure()
+ ax = f.add_subplot(111)
+
+ # try switching between
+ artist = ModestImage(ax, data=data)
+
+ ax.set_aspect('equal')
+ artist.norm.vmin = -1
+ artist.norm.vmax = 1
+
+ ax.add_artist(artist)
+
+ t0 = time()
+ plt.gcf().canvas.draw()
+ t1 = time()
+
+ print("Draw time for %s: %0.1f ms" % (artist.__class__.__name__,
+ (t1 - t0) * 1000))
+
+ plt.show()
+
+
+def imshow(axes, X, cmap=None, norm=None, aspect=None,
+ interpolation=None, alpha=None, vmin=None, vmax=None,
+ origin=None, extent=None, shape=None, filternorm=1,
+ filterrad=4.0, imlim=None, resample=None, url=None, **kwargs):
+ """Similar to matplotlib's imshow command, but produces a ModestImage
+
+ Unlike matplotlib version, must explicitly specify axes
+ """
+ if not axes._hold:
+ axes.cla()
+ if norm is not None:
+ assert(isinstance(norm, mcolors.Normalize))
+ if aspect is None:
+ aspect = rcParams['image.aspect']
+ axes.set_aspect(aspect)
+ im = ModestImage(axes, cmap=cmap, norm=norm, interpolation=interpolation,
+ origin=origin, extent=extent, filternorm=filternorm,
+ filterrad=filterrad, resample=resample, **kwargs)
+
+ im.set_data(X)
+ im.set_alpha(alpha)
+ axes._set_artist_props(im)
+
+ if im.get_clip_path() is None:
+ # image does not already have clipping set, clip to axes patch
+ im.set_clip_path(axes.patch)
+
+ # if norm is None and shape is None:
+ # im.set_clim(vmin, vmax)
+ if vmin is not None or vmax is not None:
+ im.set_clim(vmin, vmax)
+ elif norm is None:
+ im.autoscale_None()
+
+ im.set_url(url)
+
+ # update ax.dataLim, and, if autoscaling, set viewLim
+ # to tightly fit the image, regardless of dataLim.
+ im.set_extent(im.get_extent())
+
+ axes.images.append(im)
+ im._remove_method = lambda h: axes.images.remove(h)
+
+ return im
+
+
+def extract_matched_slices(axes=None, shape=None, extent=None,
+ transform=IDENTITY_TRANSFORM):
+ """Determine the slice parameters to use, matched to the screen.
+
+ :param ax: Axes object to query. It's extent and pixel size
+ determine the slice parameters
+
+ :param shape: Tuple of the full image shape to slice into. Upper
+ boundaries for slices will be cropped to fit within
+ this shape.
+
+ :rtype: tulpe of x0, x1, sx, y0, y1, sy
+
+ Indexing the full resolution array as array[y0:y1:sy, x0:x1:sx] returns
+ a view well-matched to the axes' resolution and extent
+ """
+
+ # Find extent in display pixels (this gives the resolution we need
+ # to sample the array to)
+ ext = (axes.transAxes.transform([(1, 1)]) - axes.transAxes.transform([(0, 0)]))[0]
+
+ # Find the extent of the axes in 'world' coordinates
+ xlim, ylim = axes.get_xlim(), axes.get_ylim()
+
+ # Transform the limits to pixel coordinates
+ ind0 = transform.transform([min(xlim), min(ylim)])
+ ind1 = transform.transform([max(xlim), max(ylim)])
+
+ def _clip(val, lo, hi):
+ return int(max(min(val, hi), lo))
+
+ # Determine the range of pixels to extract from the array, including a 5
+ # pixel margin all around. We ensure that the shape of the resulting array
+ # will always be at least (1, 1) even if there is really no overlap, to
+ # avoid issues.
+ y0 = _clip(ind0[1] - 5, 0, shape[0] - 1)
+ y1 = _clip(ind1[1] + 5, 1, shape[0])
+ x0 = _clip(ind0[0] - 5, 0, shape[1] - 1)
+ x1 = _clip(ind1[0] + 5, 1, shape[1])
+
+ # Determine the strides that can be used when extracting the array
+ sy = int(max(1, min((y1 - y0) / 5., np.ceil(abs((ind1[1] - ind0[1]) / ext[1])))))
+ sx = int(max(1, min((x1 - x0) / 5., np.ceil(abs((ind1[0] - ind0[0]) / ext[0])))))
+
+ return x0, x1, sx, y0, y1, sy
+
+
+if __name__ == "__main__":
+ main()
diff --git a/silx/utils/launcher.py b/silx/utils/launcher.py
index 059e990..c46256a 100644
--- a/silx/utils/launcher.py
+++ b/silx/utils/launcher.py
@@ -83,12 +83,12 @@ class LauncherCommand(object):
else:
module = self.get_module()
if module is None:
- _logger.error("Imposible to load module name '%s'" % self.module_name)
+ _logger.error("Impossible to load module name '%s'" % self.module_name)
return None
# reach the 'main' function
if not hasattr(module, "main"):
- raise TypeError("Module excpect to have a 'main' function")
+ raise TypeError("Module expect to have a 'main' function")
else:
main = getattr(module, "main")
return main
diff --git a/silx/utils/number.py b/silx/utils/number.py
index e6a87e7..92e98fe 100644
--- a/silx/utils/number.py
+++ b/silx/utils/number.py
@@ -53,7 +53,7 @@ if _biggest_float is None:
_float_types = (numpy.float64, numpy.float32, numpy.float16)
-_parse_numeric_value = re.compile("^\s*[-+]?0*(\d+?)?(?:\.(\d+))?(?:[eE]([-+]?\d+))?\s*$")
+_parse_numeric_value = re.compile(r"^\s*[-+]?0*(\d+?)?(?:\.(\d+))?(?:[eE]([-+]?\d+))?\s*$")
def is_longdouble_64bits():
diff --git a/silx/utils/test/test_html.py b/silx/utils/test/test_html.py
index 2d0387b..4af8560 100644
--- a/silx/utils/test/test_html.py
+++ b/silx/utils/test/test_html.py
@@ -38,16 +38,16 @@ class TestHtml(unittest.TestCase):
def testLtGt(self):
result = html.escape("<html>'\"")
- self.assertEquals("&lt;html&gt;&apos;&quot;", result)
+ self.assertEqual("&lt;html&gt;&apos;&quot;", result)
def testLtAmpGt(self):
# '&' have to be escaped first
result = html.escape("<&>")
- self.assertEquals("&lt;&amp;&gt;", result)
+ self.assertEqual("&lt;&amp;&gt;", result)
def testNoQuotes(self):
result = html.escape("\"m&m's\"", quote=False)
- self.assertEquals("\"m&amp;m's\"", result)
+ self.assertEqual("\"m&amp;m's\"", result)
def suite():
diff --git a/silx/utils/test/test_launcher.py b/silx/utils/test/test_launcher.py
index 87b7158..c64ac9a 100644
--- a/silx/utils/test/test_launcher.py
+++ b/silx/utils/test/test_launcher.py
@@ -119,16 +119,16 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "foo", "param1", "param2"])
- self.assertEquals(status, 42)
- self.assertEquals(callback._execute_argv, ["prog foo", "param1", "param2"])
- self.assertEquals(callback._execute_count, 1)
+ self.assertEqual(status, 42)
+ self.assertEqual(callback._execute_argv, ["prog foo", "param1", "param2"])
+ self.assertEqual(callback._execute_count, 1)
def testAddCommand(self):
runner = launcher.Launcher(prog="prog")
module_name = "silx.utils.test.test_launcher_command"
runner.add_command("foo", module_name=module_name)
status = runner.execute(["prog", "foo"])
- self.assertEquals(status, 0)
+ self.assertEqual(status, 0)
def testCallHelpOnCommand(self):
callback = CallbackMock(result=42)
@@ -136,9 +136,9 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "--help", "foo"])
- self.assertEquals(status, 42)
- self.assertEquals(callback._execute_argv, ["prog foo", "--help"])
- self.assertEquals(callback._execute_count, 1)
+ self.assertEqual(status, 42)
+ self.assertEqual(callback._execute_argv, ["prog foo", "--help"])
+ self.assertEqual(callback._execute_count, 1)
def testCallHelpOnCommand2(self):
callback = CallbackMock(result=42)
@@ -146,9 +146,9 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "help", "foo"])
- self.assertEquals(status, 42)
- self.assertEquals(callback._execute_argv, ["prog foo", "--help"])
- self.assertEquals(callback._execute_count, 1)
+ self.assertEqual(status, 42)
+ self.assertEqual(callback._execute_argv, ["prog foo", "--help"])
+ self.assertEqual(callback._execute_count, 1)
def testCallHelpOnUnknownCommand(self):
callback = CallbackMock(result=42)
@@ -156,7 +156,7 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "help", "foo2"])
- self.assertEquals(status, -1)
+ self.assertEqual(status, -1)
def testNotAvailableCommand(self):
callback = CallbackMock(result=42)
@@ -164,8 +164,8 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "foo2", "param1", "param2"])
- self.assertEquals(status, -1)
- self.assertEquals(callback._execute_count, 0)
+ self.assertEqual(status, -1)
+ self.assertEqual(callback._execute_count, 0)
def testCallHelp(self):
callback = CallbackMock(result=42)
@@ -173,8 +173,8 @@ class TestLauncher(ParametricTestCase):
command = launcher.LauncherCommand("foo", function=callback)
runner.add_command(command=command)
status = runner.execute(["prog", "help"])
- self.assertEquals(status, 0)
- self.assertEquals(callback._execute_count, 0)
+ self.assertEqual(status, 0)
+ self.assertEqual(callback._execute_count, 0)
def testCommonCommands(self):
runner = launcher.Launcher()
@@ -188,7 +188,7 @@ class TestLauncher(ParametricTestCase):
for arguments in tests:
with self.subTest(args=tests):
status = runner.execute(arguments)
- self.assertEquals(status, 0)
+ self.assertEqual(status, 0)
def suite():
diff --git a/silx/utils/test/test_weakref.py b/silx/utils/test/test_weakref.py
index 7175863..16d3cf5 100644
--- a/silx/utils/test/test_weakref.py
+++ b/silx/utils/test/test_weakref.py
@@ -53,7 +53,7 @@ class TestWeakMethod(unittest.TestCase):
def testMethod(self):
dummy = Dummy()
callable_ = weakref.WeakMethod(dummy.inc)
- self.assertEquals(callable_()(10), 11)
+ self.assertEqual(callable_()(10), 11)
def testMethodWithDeadObject(self):
dummy = Dummy()
@@ -70,7 +70,7 @@ class TestWeakMethod(unittest.TestCase):
def testFunction(self):
callable_ = weakref.WeakMethod(dummy_inc)
- self.assertEquals(callable_()(10), 11)
+ self.assertEqual(callable_()(10), 11)
def testDeadFunction(self):
def inc(a):
@@ -82,7 +82,7 @@ class TestWeakMethod(unittest.TestCase):
def testLambda(self):
store = lambda a: a + 1 # noqa: E731
callable_ = weakref.WeakMethod(store)
- self.assertEquals(callable_()(10), 11)
+ self.assertEqual(callable_()(10), 11)
def testDeadLambda(self):
callable_ = weakref.WeakMethod(lambda a: a + 1)
@@ -97,7 +97,7 @@ class TestWeakMethod(unittest.TestCase):
dummy = Dummy()
callable_ = weakref.WeakMethod(dummy.inc, callback)
dummy = None
- self.assertEquals(self.__count, 1)
+ self.assertEqual(self.__count, 1)
def testCallbackOnDeadMethod(self):
self.__count = 0
@@ -109,7 +109,7 @@ class TestWeakMethod(unittest.TestCase):
dummy.inc2 = lambda self, a: a + 1
callable_ = weakref.WeakMethod(dummy.inc2, callback)
dummy.inc2 = None
- self.assertEquals(self.__count, 1)
+ self.assertEqual(self.__count, 1)
def testCallbackOnDeadFunction(self):
self.__count = 0
@@ -120,13 +120,13 @@ class TestWeakMethod(unittest.TestCase):
store = lambda a: a + 1 # noqa: E731
callable_ = weakref.WeakMethod(store, callback)
store = None
- self.assertEquals(self.__count, 1)
+ self.assertEqual(self.__count, 1)
def testEquals(self):
dummy = Dummy()
callable1 = weakref.WeakMethod(dummy.inc)
callable2 = weakref.WeakMethod(dummy.inc)
- self.assertEquals(callable1, callable2)
+ self.assertEqual(callable1, callable2)
def testInSet(self):
callable_set = set([])
@@ -140,7 +140,7 @@ class TestWeakMethod(unittest.TestCase):
dummy = Dummy()
callable_dict[weakref.WeakMethod(dummy.inc)] = 10
callable_ = weakref.WeakMethod(dummy.inc)
- self.assertEquals(callable_dict.get(callable_), 10)
+ self.assertEqual(callable_dict.get(callable_), 10)
class TestWeakMethodProxy(unittest.TestCase):
@@ -148,7 +148,7 @@ class TestWeakMethodProxy(unittest.TestCase):
def testMethod(self):
dummy = Dummy()
callable_ = weakref.WeakMethodProxy(dummy.inc)
- self.assertEquals(callable_(10), 11)
+ self.assertEqual(callable_(10), 11)
def testMethodWithDeadObject(self):
dummy = Dummy()
@@ -170,60 +170,60 @@ class TestWeakList(unittest.TestCase):
def testAppend(self):
obj = Dummy()
self.list.append(obj)
- self.assertEquals(len(self.list), 3)
+ self.assertEqual(len(self.list), 3)
obj = None
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def testRemove(self):
self.list.remove(self.object1)
- self.assertEquals(len(self.list), 1)
+ self.assertEqual(len(self.list), 1)
def testPop(self):
obj = self.list.pop(0)
self.assertIs(obj, self.object1)
- self.assertEquals(len(self.list), 1)
+ self.assertEqual(len(self.list), 1)
def testGetItem(self):
self.assertIs(self.object1, self.list[0])
def testGetItemSlice(self):
objects = self.list[:]
- self.assertEquals(len(objects), 2)
+ self.assertEqual(len(objects), 2)
self.assertIs(self.object1, objects[0])
self.assertIs(self.object2, objects[1])
def testIter(self):
obj_list = list(self.list)
- self.assertEquals(len(obj_list), 2)
+ self.assertEqual(len(obj_list), 2)
self.assertIs(self.object1, obj_list[0])
def testLen(self):
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def testSetItem(self):
obj = Dummy()
self.list[0] = obj
self.assertIsNot(self.object1, self.list[0])
obj = None
- self.assertEquals(len(self.list), 1)
+ self.assertEqual(len(self.list), 1)
def testSetItemSlice(self):
obj = Dummy()
self.list[:] = [obj, obj]
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
self.assertIs(obj, self.list[0])
self.assertIs(obj, self.list[1])
obj = None
- self.assertEquals(len(self.list), 0)
+ self.assertEqual(len(self.list), 0)
def testDelItem(self):
del self.list[0]
- self.assertEquals(len(self.list), 1)
+ self.assertEqual(len(self.list), 1)
self.assertIs(self.object2, self.list[0])
def testDelItemSlice(self):
del self.list[:]
- self.assertEquals(len(self.list), 0)
+ self.assertEqual(len(self.list), 0)
def testContains(self):
self.assertIn(self.object1, self.list)
@@ -232,76 +232,76 @@ class TestWeakList(unittest.TestCase):
others = [Dummy()]
l = self.list + others
self.assertIs(l[0], self.object1)
- self.assertEquals(len(l), 3)
+ self.assertEqual(len(l), 3)
others = None
- self.assertEquals(len(l), 2)
+ self.assertEqual(len(l), 2)
def testExtend(self):
others = [Dummy()]
self.list.extend(others)
self.assertIs(self.list[0], self.object1)
- self.assertEquals(len(self.list), 3)
+ self.assertEqual(len(self.list), 3)
others = None
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def testIadd(self):
others = [Dummy()]
self.list += others
self.assertIs(self.list[0], self.object1)
- self.assertEquals(len(self.list), 3)
+ self.assertEqual(len(self.list), 3)
others = None
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def testMul(self):
l = self.list * 2
self.assertIs(l[0], self.object1)
- self.assertEquals(len(l), 4)
+ self.assertEqual(len(l), 4)
self.object1 = None
- self.assertEquals(len(l), 2)
+ self.assertEqual(len(l), 2)
self.assertIs(l[0], self.object2)
self.assertIs(l[1], self.object2)
def testImul(self):
self.list *= 2
self.assertIs(self.list[0], self.object1)
- self.assertEquals(len(self.list), 4)
+ self.assertEqual(len(self.list), 4)
self.object1 = None
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
self.assertIs(self.list[0], self.object2)
self.assertIs(self.list[1], self.object2)
def testCount(self):
self.list.append(self.object2)
- self.assertEquals(self.list.count(self.object1), 1)
- self.assertEquals(self.list.count(self.object2), 2)
+ self.assertEqual(self.list.count(self.object1), 1)
+ self.assertEqual(self.list.count(self.object2), 2)
def testIndex(self):
- self.assertEquals(self.list.index(self.object1), 0)
- self.assertEquals(self.list.index(self.object2), 1)
+ self.assertEqual(self.list.index(self.object1), 0)
+ self.assertEqual(self.list.index(self.object2), 1)
def testInsert(self):
obj = Dummy()
self.list.insert(1, obj)
- self.assertEquals(len(self.list), 3)
+ self.assertEqual(len(self.list), 3)
self.assertIs(self.list[1], obj)
obj = None
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def testReverse(self):
self.list.reverse()
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
self.assertIs(self.list[0], self.object2)
self.assertIs(self.list[1], self.object1)
def testReverted(self):
new_list = reversed(self.list)
- self.assertEquals(len(new_list), 2)
+ self.assertEqual(len(new_list), 2)
self.assertIs(self.list[1], self.object2)
self.assertIs(self.list[0], self.object1)
self.assertIs(new_list[0], self.object2)
self.assertIs(new_list[1], self.object1)
self.object1 = None
- self.assertEquals(len(new_list), 1)
+ self.assertEqual(len(new_list), 1)
def testStr(self):
self.assertNotEquals(self.list.__str__(), "[]")
@@ -312,7 +312,7 @@ class TestWeakList(unittest.TestCase):
def testSort(self):
# only a coverage
self.list.sort()
- self.assertEquals(len(self.list), 2)
+ self.assertEqual(len(self.list), 2)
def suite():
diff --git a/version.py b/version.py
index e81753b..d1aff69 100644
--- a/version.py
+++ b/version.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2017 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -67,7 +67,7 @@ RELEASE_LEVEL_VALUE = {"dev": 0,
"final": 15}
MAJOR = 0
-MINOR = 8
+MINOR = 9
MICRO = 0
RELEV = "final" # <16
SERIAL = 0 # <16