[git] GPGME - branch, master, updated. gpgme-1.6.0-160-g8196edf

by Justus Winter cvs at cvs.gnupg.org
Mon Jun 6 15:01:01 CEST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".

The branch, master has been updated
       via  8196edf9ca5c8f2f02553e7f22d9c79dbd229882 (commit)
       via  26c3accc95ab77ddbe60db822e2938ad5f480d41 (commit)
       via  89eb0cd4d65bc033ed6342810b26232797482d64 (commit)
       via  ae06f7c2fe0e49baeab5a827dc38ba8c57a6404c (commit)
       via  2055a63605207bbf3b5ce1aa7bf159e7b83e87e6 (commit)
      from  bbf19124bbec9eb6298cef2914baae7ac74382fe (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8196edf9ca5c8f2f02553e7f22d9c79dbd229882
Author: Justus Winter <justus at g10code.com>
Date:   Mon Jun 6 13:11:15 2016 +0200

    python: Wrap file-like objects on demand.
    
    * lang/python/gpgme.i (gpgme_data_t): Use new function to create
    wrapper objects if necessary, and deallocate them after the function
    call.
    * lang/python/helpers.c (object_to_gpgme_data_t): New function.
    * lang/python/helpers.h (object_to_gpgme_data_t): New prototype.
    * lang/python/tests/Makefile.am (pytests): Add new test.
    * lang/python/tests/t-idiomatic.py: New file.
    
    Signed-off-by: Justus Winter <justus at g10code.com>

diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index e3c761d..e369582 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -113,13 +113,17 @@
 }
 
 // Special handling for references to our objects.
-%typemap(in) gpgme_data_t DATAIN {
+%typemap(in) gpgme_data_t DATAIN (PyObject *wrapper) {
+  /* If we create a temporary wrapper object, we will store it in
+     wrapperN, where N is $argnum.  Here in this fragment, SWIG will
+     automatically append $argnum.  */
+  wrapper = NULL;
   if ($input == Py_None)
     $1 = NULL;
   else {
     PyObject *pypointer = NULL;
 
-    if((pypointer=object_to_gpgme_t($input, "$1_ltype", $argnum)) == NULL)
+    if((pypointer=object_to_gpgme_data_t($input, $argnum, &wrapper)) == NULL)
       return NULL;
 
     /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */
@@ -135,6 +139,11 @@
   }
 }
 
+%typemap(freearg) gpgme_data_t DATAIN {
+  /* Free the temporary wrapper, if any.  */
+  Py_XDECREF(wrapper$argnum);
+}
+
 %apply gpgme_data_t DATAIN {gpgme_data_t plain, gpgme_data_t cipher,
 			gpgme_data_t sig, gpgme_data_t signed_text,
 			gpgme_data_t plaintext, gpgme_data_t keydata,
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 3ecbacc..7e1c1c3 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -180,6 +180,71 @@ object_to_gpgme_t(PyObject *input, const char *objtype, int argnum)
   return pypointer;
 }
 
+/* Convert object to a pointer to gpgme type, version for data
+   objects.  Constructs a wrapper Python on the fly e.g. for file-like
+   objects with a fileno method, returning it in WRAPPER.  This object
+   must be de-referenced when no longer needed.  */
+PyObject *
+object_to_gpgme_data_t(PyObject *input, int argnum, PyObject **wrapper)
+{
+  static PyObject *Data = NULL;
+  PyObject *data = input;
+  PyObject *fd;
+  PyObject *result;
+  *wrapper = NULL;
+
+  if (Data == NULL) {
+    PyObject *core;
+    PyObject *from_list = PyList_New(0);
+    core = PyImport_ImportModuleLevel("core", PyEval_GetGlobals(),
+                                      PyEval_GetLocals(), from_list, 1);
+    Py_XDECREF(from_list);
+    if (core) {
+      Data = PyDict_GetItemString(PyModule_GetDict(core), "Data");
+      Py_XINCREF(Data);
+    }
+    else
+      return NULL;
+  }
+
+  fd = PyObject_CallMethod(input, "fileno", NULL);
+  if (fd) {
+    /* File-like object with file number.  */
+    PyObject *args = NULL;
+    PyObject *kw = NULL;
+
+    /* We don't need the fd, as we have no constructor accepting file
+       descriptors directly.  */
+    Py_DECREF(fd);
+
+    args = PyTuple_New(0);
+    kw = PyDict_New();
+    if (args == NULL || kw == NULL)
+      {
+      fail:
+        Py_XDECREF(args);
+        Py_XDECREF(kw);
+        return NULL;
+      }
+
+    if (PyDict_SetItemString(kw, "file", input) < 0)
+      goto fail;
+
+    *wrapper = PyObject_Call(Data, args, kw);
+    if (*wrapper == NULL)
+      goto fail;
+
+    Py_DECREF(args);
+    Py_DECREF(kw);
+    data = *wrapper;
+  }
+  else
+    PyErr_Clear();
+
+  result = object_to_gpgme_t(data, "gpgme_data_t", argnum);
+  return result;
+}
+
 

 
 /* Callback support.  */
diff --git a/lang/python/helpers.h b/lang/python/helpers.h
index 952b31f..2450263 100644
--- a/lang/python/helpers.h
+++ b/lang/python/helpers.h
@@ -29,6 +29,8 @@ void pygpgme_exception_init(void);
 gpgme_error_t pygpgme_exception2code(void);
 
 PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum);
