Skip to content

Commit

Permalink
Enable keyword arguments in Python wrappers generated by SIP
Browse files Browse the repository at this point in the history
For example:
>>> GC.metrics("Pace", filter="isRun<>0")
is equivalent to:
>>> GC.metrics("Pace", False, "isRun<>0")
as expected by Python users
  • Loading branch information
amtriathlon committed Dec 15, 2017
1 parent ae6d001 commit be73ab9
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 43 deletions.
2 changes: 1 addition & 1 deletion src/Python/SIP/goldencheetah.sip
Expand Up @@ -16,7 +16,7 @@
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

%Module goldencheetah
%Module(name=goldencheetah, keyword_arguments="All")


//
Expand Down
40 changes: 26 additions & 14 deletions src/Python/SIP/sipAPIgoldencheetah.h
Expand Up @@ -37,20 +37,32 @@
#define sipName_webpage &sipStrings_goldencheetah[127]
#define sipNameNr_metrics 135
#define sipName_metrics &sipStrings_goldencheetah[135]
#define sipNameNr_version 143
#define sipName_version &sipStrings_goldencheetah[143]
#define sipNameNr_athlete 151
#define sipName_athlete &sipStrings_goldencheetah[151]
#define sipNameNr___len__ 159
#define sipName___len__ &sipStrings_goldencheetah[159]
#define sipNameNr___str__ 167
#define sipName___str__ &sipStrings_goldencheetah[167]
#define sipNameNr_QString 175
#define sipName_QString &sipStrings_goldencheetah[175]
#define sipNameNr_series 183
#define sipName_series &sipStrings_goldencheetah[183]
#define sipNameNr_build 190
#define sipName_build &sipStrings_goldencheetah[190]
#define sipNameNr_compare 143
#define sipName_compare &sipStrings_goldencheetah[143]
#define sipNameNr_version 151
#define sipName_version &sipStrings_goldencheetah[151]
#define sipNameNr_athlete 159
#define sipName_athlete &sipStrings_goldencheetah[159]
#define sipNameNr___len__ 167
#define sipName___len__ &sipStrings_goldencheetah[167]
#define sipNameNr___str__ 175
#define sipName___str__ &sipStrings_goldencheetah[175]
#define sipNameNr_QString 183
#define sipName_QString &sipStrings_goldencheetah[183]
#define sipNameNr_metric 191
#define sipName_metric &sipStrings_goldencheetah[191]
#define sipNameNr_filter 198
#define sipName_filter &sipStrings_goldencheetah[198]
#define sipNameNr_series 205
#define sipName_series &sipStrings_goldencheetah[205]
#define sipNameNr_build 212
#define sipName_build &sipStrings_goldencheetah[212]
#define sipNameNr_type 218
#define sipName_type &sipStrings_goldencheetah[218]
#define sipNameNr_url 223
#define sipName_url &sipStrings_goldencheetah[223]
#define sipNameNr_all 227
#define sipName_all &sipStrings_goldencheetah[227]

#define sipMalloc sipAPI_goldencheetah->api_malloc
#define sipFree sipAPI_goldencheetah->api_free
Expand Down
88 changes: 60 additions & 28 deletions src/Python/SIP/sipgoldencheetahBindings.cpp
Expand Up @@ -118,16 +118,20 @@ static PyObject *meth_Bindings_version(PyObject *sipSelf, PyObject *sipArgs)
}


