Skip to content

Commit c0dd006

Browse files
authoredJul 28, 2018
[pyqgis] __repr__ method for QgsExpression, QgsField (#7464)
* [pyqgis] __repr__ method for QgsExpression, QgsField * add tests for __repr__ methods * Fix test
1 parent e19e1de commit c0dd006

File tree

5 files changed

+38
-1
lines changed

5 files changed

+38
-1
lines changed
 

‎python/core/auto_generated/expression/qgsexpression.sip.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,12 @@ value. The value may be null.
586586
.. versionadded:: 3.0
587587
%End
588588

589+
SIP_PYOBJECT __repr__();
590+
%MethodCode
591+
QString str = QStringLiteral( "<QgsExpression: '%1'>" ).arg( sipCpp->expression() );
592+
sipRes = PyUnicode_FromString( str.toUtf8().data() );
593+
%End
594+
589595
};
590596

591597

‎python/core/auto_generated/qgsfield.sip.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,12 @@ by manual field configuration.
330330
:return: the value
331331
%End
332332

333+
SIP_PYOBJECT __repr__();
334+
%MethodCode
335+
QString str = QStringLiteral( "<QgsField: %1 (%2)>" ).arg( sipCpp->name() ).arg( sipCpp->typeName() );
336+
sipRes = PyUnicode_FromString( str.toUtf8().data() );
337+
%End
338+
333339
}; // class QgsField
334340

335341

‎src/core/expression/qgsexpression.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,14 @@ class CORE_EXPORT QgsExpression
609609
*/
610610
static QString createFieldEqualityExpression( const QString &fieldName, const QVariant &value );
611611

612+
#ifdef SIP_RUN
613+
SIP_PYOBJECT __repr__();
614+
% MethodCode
615+
QString str = QStringLiteral( "<QgsExpression: '%1'>" ).arg( sipCpp->expression() );
616+
sipRes = PyUnicode_FromString( str.toUtf8().data() );
617+
% End
618+
#endif
619+
612620
private:
613621
void initGeomCalculator();
614622

‎src/core/qgsfield.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,14 @@ class CORE_EXPORT QgsField
335335
*/
336336
QgsEditorWidgetSetup editorWidgetSetup() const;
337337

338+
#ifdef SIP_RUN
339+
SIP_PYOBJECT __repr__();
340+
% MethodCode
341+
QString str = QStringLiteral( "<QgsField: %1 (%2)>" ).arg( sipCpp->name() ).arg( sipCpp->typeName() );
342+
sipRes = PyUnicode_FromString( str.toUtf8().data() );
343+
% End
344+
#endif
345+
338346
private:
339347

340348
QSharedDataPointer<QgsFieldPrivate> d;

‎tests/src/python/test_python_repr.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414

1515
import qgis # NOQA
1616

17+
from PyQt5.QtCore import QVariant
1718
from qgis.testing import unittest, start_app
1819
from qgis.core import QgsGeometry, QgsPoint, QgsPointXY, QgsCircle, QgsCircularString, QgsCompoundCurve,\
19-
QgsCurvePolygon, QgsEllipse, QgsLineString, QgsMultiCurve, QgsRectangle
20+
QgsCurvePolygon, QgsEllipse, QgsLineString, QgsMultiCurve, QgsRectangle, QgsExpression, QgsField
2021

2122
start_app()
2223

@@ -112,6 +113,14 @@ def testQgsRectangleRepr(self):
112113
r = QgsRectangle(1, 2, 3, 4)
113114
self.assertEqual(r.__repr__(), '<QgsRectangle: 1 2, 3 4>')
114115

116+
def testQgsExpressionRepr(self):
117+
e = QgsExpression('my expression')
118+
self.assertEqual(e.__repr__(), "<QgsExpression: 'my expression'>")
119+
120+
def testQgsFieldRepr(self):
121+
f = QgsField('field_name', QVariant.Double, 'double')
122+
self.assertEqual(f.__repr__(), "<QgsField: field_name (double)>")
123+
115124

116125
if __name__ == "__main__":
117126
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.