+PyObject *object_to_gpgme_data_t(PyObject *input, int argnum,
+				 PyObject **wrapper);
 
 void pygpgme_clear_generic_cb(PyObject **cb);
 PyObject *pygpgme_raise_callback_exception(PyObject *self);
diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am
index 12db3a5..b51562c 100644
--- a/lang/python/tests/Makefile.am
+++ b/lang/python/tests/Makefile.am
@@ -46,7 +46,8 @@ py_tests = t-wrapper.py \
 	t-edit.py \
 	t-wait.py \
 	t-encrypt-large.py \
-	t-file-name.py
+	t-file-name.py \
+	t-idiomatic.py
 
 TESTS = $(top_srcdir)/tests/gpg/initial.test \
 	$(py_tests) \
diff --git a/lang/python/tests/t-idiomatic.py b/lang/python/tests/t-idiomatic.py
new file mode 100755
index 0000000..05a377e
--- /dev/null
+++ b/lang/python/tests/t-idiomatic.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 g10 Code GmbH
+#
+# This file is part of GPGME.
+#
+# GPGME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
+# Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+import os
+import tempfile
+from pyme import core, constants, errors
+import support
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+
+# Demonstrate automatic wrapping of file-like objects with 'fileno'
+# method.
+with tempfile.TemporaryFile() as source, \
+     tempfile.TemporaryFile() as signed, \
+     tempfile.TemporaryFile() as sink:
+    source.write(b"Hallo Leute\n")
+    source.seek(0, os.SEEK_SET)
+
+    c.op_sign(source, signed, constants.SIG_MODE_NORMAL)
+    signed.seek(0, os.SEEK_SET)
+    c.op_verify(signed, None, sink)
+    result = c.op_verify_result()
+
+    assert len(result.signatures) == 1, "Unexpected number of signatures"
+    sig = result.signatures[0]
+    assert sig.summary == 0
+    assert errors.GPGMEError(sig.status).getcode() == errors.NO_ERROR
+
+    sink.seek(0, os.SEEK_SET)
+    assert sink.read() == b"Hallo Leute\n"

commit 26c3accc95ab77ddbe60db822e2938ad5f480d41
Author: Justus Winter <justus at g10code.com>
Date:   Thu Jun 2 17:14:53 2016 +0200

    python: Move helper function.
    
    * lang/python/gpgme.i (object_to_gpgme_t): Move...
    * lang/python/helpers.c: ... here.
    * lang/python/helpers.h (object_to_gpgme_t): New prototype.
    
    Signed-off-by: Justus Winter <justus at g10code.com>

diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 0d1322c..e3c761d 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -79,37 +79,6 @@
 %typemap(newfree) char * "free($1);";
 %newobject gpgme_data_release_and_get_mem;
 
