Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show notes for algs which regenerate primary keys #58100

Merged
merged 7 commits into from
Jul 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ if (WITH_CORE AND WITH_BINDINGS)
include(SIPMacros)

set(SIP_INCLUDES ${PYQT_SIP_DIR} ${CMAKE_SOURCE_DIR}/python)
set(SIP_CONCAT_PARTS 22)
set(SIP_CONCAT_PARTS 24)

if (NOT BINDINGS_GLOBAL_INSTALL)
set(Python_SITEARCH ${QGIS_DATA_DIR}/python)
Expand Down
9 changes: 9 additions & 0 deletions python/PyQt6/core/auto_additions/qgis.py
Original file line number Diff line number Diff line change
Expand Up @@ -3134,6 +3134,15 @@
QgsProcessingAlgorithm.Flags = Qgis.ProcessingAlgorithmFlags
Qgis.ProcessingAlgorithmFlags.baseClass = Qgis
ProcessingAlgorithmFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
# monkey patching scoped based enum
Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ = "Algorithm always drops any existing primary keys or FID values and regenerates them in outputs"
Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ = "Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm inputs and parameters"
Qgis.ProcessingAlgorithmDocumentationFlag.__doc__ = "Flags describing algorithm behavior for documentation purposes.\n\n.. versionadded:: 3.40\n\n" + '* ``RegeneratesPrimaryKey``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ + '\n' + '* ``RegeneratesPrimaryKeyInSomeScenarios``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__
# --
Qgis.ProcessingAlgorithmDocumentationFlag.baseClass = Qgis
Qgis.ProcessingAlgorithmDocumentationFlags = lambda flags=0: Qgis.ProcessingAlgorithmDocumentationFlag(flags)
Qgis.ProcessingAlgorithmDocumentationFlags.baseClass = Qgis
ProcessingAlgorithmDocumentationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
QgsProcessingAlgorithm.PropertyAvailability = Qgis.ProcessingPropertyAvailability
# monkey patching scoped based enum
QgsProcessingAlgorithm.NotAvailable = Qgis.ProcessingPropertyAvailability.NotAvailable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ and parameters.
Converts a source ``type`` to a string representation.

.. versionadded:: 3.6
%End

static QString documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag );
%Docstring
Converts a documentation ``flag`` to a translated string.

.. versionadded:: 3.40
%End

static const QString TEMPORARY_OUTPUT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,15 @@ Returns a url pointing to the algorithm's help page.
.. seealso:: :py:func:`helpString`

.. seealso:: :py:func:`shortHelpString`
%End

virtual Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const /HoldGIL/;
%Docstring
Returns the flags describing algorithm behavior for documentation purposes.

The default is to return no flags.

.. versionadded:: 3.40
%End

virtual QIcon icon() const /HoldGIL/;
Expand Down
11 changes: 11 additions & 0 deletions python/PyQt6/core/auto_generated/qgis.sip.in
Original file line number Diff line number Diff line change
Expand Up @@ -1773,6 +1773,15 @@ The development version
typedef QFlags<Qgis::ProcessingAlgorithmFlag> ProcessingAlgorithmFlags;


enum class ProcessingAlgorithmDocumentationFlag /BaseType=IntFlag/
{
RegeneratesPrimaryKey,
RegeneratesPrimaryKeyInSomeScenarios,
};

typedef QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> ProcessingAlgorithmDocumentationFlags;


