From c0dd00615ae107a53a93c84ff514795b5d03c1c3 Mon Sep 17 00:00:00 2001 From: Denis Rouzaud Date: Sat, 28 Jul 2018 08:06:08 +0200 Subject: [PATCH] [pyqgis] __repr__ method for QgsExpression, QgsField (#7464) * [pyqgis] __repr__ method for QgsExpression, QgsField * add tests for __repr__ methods * Fix test --- .../auto_generated/expression/qgsexpression.sip.in | 6 ++++++ python/core/auto_generated/qgsfield.sip.in | 6 ++++++ src/core/expression/qgsexpression.h | 8 ++++++++ src/core/qgsfield.h | 8 ++++++++ tests/src/python/test_python_repr.py | 11 ++++++++++- 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/python/core/auto_generated/expression/qgsexpression.sip.in b/python/core/auto_generated/expression/qgsexpression.sip.in index 3231bced5bcf..294ee5d518ca 100644 --- a/python/core/auto_generated/expression/qgsexpression.sip.in +++ b/python/core/auto_generated/expression/qgsexpression.sip.in @@ -586,6 +586,12 @@ value. The value may be null. .. versionadded:: 3.0 %End + SIP_PYOBJECT __repr__(); +%MethodCode + QString str = QStringLiteral( "" ).arg( sipCpp->expression() ); + sipRes = PyUnicode_FromString( str.toUtf8().data() ); +%End + }; diff --git a/python/core/auto_generated/qgsfield.sip.in b/python/core/auto_generated/qgsfield.sip.in index af0f4f9367b0..9a3a784d9554 100644 --- a/python/core/auto_generated/qgsfield.sip.in +++ b/python/core/auto_generated/qgsfield.sip.in @@ -330,6 +330,12 @@ by manual field configuration. :return: the value %End + SIP_PYOBJECT __repr__(); +%MethodCode + QString str = QStringLiteral( "" ).arg( sipCpp->name() ).arg( sipCpp->typeName() ); + sipRes = PyUnicode_FromString( str.toUtf8().data() ); +%End + }; // class QgsField diff --git a/src/core/expression/qgsexpression.h b/src/core/expression/qgsexpression.h index 7bd5fbed12b1..bb40382e3dad 100644 --- a/src/core/expression/qgsexpression.h +++ b/src/core/expression/qgsexpression.h @@ -609,6 +609,14 @@ class CORE_EXPORT QgsExpression */ static QString createFieldEqualityExpression( const QString &fieldName, const QVariant &value ); +#ifdef SIP_RUN + SIP_PYOBJECT __repr__(); + % MethodCode + QString str = QStringLiteral( "" ).arg( sipCpp->expression() ); + sipRes = PyUnicode_FromString( str.toUtf8().data() ); + % End +#endif + private: void initGeomCalculator(); diff --git a/src/core/qgsfield.h b/src/core/qgsfield.h index e63dcf8a1855..2c9ffbe403e4 100644 --- a/src/core/qgsfield.h +++ b/src/core/qgsfield.h @@ -335,6 +335,14 @@ class CORE_EXPORT QgsField */ QgsEditorWidgetSetup editorWidgetSetup() const; +#ifdef SIP_RUN + SIP_PYOBJECT __repr__(); + % MethodCode + QString str = QStringLiteral( "" ).arg( sipCpp->name() ).arg( sipCpp->typeName() ); + sipRes = PyUnicode_FromString( str.toUtf8().data() ); + % End +#endif + private: QSharedDataPointer d; diff --git a/tests/src/python/test_python_repr.py b/tests/src/python/test_python_repr.py index 60dfaa065262..6f9dab29b104 100644 --- a/tests/src/python/test_python_repr.py +++ b/tests/src/python/test_python_repr.py @@ -14,9 +14,10 @@ import qgis # NOQA +from PyQt5.QtCore import QVariant from qgis.testing import unittest, start_app from qgis.core import QgsGeometry, QgsPoint, QgsPointXY, QgsCircle, QgsCircularString, QgsCompoundCurve,\ - QgsCurvePolygon, QgsEllipse, QgsLineString, QgsMultiCurve, QgsRectangle + QgsCurvePolygon, QgsEllipse, QgsLineString, QgsMultiCurve, QgsRectangle, QgsExpression, QgsField start_app() @@ -112,6 +113,14 @@ def testQgsRectangleRepr(self): r = QgsRectangle(1, 2, 3, 4) self.assertEqual(r.__repr__(), '') + def testQgsExpressionRepr(self): + e = QgsExpression('my expression') + self.assertEqual(e.__repr__(), "") + + def testQgsFieldRepr(self): + f = QgsField('field_name', QVariant.Double, 'double') + self.assertEqual(f.__repr__(), "") + if __name__ == "__main__": unittest.main()