-%{
-/* Convert object to a pointer to gpgme type */
-PyObject* object_to_gpgme_t(PyObject* input, const char* objtype, int argnum) {
-  PyObject *pyname = NULL, *pypointer = NULL;
-  pyname = PyObject_CallMethod(input, "_getctype", NULL);
-  if (pyname && PyUnicode_Check(pyname))
-    {
-      if (strcmp(PyUnicode_AsUTF8(pyname), objtype) != 0)
-        {
-          PyErr_Format(PyExc_TypeError,
-                       "arg %d: Expected value of type %s, but got %s",
-                       argnum, objtype, PyUnicode_AsUTF8(pyname));
-          Py_DECREF(pyname);
-          return NULL;
-        }
-    }
-  else
-    return NULL;
-
-  Py_DECREF(pyname);
-  pypointer = PyObject_GetAttrString(input, "wrapped");
-  if (pypointer == NULL) {
-    PyErr_Format(PyExc_TypeError,
-		 "arg %d: Use of uninitialized Python object %s",
-		 argnum, objtype);
-    return NULL;
-  }
-  return pypointer;
-}
-%}
-
 %typemap(arginit) gpgme_key_t [] {
   $1 = NULL;
 }
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 4b6ac31..3ecbacc 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -146,7 +146,43 @@ PyObject *pygpgme_raise_callback_exception(PyObject *self)
   return Py_None;
 }
 #undef EXCINFO
+

+/* Argument conversion.  */
+
+/* Convert object to a pointer to gpgme type, generic version.  */
+PyObject *
+object_to_gpgme_t(PyObject *input, const char *objtype, int argnum)
+{
+  PyObject *pyname = NULL, *pypointer = NULL;
+  pyname = PyObject_CallMethod(input, "_getctype", NULL);
+  if (pyname && PyUnicode_Check(pyname))
+    {
+      if (strcmp(PyUnicode_AsUTF8(pyname), objtype) != 0)
+        {
+          PyErr_Format(PyExc_TypeError,
+                       "arg %d: Expected value of type %s, but got %s",
+                       argnum, objtype, PyUnicode_AsUTF8(pyname));
+          Py_DECREF(pyname);
+          return NULL;
+        }
+    }
+  else
+    return NULL;
+
+  Py_DECREF(pyname);
+  pypointer = PyObject_GetAttrString(input, "wrapped");
+  if (pypointer == NULL) {
+    PyErr_Format(PyExc_TypeError,
+		 "arg %d: Use of uninitialized Python object %s",
+		 argnum, objtype);
+    return NULL;
+  }
+  return pypointer;
+}
+
+

 
+/* Callback support.  */
 static gpgme_error_t pyPassphraseCb(void *hook,
 				    const char *uid_hint,
 				    const char *passphrase_info,
diff --git a/lang/python/helpers.h b/lang/python/helpers.h
index 1bfcaa6..952b31f 100644
--- a/lang/python/helpers.h
+++ b/lang/python/helpers.h
@@ -28,6 +28,8 @@
 void pygpgme_exception_init(void);
 gpgme_error_t pygpgme_exception2code(void);
 
+PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum);
+
 void pygpgme_clear_generic_cb(PyObject **cb);
 PyObject *pygpgme_raise_callback_exception(PyObject *self);
 

commit 89eb0cd4d65bc033ed6342810b26232797482d64
Author: Justus Winter <justus at g10code.com>
Date:   Thu Jun 2 15:32:35 2016 +0200

    python: Fix error handling.
    
    * lang/python/gpgme.i (object_to_gpgme_t): Properly propagate
    exceptions.
    
    Signed-off-by: Justus Winter <justus at g10code.com>

diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 4c020ff..0d1322c 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -96,14 +96,7 @@ PyObject* object_to_gpgme_t(PyObject* input, const char* objtype, int argnum) {
         }
     }
   else
-    {
-      PyErr_Format(PyExc_TypeError,
-                   "Protocol violation: Expected an instance of type str "
-                   "from _getctype, but got %s",
-                   pyname == NULL ? "NULL"
-                   : (pyname == Py_None ? "None" : pyname->ob_type->tp_name));
-      return NULL;
-    }
+    return NULL;
 
   Py_DECREF(pyname);
   pypointer = PyObject_GetAttrString(input, "wrapped");

commit ae06f7c2fe0e49baeab5a827dc38ba8c57a6404c
Author: Justus Winter <justus at g10code.com>
Date:   Thu Jun 2 15:18:40 2016 +0200

    python: Initialize GPGME for the user.
    
    * lang/python/pyme/core.py: Call 'check_version' and explain why.
    * lang/python/tests/support.py (init_gpgme): Drop call here.
    
    Signed-off-by: Justus Winter <justus at g10code.com>

diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index 8deeb90..71c6828 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -572,6 +572,12 @@ def get_protocol_name(proto):
 def check_version(version=None):
     return pygpgme.gpgme_check_version(version)
 
+# check_version also makes sure that several subsystems are properly
+# initialized, and it must be run at least once before invoking any
+# other function.  We do it here so that the user does not have to do
+# it unless she really wants to check for a certain version.
+check_version()
+
 def engine_check_version (proto):
     try:
         errorcheck(pygpgme.gpgme_engine_check_version(proto))
diff --git a/lang/python/tests/support.py b/lang/python/tests/support.py
index 99d96cf..8bafea8 100644
--- a/lang/python/tests/support.py
+++ b/lang/python/tests/support.py
@@ -23,7 +23,6 @@ def make_filename(name):
     return os.path.join(os.environ['top_srcdir'], 'tests', 'gpg', name)
 
 def init_gpgme(proto):
-    core.check_version()
     core.engine_check_version(proto)
 
 verbose = int(os.environ.get('verbose', 0)) > 1

commit 2055a63605207bbf3b5ce1aa7bf159e7b83e87e6
Author: Justus Winter <justus at g10code.com>
Date:   Mon Jun 6 14:12:09 2016 +0200

    python: Drop obsolete VCS keywords.
    
    --
    Signed-off-by: Justus Winter <justus at g10code.com>

diff --git a/lang/python/examples/delkey.py b/lang/python/examples/delkey.py
index 773b262..3fb71eb 100755
--- a/lang/python/examples/delkey.py
+++ b/lang/python/examples/delkey.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This program is free software; you can redistribute it and/or
diff --git a/lang/python/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py
index 331933e..5e12676 100755
--- a/lang/python/examples/encrypt-to-all.py
+++ b/lang/python/examples/encrypt-to-all.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/examples/exportimport.py b/lang/python/examples/exportimport.py
index 6c7d5b8..d0e1fa8 100755
--- a/lang/python/examples/exportimport.py
+++ b/lang/python/examples/exportimport.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This program is free software; you can redistribute it and/or
diff --git a/lang/python/examples/genkey.py b/lang/python/examples/genkey.py
index bc70833..d5a88a7 100755
--- a/lang/python/examples/genkey.py
+++ b/lang/python/examples/genkey.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/examples/inter-edit.py b/lang/python/examples/inter-edit.py
index f00928b..dcb47c2 100644
--- a/lang/python/examples/inter-edit.py
+++ b/lang/python/examples/inter-edit.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2005 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This program is free software; you can redistribute it and/or modify
diff --git a/lang/python/examples/sign.py b/lang/python/examples/sign.py
index ca43958..b6a1d3c 100755
--- a/lang/python/examples/sign.py
+++ b/lang/python/examples/sign.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2002 John Goerzen
 # <jgoerzen at complete.org>
 #
diff --git a/lang/python/examples/signverify.py b/lang/python/examples/signverify.py
index 292deee..6a63112 100755
--- a/lang/python/examples/signverify.py
+++ b/lang/python/examples/signverify.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This program is free software; you can redistribute it and/or modify
diff --git a/lang/python/examples/simple.py b/lang/python/examples/simple.py
index faa0f4c..29a4449 100755
--- a/lang/python/examples/simple.py
+++ b/lang/python/examples/simple.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2005 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/examples/t-edit.py b/lang/python/examples/t-edit.py
index 5c35f96..4a3b8ac 100644
--- a/lang/python/examples/t-edit.py
+++ b/lang/python/examples/t-edit.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2005 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This program is free software; you can redistribute it and/or modify
diff --git a/lang/python/examples/verifydetails.py b/lang/python/examples/verifydetails.py
index 0aa6f15..99e5e0a 100755
--- a/lang/python/examples/verifydetails.py
+++ b/lang/python/examples/verifydetails.py
@@ -6,7 +6,6 @@
 #   added output of signature.summary (another bitfield)
 #   printing signature bitfield in hex format
 #
