Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add a __repr__ method to QgsDataSourceUri
  • Loading branch information
nyalldawson committed Nov 23, 2020
1 parent 5003db6 commit 3234489
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 1 deletion.
6 changes: 6 additions & 0 deletions python/core/auto_generated/qgsdatasourceuri.sip.in
Expand Up @@ -336,6 +336,12 @@ Sets geometry column name to ``geometryColumn``
.. versionadded:: 3.10
%End

SIP_PYOBJECT __repr__();
%MethodCode
QString str = QStringLiteral( "<QgsDataSourceUri: %1>" ).arg( sipCpp->uri( false ) );
sipRes = PyUnicode_FromString( str.toUtf8().constData() );
%End

};


Expand Down
8 changes: 8 additions & 0 deletions src/core/qgsdatasourceuri.h
Expand Up @@ -301,6 +301,14 @@ class CORE_EXPORT QgsDataSourceUri
*/
void setGeometryColumn( const QString &geometryColumn );

#ifdef SIP_RUN
SIP_PYOBJECT __repr__();
% MethodCode
QString str = QStringLiteral( "<QgsDataSourceUri: %1>" ).arg( sipCpp->uri( false ) );
sipRes = PyUnicode_FromString( str.toUtf8().constData() );
% End
#endif

private:
void skipBlanks( const QString &uri, int &i );
QString getValue( const QString &uri, int &i );
Expand Down
7 changes: 6 additions & 1 deletion tests/src/python/test_python_repr.py
Expand Up @@ -20,7 +20,7 @@
QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsProject, QgsClassificationRange, QgsBookmark, \
QgsLayoutMeasurement, QgsLayoutPoint, QgsLayoutSize, QgsUnitTypes, QgsConditionalStyle, QgsTableCell, QgsProperty, \
QgsVertexId, QgsReferencedGeometry, QgsProviderRegistry, QgsRasterLayer, QgsAnnotationLayer, QgsPointCloudLayer,\
QgsVectorTileLayer, QgsMeshLayer
QgsVectorTileLayer, QgsMeshLayer, QgsDataSourceUri

start_app()

Expand Down Expand Up @@ -268,6 +268,11 @@ def testQgsVertexId(self):
def testProviderMetadata(self):
self.assertEqual(QgsProviderRegistry.instance().providerMetadata('ogr').__repr__(), '<QgsProviderMetadata: ogr>')

def testDataSourceUri(self):
ds = QgsDataSourceUri()
ds.setConnection(aHost='my_host', aPort='2322', aDatabase='my_db', aUsername='user', aPassword='pw')
self.assertEqual(ds.__repr__(), "<QgsDataSourceUri: dbname='my_db' host=my_host port=2322 user='user' password='pw'>")


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

0 comments on commit 3234489

Please sign in to comment.