enum class ProcessingPropertyAvailability /BaseType=IntEnum/
{
NotAvailable,
Expand Down Expand Up @@ -3117,6 +3126,8 @@ QFlags<Qgis::ProcessingProviderFlag> operator|(Qgis::ProcessingProviderFlag f1,

QFlags<Qgis::ProcessingAlgorithmFlag> operator|(Qgis::ProcessingAlgorithmFlag f1, QFlags<Qgis::ProcessingAlgorithmFlag> f2);

QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> operator|(Qgis::ProcessingAlgorithmDocumentationFlag f1, QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> f2);

QFlags<Qgis::ProcessingFeatureSourceFlag> operator|(Qgis::ProcessingFeatureSourceFlag f1, QFlags<Qgis::ProcessingFeatureSourceFlag> f2);

QFlags<Qgis::ProcessingParameterTypeFlag> operator|(Qgis::ProcessingParameterTypeFlag f1, QFlags<Qgis::ProcessingParameterTypeFlag> f2);
Expand Down
8 changes: 8 additions & 0 deletions python/core/auto_additions/qgis.py
Original file line number Diff line number Diff line change
Expand Up @@ -3081,6 +3081,14 @@
QgsProcessingAlgorithm.Flags = Qgis.ProcessingAlgorithmFlags
Qgis.ProcessingAlgorithmFlags.baseClass = Qgis
ProcessingAlgorithmFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
# monkey patching scoped based enum
Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ = "Algorithm always drops any existing primary keys or FID values and regenerates them in outputs"
Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ = "Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm inputs and parameters"
Qgis.ProcessingAlgorithmDocumentationFlag.__doc__ = "Flags describing algorithm behavior for documentation purposes.\n\n.. versionadded:: 3.40\n\n" + '* ``RegeneratesPrimaryKey``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ + '\n' + '* ``RegeneratesPrimaryKeyInSomeScenarios``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__
# --
Qgis.ProcessingAlgorithmDocumentationFlag.baseClass = Qgis
Qgis.ProcessingAlgorithmDocumentationFlags.baseClass = Qgis
ProcessingAlgorithmDocumentationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module
QgsProcessingAlgorithm.PropertyAvailability = Qgis.ProcessingPropertyAvailability
# monkey patching scoped based enum
QgsProcessingAlgorithm.NotAvailable = Qgis.ProcessingPropertyAvailability.NotAvailable
Expand Down
7 changes: 7 additions & 0 deletions python/core/auto_generated/processing/qgsprocessing.sip.in
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ and parameters.
Converts a source ``type`` to a string representation.

.. versionadded:: 3.6
%End

static QString documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag );
%Docstring
Converts a documentation ``flag`` to a translated string.

.. versionadded:: 3.40
%End

static const QString TEMPORARY_OUTPUT;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,15 @@ Returns a url pointing to the algorithm's help page.
.. seealso:: :py:func:`helpString`

.. seealso:: :py:func:`shortHelpString`
%End

virtual Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const /HoldGIL/;
%Docstring
Returns the flags describing algorithm behavior for documentation purposes.

The default is to return no flags.

.. versionadded:: 3.40
%End

virtual QIcon icon() const /HoldGIL/;
Expand Down
11 changes: 11 additions & 0 deletions python/core/auto_generated/qgis.sip.in
Original file line number Diff line number Diff line change
Expand Up @@ -1773,6 +1773,15 @@ The development version
typedef QFlags<Qgis::ProcessingAlgorithmFlag> ProcessingAlgorithmFlags;


enum class ProcessingAlgorithmDocumentationFlag
{
RegeneratesPrimaryKey,
RegeneratesPrimaryKeyInSomeScenarios,
};

typedef QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> ProcessingAlgorithmDocumentationFlags;


enum class ProcessingPropertyAvailability
{
NotAvailable,
Expand Down Expand Up @@ -3117,6 +3126,8 @@ QFlags<Qgis::ProcessingProviderFlag> operator|(Qgis::ProcessingProviderFlag f1,

QFlags<Qgis::ProcessingAlgorithmFlag> operator|(Qgis::ProcessingAlgorithmFlag f1, QFlags<Qgis::ProcessingAlgorithmFlag> f2);

QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> operator|(Qgis::ProcessingAlgorithmDocumentationFlag f1, QFlags<Qgis::ProcessingAlgorithmDocumentationFlag> f2);

QFlags<Qgis::ProcessingFeatureSourceFlag> operator|(Qgis::ProcessingFeatureSourceFlag f1, QFlags<Qgis::ProcessingFeatureSourceFlag> f2);

QFlags<Qgis::ProcessingParameterTypeFlag> operator|(Qgis::ProcessingParameterTypeFlag f1, QFlags<Qgis::ProcessingParameterTypeFlag> f2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
import random

from qgis.PyQt.QtCore import QVariant
from qgis.core import (QgsField,
from qgis.core import (Qgis,
QgsField,
QgsFeatureSink,
QgsFeature,
QgsFields,
Expand Down Expand Up @@ -81,6 +82,9 @@ def name(self):
def displayName(self):
return self.tr('Random points along line')

def documentationFlags(self):
return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey

def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
Expand Down
6 changes: 5 additions & 1 deletion python/plugins/processing/algs/qgis/RandomPointsLayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@

from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtCore import QVariant
from qgis.core import (QgsApplication,
from qgis.core import (Qgis,
QgsApplication,
QgsField,
QgsFeatureSink,
QgsFeature,
Expand Down Expand Up @@ -90,6 +91,9 @@ def name(self):
def displayName(self):
return self.tr('Random points in layer bounds')

def documentationFlags(self):
return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey

def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
Expand Down
6 changes: 5 additions & 1 deletion python/plugins/processing/algs/qgis/RandomPointsPolygons.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
import random

from qgis.PyQt.QtCore import QVariant
from qgis.core import (QgsApplication,
from qgis.core import (Qgis,
QgsApplication,
QgsField,
QgsFeatureSink,
QgsFeature,
Expand Down Expand Up @@ -118,6 +119,9 @@ def name(self):
def displayName(self):
return self.tr('Random points inside polygons')

def documentationFlags(self):
return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey

def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
Expand Down
5 changes: 5 additions & 0 deletions src/analysis/processing/qgsalgorithmarrayoffsetlines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ QString QgsCreateArrayOffsetLinesAlgorithm::shortDescription() const
return QObject::tr( "Creates multiple offset copies of lines from a layer." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsCreateArrayOffsetLinesAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QgsCreateArrayOffsetLinesAlgorithm *QgsCreateArrayOffsetLinesAlgorithm::createInstance() const
{
return new QgsCreateArrayOffsetLinesAlgorithm();
Expand Down
1 change: 1 addition & 0 deletions src/analysis/processing/qgsalgorithmarrayoffsetlines.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class QgsCreateArrayOffsetLinesAlgorithm : public QgsProcessingFeatureBasedAlgor
QString groupId() const override;
QString shortHelpString() const override;
QString shortDescription() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsCreateArrayOffsetLinesAlgorithm *createInstance() const override SIP_FACTORY;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
QList<int> inputLayerTypes() const override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ QString QgsArrayTranslatedFeaturesAlgorithm::shortDescription() const
return QObject::tr( "Creates multiple translated copies of features in a layer." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsArrayTranslatedFeaturesAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QgsArrayTranslatedFeaturesAlgorithm *QgsArrayTranslatedFeaturesAlgorithm::createInstance() const
{
return new QgsArrayTranslatedFeaturesAlgorithm();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class QgsArrayTranslatedFeaturesAlgorithm : public QgsProcessingFeatureBasedAlgo
QString groupId() const override;
QString shortHelpString() const override;
QString shortDescription() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsArrayTranslatedFeaturesAlgorithm *createInstance() const override SIP_FACTORY;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;

Expand Down
5 changes: 5 additions & 0 deletions src/analysis/processing/qgsalgorithmbuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ QString QgsBufferAlgorithm::shortHelpString() const
"The miter limit parameter is only applicable for miter join styles, and controls the maximum distance from the offset curve to use when creating a mitered join." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsBufferAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios;
}

QgsBufferAlgorithm *QgsBufferAlgorithm::createInstance() const
{
return new QgsBufferAlgorithm();
Expand Down
1 change: 1 addition & 0 deletions src/analysis/processing/qgsalgorithmbuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class QgsBufferAlgorithm : public QgsProcessingAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsBufferAlgorithm *createInstance() const override SIP_FACTORY;
bool supportInPlaceEdit( const QgsMapLayer *layer ) const override;
Qgis::ProcessingAlgorithmFlags flags() const override;
Expand Down
5 changes: 5 additions & 0 deletions src/analysis/processing/qgsalgorithmcentroid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ QString QgsCentroidAlgorithm::shortHelpString() const
"The attributes associated to each point in the output layer are the same ones associated to the original features." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsCentroidAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios;
}

QgsCentroidAlgorithm *QgsCentroidAlgorithm::createInstance() const
{
return new QgsCentroidAlgorithm();
Expand Down
1 change: 1 addition & 0 deletions src/analysis/processing/qgsalgorithmcentroid.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class QgsCentroidAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsCentroidAlgorithm *createInstance() const override SIP_FACTORY;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;

Expand Down
10 changes: 10 additions & 0 deletions src/analysis/processing/qgsalgorithmdissolve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,11 @@ QString QgsDissolveAlgorithm::shortHelpString() const
"as separate features (instead of parts of a single multipart feature)." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsDissolveAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QgsDissolveAlgorithm *QgsDissolveAlgorithm::createInstance() const
{
return new QgsDissolveAlgorithm();
Expand Down Expand Up @@ -362,6 +367,11 @@ QString QgsCollectAlgorithm::shortHelpString() const
QObject::tr( "See the 'Promote to multipart' or 'Aggregate' algorithms for alternative options." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsCollectAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QgsCollectAlgorithm *QgsCollectAlgorithm::createInstance() const
{
return new QgsCollectAlgorithm();
Expand Down
2 changes: 2 additions & 0 deletions src/analysis/processing/qgsalgorithmdissolve.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class QgsDissolveAlgorithm : public QgsCollectorAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsDissolveAlgorithm *createInstance() const override SIP_FACTORY;

protected:
Expand Down Expand Up @@ -83,6 +84,7 @@ class QgsCollectAlgorithm : public QgsCollectorAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsCollectAlgorithm *createInstance() const override SIP_FACTORY;

protected:
Expand Down
5 changes: 5 additions & 0 deletions src/analysis/processing/qgsalgorithmexplode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ QString QgsExplodeAlgorithm::shortHelpString() const
"same type and contain only single curve segments." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsExplodeAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QList<int> QgsExplodeAlgorithm::inputLayerTypes() const
{
return QList<int>() << static_cast< int >( Qgis::ProcessingSourceType::VectorLine );
Expand Down
1 change: 1 addition & 0 deletions src/analysis/processing/qgsalgorithmexplode.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class QgsExplodeAlgorithm : public QgsProcessingFeatureBasedAlgorithm
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QList<int> inputLayerTypes() const override;
Qgis::ProcessingSourceType outputLayerType() const override;
QgsExplodeAlgorithm *createInstance() const override SIP_FACTORY;
Expand Down
5 changes: 5 additions & 0 deletions src/analysis/processing/qgsalgorithmextractlabels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ QString QgsExtractLabelsAlgorithm::shortDescription() const
return QObject::tr( "Converts map labels to a point layer with relevant details saved as attributes." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsExtractLabelsAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QString QgsExtractLabelsAlgorithm::shortHelpString() const
{
return QObject::tr( "This algorithm extracts label information from a rendered map at a given extent and scale.\n\n"
Expand Down
1 change: 1 addition & 0 deletions src/analysis/processing/qgsalgorithmextractlabels.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class QgsExtractLabelsAlgorithm : public QgsProcessingAlgorithm
QString groupId() const override;
QString shortHelpString() const override;
QString shortDescription() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
QgsExtractLabelsAlgorithm *createInstance() const override SIP_FACTORY;

protected:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ QString QgsExtractSpecificVerticesAlgorithm::shortHelpString() const
"polygons), distance along the original geometry and bisector angle of vertex for the original geometry." );
}

Qgis::ProcessingAlgorithmDocumentationFlags QgsExtractSpecificVerticesAlgorithm::documentationFlags() const
{
return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey;
}

QString QgsExtractSpecificVerticesAlgorithm::outputName() const
{
return QObject::tr( "Vertices" );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class QgsExtractSpecificVerticesAlgorithm : public QgsProcessingFeatureBasedAlgo
QString group() const override;
QString groupId() const override;
QString shortHelpString() const override;
Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override;
void initParameters( const QVariantMap &configuration = QVariantMap() ) override;
QgsExtractSpecificVerticesAlgorithm *createInstance() const override SIP_FACTORY;

Expand Down
Loading
Loading