-# $Id$
 #
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (c) 2008 Bernhard Reiter <bernhard at intevation.de>
diff --git a/lang/python/gpgme-h-clean.py b/lang/python/gpgme-h-clean.py
index 5313a83..261e7b6 100755
--- a/lang/python/gpgme-h-clean.py
+++ b/lang/python/gpgme-h-clean.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
 #    This library is free software; you can redistribute it and/or
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 87fe90d..4c020ff 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -1,5 +1,4 @@
 /*
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 4bbc298..4b6ac31 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -1,5 +1,4 @@
 /*
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/helpers.h b/lang/python/helpers.h
index 8b90008..1bfcaa6 100644
--- a/lang/python/helpers.h
+++ b/lang/python/helpers.h
@@ -1,5 +1,4 @@
 /*
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/__init__.py b/lang/python/pyme/__init__.py
index 7716e51..d06866a 100644
--- a/lang/python/pyme/__init__.py
+++ b/lang/python/pyme/__init__.py
@@ -1,4 +1,3 @@
-# $Id$
 """
 Pyme: GPGME Interface for Python
 Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
diff --git a/lang/python/pyme/callbacks.py b/lang/python/pyme/callbacks.py
index 3a507b9..09f8226 100644
--- a/lang/python/pyme/callbacks.py
+++ b/lang/python/pyme/callbacks.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/__init__.py b/lang/python/pyme/constants/__init__.py
index b557da8..2e91d76 100644
--- a/lang/python/pyme/constants/__init__.py
+++ b/lang/python/pyme/constants/__init__.py
@@ -1,4 +1,3 @@
-# $Id$
 
 from pyme import util
 util.process_constants('GPGME_', globals())
diff --git a/lang/python/pyme/constants/data/__init__.py b/lang/python/pyme/constants/data/__init__.py
index f172e0c..ed7b67b 100644
--- a/lang/python/pyme/constants/data/__init__.py
+++ b/lang/python/pyme/constants/data/__init__.py
@@ -1,4 +1,3 @@
-# $Id$
 
 from . import encoding
 __all__ = ['encoding']
diff --git a/lang/python/pyme/constants/data/encoding.py b/lang/python/pyme/constants/data/encoding.py
index d1485ad..ac6079c 100644
--- a/lang/python/pyme/constants/data/encoding.py
+++ b/lang/python/pyme/constants/data/encoding.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/event.py b/lang/python/pyme/constants/event.py
index 1a4fac6..3ce234e 100644
--- a/lang/python/pyme/constants/event.py
+++ b/lang/python/pyme/constants/event.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/import.py b/lang/python/pyme/constants/import.py
index 628177d..a824f7b 100644
--- a/lang/python/pyme/constants/import.py
+++ b/lang/python/pyme/constants/import.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/keylist/__init__.py b/lang/python/pyme/constants/keylist/__init__.py
index 2f2152a..8752bb2 100644
--- a/lang/python/pyme/constants/keylist/__init__.py
+++ b/lang/python/pyme/constants/keylist/__init__.py
@@ -1,4 +1,3 @@
-# $Id$
 
 from . import mode
 __all__ = ['mode']
diff --git a/lang/python/pyme/constants/keylist/mode.py b/lang/python/pyme/constants/keylist/mode.py
index 137ce17..7c3cd09 100644
--- a/lang/python/pyme/constants/keylist/mode.py
+++ b/lang/python/pyme/constants/keylist/mode.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/md.py b/lang/python/pyme/constants/md.py
index 2db01a5..700d872 100644
--- a/lang/python/pyme/constants/md.py
+++ b/lang/python/pyme/constants/md.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/pk.py b/lang/python/pyme/constants/pk.py
index 5f39235..f0e3937 100644
--- a/lang/python/pyme/constants/pk.py
+++ b/lang/python/pyme/constants/pk.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/protocol.py b/lang/python/pyme/constants/protocol.py
index 3d3c790..e9f9a48 100644
--- a/lang/python/pyme/constants/protocol.py
+++ b/lang/python/pyme/constants/protocol.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/sig/__init__.py b/lang/python/pyme/constants/sig/__init__.py
index 2f2152a..8752bb2 100644
--- a/lang/python/pyme/constants/sig/__init__.py
+++ b/lang/python/pyme/constants/sig/__init__.py
@@ -1,4 +1,3 @@
-# $Id$
 
 from . import mode
 __all__ = ['mode']
diff --git a/lang/python/pyme/constants/sig/mode.py b/lang/python/pyme/constants/sig/mode.py
index fa090ab..631bd7c 100644
--- a/lang/python/pyme/constants/sig/mode.py
+++ b/lang/python/pyme/constants/sig/mode.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/sigsum.py b/lang/python/pyme/constants/sigsum.py
index 7be40ae..5164347 100644
--- a/lang/python/pyme/constants/sigsum.py
+++ b/lang/python/pyme/constants/sigsum.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/status.py b/lang/python/pyme/constants/status.py
index 60c0c90..c1859b2 100644
--- a/lang/python/pyme/constants/status.py
+++ b/lang/python/pyme/constants/status.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/constants/validity.py b/lang/python/pyme/constants/validity.py
index 9590b27..fde2eee 100644
--- a/lang/python/pyme/constants/validity.py
+++ b/lang/python/pyme/constants/validity.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index cc262c9..8deeb90 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/errors.py b/lang/python/pyme/errors.py
index f716421..f96877b 100644
--- a/lang/python/pyme/errors.py
+++ b/lang/python/pyme/errors.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/util.py b/lang/python/pyme/util.py
index d52cd1f..5527a1a 100644
--- a/lang/python/pyme/util.py
+++ b/lang/python/pyme/util.py
@@ -1,4 +1,3 @@
-# $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
diff --git a/lang/python/pyme/version.py b/lang/python/pyme/version.py
index 3dd8d3a..b60f50c 100644
--- a/lang/python/pyme/version.py
+++ b/lang/python/pyme/version.py
@@ -1,4 +1,3 @@
-# $Id$
 
 productname = 'pyme'
 versionstr = "0.9.1"
diff --git a/lang/python/setup.py b/lang/python/setup.py
index 374df5d..0d90403 100755
--- a/lang/python/setup.py
+++ b/lang/python/setup.py
@@ -1,6 +1,5 @@
 #!/usr/bin/env python3
 
-# $Id$
 
 # Module: installer
 # COPYRIGHT #

-----------------------------------------------------------------------

Summary of changes:
 lang/python/examples/delkey.py                  |   1 -
 lang/python/examples/encrypt-to-all.py          |   1 -
 lang/python/examples/exportimport.py            |   1 -
 lang/python/examples/genkey.py                  |   1 -
 lang/python/examples/inter-edit.py              |   1 -
 lang/python/examples/sign.py                    |   1 -
 lang/python/examples/signverify.py              |   1 -
 lang/python/examples/simple.py                  |   1 -
 lang/python/examples/t-edit.py                  |   1 -
 lang/python/examples/verifydetails.py           |   1 -
 lang/python/gpgme-h-clean.py                    |   1 -
 lang/python/gpgme.i                             |  52 +++---------
 lang/python/helpers.c                           | 102 +++++++++++++++++++++++-
 lang/python/helpers.h                           |   5 +-
 lang/python/pyme/__init__.py                    |   1 -
 lang/python/pyme/callbacks.py                   |   1 -
 lang/python/pyme/constants/__init__.py          |   1 -
 lang/python/pyme/constants/data/__init__.py     |   1 -
 lang/python/pyme/constants/data/encoding.py     |   1 -
 lang/python/pyme/constants/event.py             |   1 -
 lang/python/pyme/constants/import.py            |   1 -
 lang/python/pyme/constants/keylist/__init__.py  |   1 -
 lang/python/pyme/constants/keylist/mode.py      |   1 -
 lang/python/pyme/constants/md.py                |   1 -
 lang/python/pyme/constants/pk.py                |   1 -
 lang/python/pyme/constants/protocol.py          |   1 -
 lang/python/pyme/constants/sig/__init__.py      |   1 -
 lang/python/pyme/constants/sig/mode.py          |   1 -
 lang/python/pyme/constants/sigsum.py            |   1 -
 lang/python/pyme/constants/status.py            |   1 -
 lang/python/pyme/constants/validity.py          |   1 -
 lang/python/pyme/core.py                        |   7 +-
 lang/python/pyme/errors.py                      |   1 -
 lang/python/pyme/util.py                        |   1 -
 lang/python/pyme/version.py                     |   1 -
 lang/python/setup.py                            |   1 -
 lang/python/tests/Makefile.am                   |   3 +-
 lang/python/tests/support.py                    |   1 -
 lang/python/tests/{t-wait.py => t-idiomatic.py} |  37 +++++----
 39 files changed, 145 insertions(+), 94 deletions(-)
 copy lang/python/tests/{t-wait.py => t-idiomatic.py} (53%)


hooks/post-receive
-- 
GnuPG Made Easy
http://git.gnupg.org




More information about the Gnupg-commits mailing list