extern "C" {static PyObject *meth_Bindings_seriesPresent(PyObject *, PyObject *);}
static PyObject *meth_Bindings_seriesPresent(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_seriesPresent(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_seriesPresent(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

{
int a0 = 10;
const ::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
static const char *sipKwdList[] = {
sipName_type,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
{
bool sipRes;

Expand All @@ -144,16 +148,20 @@ static PyObject *meth_Bindings_seriesPresent(PyObject *sipSelf, PyObject *sipArg
}


extern "C" {static PyObject *meth_Bindings_seriesName(PyObject *, PyObject *);}
static PyObject *meth_Bindings_seriesName(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_seriesName(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_seriesName(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

{
int a0 = 10;
const ::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
static const char *sipKwdList[] = {
sipName_type,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
{
::QString*sipRes;

Expand Down Expand Up @@ -195,16 +203,20 @@ static PyObject *meth_Bindings_seriesLast(PyObject *sipSelf, PyObject *sipArgs)
}


extern "C" {static PyObject *meth_Bindings_series(PyObject *, PyObject *);}
static PyObject *meth_Bindings_series(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_series(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_series(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

{
int a0 = 10;
::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
static const char *sipKwdList[] = {
sipName_type,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "B|i", &sipSelf, sipType_Bindings, &sipCpp, &a0))
{
::PythonDataSeries*sipRes;

Expand All @@ -221,16 +233,20 @@ static PyObject *meth_Bindings_series(PyObject *sipSelf, PyObject *sipArgs)
}


extern "C" {static PyObject *meth_Bindings_activityMetrics(PyObject *, PyObject *);}
static PyObject *meth_Bindings_activityMetrics(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_activityMetrics(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_activityMetrics(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

{
bool a0 = 0;
::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "B|b", &sipSelf, sipType_Bindings, &sipCpp, &a0))
static const char *sipKwdList[] = {
sipName_compare,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "B|b", &sipSelf, sipType_Bindings, &sipCpp, &a0))
{
PyObject * sipRes;

Expand All @@ -247,8 +263,8 @@ static PyObject *meth_Bindings_activityMetrics(PyObject *sipSelf, PyObject *sipA
}


extern "C" {static PyObject *meth_Bindings_seasonMetrics(PyObject *, PyObject *);}
static PyObject *meth_Bindings_seasonMetrics(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_seasonMetrics(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_seasonMetrics(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

Expand All @@ -260,7 +276,13 @@ static PyObject *meth_Bindings_seasonMetrics(PyObject *sipSelf, PyObject *sipArg
bool a2 = 0;
::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "B|bJ1b", &sipSelf, sipType_Bindings, &sipCpp, &a0, sipType_QString,&a1, &a1State, &a2))
static const char *sipKwdList[] = {
sipName_all,
sipName_filter,
sipName_compare,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "B|bJ1b", &sipSelf, sipType_Bindings, &sipCpp, &a0, sipType_QString,&a1, &a1State, &a2))
{
PyObject * sipRes;

Expand All @@ -278,8 +300,8 @@ static PyObject *meth_Bindings_seasonMetrics(PyObject *sipSelf, PyObject *sipArg
}


extern "C" {static PyObject *meth_Bindings_metrics(PyObject *, PyObject *);}
static PyObject *meth_Bindings_metrics(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_metrics(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_metrics(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

Expand All @@ -292,7 +314,13 @@ static PyObject *meth_Bindings_metrics(PyObject *sipSelf, PyObject *sipArgs)
int a2State = 0;
::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "BJ1|bJ1", &sipSelf, sipType_Bindings, &sipCpp, sipType_QString,&a0, &a0State, &a1, sipType_QString,&a2, &a2State))
static const char *sipKwdList[] = {
sipName_metric,
sipName_all,
sipName_filter,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "BJ1|bJ1", &sipSelf, sipType_Bindings, &sipCpp, sipType_QString,&a0, &a0State, &a1, sipType_QString,&a2, &a2State))
{
::PythonDataSeries*sipRes;

Expand All @@ -311,8 +339,8 @@ static PyObject *meth_Bindings_metrics(PyObject *sipSelf, PyObject *sipArgs)
}


extern "C" {static PyObject *meth_Bindings_webpage(PyObject *, PyObject *);}
static PyObject *meth_Bindings_webpage(PyObject *sipSelf, PyObject *sipArgs)
extern "C" {static PyObject *meth_Bindings_webpage(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_Bindings_webpage(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
PyObject *sipParseErr = NULL;

Expand All @@ -321,7 +349,11 @@ static PyObject *meth_Bindings_webpage(PyObject *sipSelf, PyObject *sipArgs)
int a0State = 0;
const ::Bindings *sipCpp;

if (sipParseArgs(&sipParseErr, sipArgs, "BJ1", &sipSelf, sipType_Bindings, &sipCpp, sipType_QString,&a0, &a0State))
static const char *sipKwdList[] = {
sipName_url,
};

if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, NULL, "BJ1", &sipSelf, sipType_Bindings, &sipCpp, sipType_QString,&a0, &a0State))
{
int sipRes;

Expand Down Expand Up @@ -408,18 +440,18 @@ static void *init_type_Bindings(sipSimpleWrapper *, PyObject *sipArgs, PyObject


static PyMethodDef methods_Bindings[] = {
{SIP_MLNAME_CAST(sipName_activityMetrics), meth_Bindings_activityMetrics, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_activityMetrics), (PyCFunction)meth_Bindings_activityMetrics, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_athlete), meth_Bindings_athlete, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_build), meth_Bindings_build, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_metrics), meth_Bindings_metrics, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_seasonMetrics), meth_Bindings_seasonMetrics, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_series), meth_Bindings_series, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_metrics), (PyCFunction)meth_Bindings_metrics, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_seasonMetrics), (PyCFunction)meth_Bindings_seasonMetrics, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_series), (PyCFunction)meth_Bindings_series, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_seriesLast), meth_Bindings_seriesLast, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_seriesName), meth_Bindings_seriesName, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_seriesPresent), meth_Bindings_seriesPresent, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_seriesName), (PyCFunction)meth_Bindings_seriesName, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_seriesPresent), (PyCFunction)meth_Bindings_seriesPresent, METH_VARARGS|METH_KEYWORDS, NULL},
{SIP_MLNAME_CAST(sipName_threadid), meth_Bindings_threadid, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_version), meth_Bindings_version, METH_VARARGS, NULL},
{SIP_MLNAME_CAST(sipName_webpage), meth_Bindings_webpage, METH_VARARGS, NULL}
{SIP_MLNAME_CAST(sipName_webpage), (PyCFunction)meth_Bindings_webpage, METH_VARARGS|METH_KEYWORDS, NULL}
};


Expand Down
6 changes: 6 additions & 0 deletions src/Python/SIP/sipgoldencheetahcmodule.cpp
Expand Up @@ -27,13 +27,19 @@ const char sipStrings_goldencheetah[] = {
'B', 'i', 'n', 'd', 'i', 'n', 'g', 's', 0,
'w', 'e', 'b', 'p', 'a', 'g', 'e', 0,
'm', 'e', 't', 'r', 'i', 'c', 's', 0,
'c', 'o', 'm', 'p', 'a', 'r', 'e', 0,
'v', 'e', 'r', 's', 'i', 'o', 'n', 0,
'a', 't', 'h', 'l', 'e', 't', 'e', 0,
'_', '_', 'l', 'e', 'n', '_', '_', 0,
'_', '_', 's', 't', 'r', '_', '_', 0,
'Q', 'S', 't', 'r', 'i', 'n', 'g', 0,
'm', 'e', 't', 'r', 'i', 'c', 0,
'f', 'i', 'l', 't', 'e', 'r', 0,
's', 'e', 'r', 'i', 'e', 's', 0,
'b', 'u', 'i', 'l', 'd', 0,
't', 'y', 'p', 'e', 0,
'u', 'r', 'l', 0,
'a', 'l', 'l', 0,
};


Expand Down

0 comments on commit be73ab9

Please sign in to comment.