[git] GPGME - branch, justus/pyme3, created. gpgme-1.6.0-36-gbbeee5e

by Justus Winter cvs at cvs.gnupg.org
Wed May 11 13:55:31 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, justus/pyme3 has been created
        at  bbeee5e1a060f2d1e37a08220eb552cf4673a058 (commit)

- Log -----------------------------------------------------------------
commit bbeee5e1a060f2d1e37a08220eb552cf4673a058
Author: Justus Winter <justus at gnupg.org>
Date:   Wed May 11 13:51:40 2016 +0200

    python: Fix simple example.
    
    * lang/python/examples/simple.py: Flush stdout, encode name as
    UTF-8 before passing it to GPGME.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/examples/simple.py b/lang/python/examples/simple.py
index 5693d40..739291e 100755
--- a/lang/python/examples/simple.py
+++ b/lang/python/examples/simple.py
@@ -36,8 +36,9 @@ c.set_armor(1)
 # Set up the recipients.
 
 sys.stdout.write("Enter name of your recipient: ")
+sys.stdout.flush()
 name = sys.stdin.readline().strip()
-c.op_keylist_start(name, 0)
+c.op_keylist_start(name.encode(), 0)
 r = c.op_keylist_next()
 
 if r == None:

commit a29babd07cf9f9625d2b5aa2eb6b7bc9d1828359
Author: Justus Winter <justus at gnupg.org>
Date:   Wed May 11 11:42:00 2016 +0200

    python: Integrate into the build system.
    
    * configure.ac: Make Python bindings configurable, add new Makefile.
    * lang/python/Makefile.am: New file.
    * lang/python/setup.py: Integrate into the build system.
    * m4/ax_pkg_swig.m4: New file from the autoconf archive.
    * m4/m4_ax_swig_python.m4: Likewise.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/configure.ac b/configure.ac
index 55c388e..96df059 100644
--- a/configure.ac
+++ b/configure.ac
@@ -587,6 +587,32 @@ AC_SUBST(emacs_local_vars_begin, [['Local][ ][Variables:']])
 AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
 AC_SUBST(emacs_local_vars_end, ['End:'])
 
+# Bindings.
+AC_ARG_ENABLE([python],
+              AC_HELP_STRING([--enable-python],
+                             [build the Python3 bindings]),
+              [enable_python=$enableval],
+	      [enable_python=auto])
+AX_PKG_SWIG
+if test -z "$SWIG"; then
+  if test $enable_python = yes; then
+    die=yes
+    AC_MSG_NOTICE([[
+***
+*** You need SWIG to build the Python bindings.
+***]])
+  else
+    enable_python=no
+  fi
+else
+  if test $enable_python = auto; then
+    enable_python=yes
+  fi
+fi
+if test $enable_python = yes; then
+  AM_PATH_PYTHON([3.2])
+  AX_SWIG_PYTHON
+fi
 
 # Last check.
 die=no
@@ -632,7 +658,8 @@ AC_CONFIG_FILES(Makefile src/Makefile
                 src/versioninfo.rc
                 src/gpgme.h)
 AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
-AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
+AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd
+                 lang/python/Makefile])
 AC_OUTPUT
 
 echo "
@@ -644,6 +671,8 @@ echo "
         UI Server:       $uiserver
         FD Passing:      $use_descriptor_passing
         GPGME Pthread:   $have_pthread
+
+        Python bindings: $enable_python
 "
 if test "x${gpg_config_script_warn}" != x; then
 cat <<G10EOF
diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am
new file mode 100644
index 0000000..a1a2bc9
--- /dev/null
+++ b/lang/python/Makefile.am
@@ -0,0 +1,53 @@
+# Makefile.am for the Python bindings.
+# 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/>.
+
+EXTRA_DIST = README.rst
+
+# Cleanup gpgme.h from deprecated functions and typedefs.
+gpgme.h: ../../src/gpgme.h
+	$(PYTHON) $(srcdir)/gpgme-h-clean.py $< >$@
+
+# For VPATH builds we need to copy some files because Python's
+# distutils are not VPATH-aware.
+copystamp: $(srcdir)/pyme $(srcdir)/helpers.c $(srcdir)/helpers.h
+	if test "$(srcdir)" != "$(builddir)" ; then cp -a $^ . ; fi
+	touch $@
+
+gpgme_wrap.c pyme/pygpgme.py: gpgme.i gpgme.h copystamp
+	$(SWIG) -python -py3 $(SWIGOPT) \
+	  -o $(builddir)/gpgme_wrap.c -outdir $(builddir)/pyme \
+	  $<
+
+all-local: gpgme_wrap.c pyme/pygpgme.py copystamp
+	$(PYTHON) $(srcdir)/setup.py build --verbose
+
+clean-local:
+	rm -rf -- build gpgme.h gpgme_wrap.c pyme/pygpgme.py copystamp
+	if test "$(srcdir)" != "$(builddir)" ; then \
+	  rm -rf pyme helpers.c helpers.h ; \
+	fi
+
+install-exec-local:
+	$(PYTHON) $(srcdir)/setup.py install \
+	  --prefix $(DESTDIR)$(prefix) \
+	  --record $(DESTDIR)$(pythondir)/pyme/install_files.txt \
+	  --verbose
+
+uninstall-local:
+	xargs <$(DESTDIR)$(pythondir)/pyme/install_files.txt -- rm -rf --
+	rm -rf -- $(DESTDIR)$(pythondir)/pyme
diff --git a/lang/python/setup.py b/lang/python/setup.py
index 562c08f..f3d9143 100755
--- a/lang/python/setup.py
+++ b/lang/python/setup.py
@@ -22,31 +22,23 @@
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
 # END OF COPYRIGHT #
 
-
 from distutils.core import setup, Extension
-from distutils.command.build_ext import build_ext
 import os, os.path, sys
 import subprocess
 
-sys.path.append("pyme")
-import version
+sys.path.insert(0, os.path.dirname(__file__))
+import pyme.version
 
 def getconfig(what):
-    try:
-        process = subprocess.Popen(["gpgme-config", "--%s" % what],
-                                   stdout=subprocess.PIPE)
-        confdata = process.communicate()[0]
-    except OSError as e:
-         if e.errno == os.errno.ENOENT:
-             raise RuntimeError("Could not call gpgme-config, perhaps install libgpgme-dev")
-         else:
-             raise
+    confdata = subprocess.Popen(["../../src/gpgme-config", "--%s" % what],
+                                stdout=subprocess.PIPE).communicate()[0]
     return [x for x in confdata.decode('utf-8').split() if x != '']
 
 include_dirs = [os.getcwd()]
 define_macros = []
-library_dirs = []
+library_dirs = ["../../src/.libs"] # XXX uses libtool internals
 libs = getconfig('libs')
+
 for item in getconfig('cflags'):
     if item.startswith("-I"):
         include_dirs.append(item[2:])
@@ -82,16 +74,6 @@ if uname_s.startswith("MINGW32"):
                library_dirs.append(os.path.join(tgt, item))
                break
 
-try:
-    subprocess.call("swig")
-except OSError as e:
-    if e.errno == os.errno.ENOENT:
-        raise RuntimeError("Could not call swig, perhaps install swig.")
-    else:
-        raise
-
-subprocess.call(["make swig"], shell=True)
-
 swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"],
                   include_dirs = include_dirs,
                   define_macros = define_macros,
@@ -99,15 +81,15 @@ swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"],
                   extra_link_args = libs)
 
 setup(name = "pyme",
-      version = version.versionstr,
-      description = version.description,
-      author = version.author,
-      author_email = version.author_email,
-      url = version.homepage,
+      version=pyme.version.versionstr,
+      description=pyme.version.description,
+      author=pyme.version.author,
+      author_email=pyme.version.author_email,
+      url=pyme.version.homepage,
       ext_modules=[swige],
       packages = ['pyme', 'pyme.constants', 'pyme.constants.data',
                   'pyme.constants.keylist', 'pyme.constants.sig'],
-      license = version.copyright + \
+      license=pyme.version.copyright + \
                 ", Licensed under the GPL version 2 and the LGPL version 2.1"
 )
 
diff --git a/m4/ax_pkg_swig.m4 b/m4/ax_pkg_swig.m4
new file mode 100644
index 0000000..d836eec
--- /dev/null
+++ b/m4/ax_pkg_swig.m4
@@ -0,0 +1,135 @@
+# ===========================================================================
+#        http://www.gnu.org/software/autoconf-archive/ax_pkg_swig.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PKG_SWIG([major.minor.micro], [action-if-found], [action-if-not-found])
+#
+# DESCRIPTION
+#
+#   This macro searches for a SWIG installation on your system. If found,
+#   then SWIG is AC_SUBST'd; if not found, then $SWIG is empty.  If SWIG is
+#   found, then SWIG_LIB is set to the SWIG library path, and AC_SUBST'd.
+#
+#   You can use the optional first argument to check if the version of the
+#   available SWIG is greater than or equal to the value of the argument. It
+#   should have the format: N[.N[.N]] (N is a number between 0 and 999. Only
+#   the first N is mandatory.) If the version argument is given (e.g.
+#   1.3.17), AX_PKG_SWIG checks that the swig package is this version number
+#   or higher.
+#
+#   As usual, action-if-found is executed if SWIG is found, otherwise
+#   action-if-not-found is executed.
+#
+#   In configure.in, use as:
+#
+#     AX_PKG_SWIG(1.3.17, [], [ AC_MSG_ERROR([SWIG is required to build..]) ])
+#     AX_SWIG_ENABLE_CXX
+#     AX_SWIG_MULTI_MODULE_SUPPORT
+#     AX_SWIG_PYTHON
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Sebastian Huber <sebastian-huber at web.de>
+#   Copyright (c) 2008 Alan W. Irwin
+#   Copyright (c) 2008 Rafael Laboissiere <rafael at laboissiere.net>
+#   Copyright (c) 2008 Andrew Collier
+#   Copyright (c) 2011 Murray Cumming <murrayc at openismus.com>
+#
+#   This program 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.
+#
+#   This program 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 General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 11
+
+AC_DEFUN([AX_PKG_SWIG],[
+        # Ubuntu has swig 2.0 as /usr/bin/swig2.0
+        AC_PATH_PROGS([SWIG],[swig swig2.0])
+        if test -z "$SWIG" ; then
+                m4_ifval([$3],[$3],[:])
+        elif test -n "$1" ; then
+                AC_MSG_CHECKING([SWIG version])
+                [swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`]
+                AC_MSG_RESULT([$swig_version])
+                if test -n "$swig_version" ; then
+                        # Calculate the required version number components
+                        [required=$1]
+                        [required_major=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_major" ; then
+                                [required_major=0]
+                        fi
+                        [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+                        [required_minor=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_minor" ; then
+                                [required_minor=0]
+                        fi
+                        [required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
+                        [required_patch=`echo $required | sed 's/[^0-9].*//'`]
+                        if test -z "$required_patch" ; then
+                                [required_patch=0]
+                        fi
+                        # Calculate the available version number components
+                        [available=$swig_version]
+                        [available_major=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_major" ; then
+                                [available_major=0]
+                        fi
+                        [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+                        [available_minor=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_minor" ; then
+                                [available_minor=0]
+                        fi
+                        [available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
+                        [available_patch=`echo $available | sed 's/[^0-9].*//'`]
+                        if test -z "$available_patch" ; then
+                                [available_patch=0]
+                        fi
+                        # Convert the version tuple into a single number for easier comparison.
+                        # Using base 100 should be safe since SWIG internally uses BCD values
+                        # to encode its version number.
+                        required_swig_vernum=`expr $required_major \* 10000 \
+                            \+ $required_minor \* 100 \+ $required_patch`
+                        available_swig_vernum=`expr $available_major \* 10000 \
+                            \+ $available_minor \* 100 \+ $available_patch`
+
+                        if test $available_swig_vernum -lt $required_swig_vernum; then
+                                AC_MSG_WARN([SWIG version >= $1 is required.  You have $swig_version.])
+                                SWIG=''
+                                m4_ifval([$3],[$3],[])
+                        else
+                                AC_MSG_CHECKING([for SWIG library])
+                                SWIG_LIB=`$SWIG -swiglib`
+                                AC_MSG_RESULT([$SWIG_LIB])
+                                m4_ifval([$2],[$2],[])
+                        fi
+                else
+                        AC_MSG_WARN([cannot determine SWIG version])
+                        SWIG=''
+                        m4_ifval([$3],[$3],[])
+                fi
+        fi
+        AC_SUBST([SWIG_LIB])
+])
diff --git a/m4/m4_ax_swig_python.m4 b/m4/m4_ax_swig_python.m4
new file mode 100644
index 0000000..bf22558
--- /dev/null
+++ b/m4/m4_ax_swig_python.m4
@@ -0,0 +1,64 @@
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_swig_python.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_SWIG_PYTHON([use-shadow-classes = {no, yes}])
+#
+# DESCRIPTION
+#
+#   Checks for Python and provides the $(AX_SWIG_PYTHON_CPPFLAGS), and
+#   $(AX_SWIG_PYTHON_OPT) output variables.
+#
+#   $(AX_SWIG_PYTHON_OPT) contains all necessary SWIG options to generate
+#   code for Python. Shadow classes are enabled unless the value of the
+#   optional first argument is exactly 'no'. If you need multi module
+#   support (provided by the AX_SWIG_MULTI_MODULE_SUPPORT macro) use
+#   $(AX_SWIG_PYTHON_LIBS) to link against the appropriate library. It
+#   contains the SWIG Python runtime library that is needed by the type
+#   check system for example.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Sebastian Huber <sebastian-huber at web.de>
+#   Copyright (c) 2008 Alan W. Irwin
+#   Copyright (c) 2008 Rafael Laboissiere <rafael at laboissiere.net>
+#   Copyright (c) 2008 Andrew Collier
+#
+#   This program 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.
+#
+#   This program 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 General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 10
+
+AU_ALIAS([SWIG_PYTHON], [AX_SWIG_PYTHON])
+AC_DEFUN([AX_SWIG_PYTHON],[
+        AC_REQUIRE([AX_PKG_SWIG])
+        AC_REQUIRE([AX_PYTHON_DEVEL])
+        test "x$1" != "xno" || swig_shadow=" -noproxy"
+        AC_SUBST([AX_SWIG_PYTHON_OPT],[-python$swig_shadow])
+        AC_SUBST([AX_SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS])
+])

commit 11392a80d9a85bcd8718b105e6d58038e61beaac
Author: Justus Winter <justus at gnupg.org>
Date:   Tue May 10 14:45:44 2016 +0200

    python: PEP8 fixes.
    
    Cherry picked from 0267c151.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/examples/delkey.py b/lang/python/examples/delkey.py
index dfcc5ea..600e0c0 100755
--- a/lang/python/examples/delkey.py
+++ b/lang/python/examples/delkey.py
@@ -2,10 +2,10 @@
 # $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
-#    This program 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.
+#    This program 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.
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -14,7 +14,8 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+#    02111-1307 USA
 
 # Sample of key deletion
 # It deletes keys for joe at example.org generated by genkey.pl script
@@ -23,9 +24,10 @@ from pyme import core
 
 core.check_version(None)
 
-# Note that we need to collect all keys out of the iterator return by c.op_keylist_all()
-# method before starting to delete them. If you delete a key in the middle of iteration
-# c.op_keylist_next() will raise INV_VALUE exception
+# Note that we need to collect all keys out of the iterator return by
+# c.op_keylist_all() method before starting to delete them. If you
+# delete a key in the middle of iteration c.op_keylist_next() will
+# raise INV_VALUE exception
 
 c = core.Context()
 # 0 in keylist means to list not only public but secret keys as well.
diff --git a/lang/python/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py
index c890df4..672e661 100755
--- a/lang/python/examples/encrypt-to-all.py
+++ b/lang/python/examples/encrypt-to-all.py
@@ -3,10 +3,10 @@
 # Copyright (C) 2008 Igor Belyi <belyi at users.sourceforge.net>
 # Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
 #
-#    This program 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.
+#    This program 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.
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,7 +15,8 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+#    02111-1307 USA
 
 """
 This program will try to encrypt a simple message to each key on your
@@ -46,11 +47,11 @@ for key in c.op_keylist_all(None, 0):
         valid = 0
         for subkey in key.subkeys:
             keyid = subkey.keyid
-            if keyid == None:
+            if keyid is None:
                 break
             can_encrypt = subkey.can_encrypt
             valid += can_encrypt
-            print("     Subkey %s: encryption %s" % \
+            print("     Subkey %s: encryption %s" %
                   (keyid, can_encrypt and "enabled" or "disabled"))
     except UnicodeEncodeError as e:
         print(e)
@@ -64,5 +65,3 @@ passno = 0
 
 print("Encrypting to %d recipients" % len(names))
 print(sendto(names))
-
-
diff --git a/lang/python/examples/exportimport.py b/lang/python/examples/exportimport.py
index 54204fb..6c7d5b8 100755
--- a/lang/python/examples/exportimport.py
+++ b/lang/python/examples/exportimport.py
@@ -2,10 +2,10 @@
 # $Id$
 # Copyright (C) 2004,2008 Igor Belyi <belyi at users.sourceforge.net>
 #
-#    This program 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.
+#    This program 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.
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -14,7 +14,8 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+#    02111-1307 USA
 
 # Sample of export and import of keys
 # It uses keys for joe at example.org generated by genkey.pl script
@@ -33,7 +34,7 @@ print(" - Export %s's public keys - " % user)
 c.op_export(user, 0, expkey)
 
 # print out exported data to see how it looks in armor.
-expkey.seek(0,0)
+expkey.seek(0, 0)
 expstring = expkey.read()
 if expstring:
     print(expstring)
@@ -46,10 +47,10 @@ else:
 # Note that since joe's key has private part as well we can only delete
 # both of them. As a side effect joe won't have private key for this
 # exported public one. If it's Ok with you uncomment the next 4 lines.
-#print " - Delete %s's public keys - " % user
-#for thekey in [x for x in c.op_keylist_all(user, 0)]:
-#    if not thekey.secret:
-#        c.op_delete(thekey, 1)
+# print " - Delete %s's public keys - " % user
+# for thekey in [x for x in c.op_keylist_all(user, 0)]:
+#     if not thekey.secret:
+#         c.op_delete(thekey, 1)
 
 
 # initialize import data from a string as if it was read from a file.
@@ -63,11 +64,11 @@ result = c.op_import_result()
 if result:
     print(" - Result of the import - ")
     for k in dir(result):
-        if not k in result.__dict__ and not k.startswith("_"):
+        if k not in result.__dict__ and not k.startswith("_"):
             if k == "imports":
                 print(k, ":")
                 for impkey in result.__getattr__(k):
-                    print("    fpr=%s result=%d status=%x" % \
+                    print("    fpr=%s result=%d status=%x" %
                           (impkey.fpr, impkey.result, impkey.status))
             else:
                 print(k, ":", result.__getattr__(k))
diff --git a/lang/python/examples/inter-edit.py b/lang/python/examples/inter-edit.py
index f97232b..32f8edd 100644
--- a/lang/python/examples/inter-edit.py
+++ b/lang/python/examples/inter-edit.py
@@ -14,9 +14,11 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
-#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+#    02111-1307 USA
 
-import os, sys
+import os
+import sys
 from pyme import core
 from pyme.core import Data, Context
 from pyme.constants import status
@@ -29,12 +31,13 @@ for name in dir(status):
     if not name.startswith('__') and name != "util":
         stat2str[getattr(status, name)] = name
 
+
 # Print the output received since the last prompt before giving the new prompt
 def edit_fnc(stat, args, helper):
     global stat_strings
     try:
         while True:
-            helper["data"].seek(helper["skip"],0)
+            helper["data"].seek(helper["skip"], 0)
             data = helper["data"].read()
             helper["skip"] += len(data)
             print(data)
@@ -53,5 +56,5 @@ else:
     helper = {"skip": 0, "data": out}
     c.op_edit(key, edit_fnc, helper, out)
     print("[-- Final output --]")
-    out.seek(helper["skip"],0)
+    out.seek(helper["skip"], 0)
     print(out.read())

commit aade53a12b9716997684b872bc2ac87229f73fb3
Author: Justus Winter <justus at gnupg.org>
Date:   Tue May 10 13:30:30 2016 +0200

    python: Delete trailing whitespace.
    
    --
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/README.rst b/lang/python/README.rst
index 4cad03a..57df1f2 100644
--- a/lang/python/README.rst
+++ b/lang/python/README.rst
@@ -22,7 +22,7 @@ Authors
 * Martin Albrecht, `PyME 0.9+ <https://bitbucket.org/malb/pyme>`_, 2014 to present.
 * Ben McGinnes, `PyME Python 3 Port <https://git.gnupg.org/gpgme.git/lang/py3-pyme>`_, 2015 to present.
 
-  
+
 ------------
 Mailing List
 ------------
diff --git a/lang/python/docs/old-commits.log b/lang/python/docs/old-commits.log
index 4d2bfe0..0db59a0 100644
--- a/lang/python/docs/old-commits.log
+++ b/lang/python/docs/old-commits.log
@@ -4,7 +4,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 03:04:19 2015 +1000
 
     Merge pull request #4 from Hasimir/master
-    
+
     history
 
 commit 2036f1a0a670a0561993e195c458059220b36114
@@ -19,7 +19,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 02:52:23 2015 +1000
 
     Added a short history
-    
+
     * A (very) brief summary of the project's history since 2002.
     * Deals with why the commit log in the GPGME repo does not include the
       history of PyME.
@@ -36,7 +36,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 02:21:34 2015 +1000
 
     Merge pull request #3 from Hasimir/master
-    
+
     Version release preparation
 
 commit 7c37a27a6845c58222d4d947c2efbe38e955b612
@@ -51,7 +51,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 02:09:44 2015 +1000
 
     TODO update
-    
+
     * Removed reference to GitHub, replaced with impending new home at gnupg.org.
 
  docs/TODO.rst | 4 ++--
@@ -62,7 +62,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 02:00:44 2015 +1000
 
     Version bump
-    
+
     * Bumped version number to 0.9.1 to keep it somewhat in line with the
       existing PyME project, even though there will be some divergence at
       some point (or even re-merging, depending on how many of the Python 3
@@ -80,7 +80,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 01:48:01 2015 +1000
 
     README preparation.
-    
+
     * Changes in preparation for impending move of code to the GnuPG git
       server as a part of GPGME.
 
@@ -92,7 +92,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Wed May 6 01:43:53 2015 +1000
 
     TODO moved to docs
-    
+
     * As it says.
 
  TODO.rst      | 25 -------------------------
@@ -114,7 +114,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 14:59:44 2015 +1000
 
     Merge pull request #2 from Hasimir/master
-    
+
     Minor editing.
 
 commit 44837f6e50fc539c86aef1f75a6a3538b02029ea
@@ -122,7 +122,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 14:56:55 2015 +1000
 
     Minor editing.
-    
+
     * Fixed another URL.
     * Changed Py3 version's version number to v0.9.1-beta0.
 
@@ -135,7 +135,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 14:26:11 2015 +1000
 
     Merge pull request #1 from Hasimir/master
-    
+
     Links
 
 commit 48eb1856cb0739cc9f0b9084da9d965e1fc7fddd
@@ -143,7 +143,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 14:22:30 2015 +1000
 
     Links
-    
+
     * Fixed URLs for authors.
     * Updated my entry to point to github location.
     ** I strongly suspect the result of this work will be concurrent
@@ -157,9 +157,9 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 11:29:00 2015 +1000
 
     Explicit over Implicit ...
-    
+
     ... isn't just for code.
-    
+
     * Removed the 2to3 working directory and its contents.
     * Made the README.rst file a little more clear that this branch is for
       Python 3 (set Python 3.2 as a fairly arbitrary requirement for the
@@ -176,7 +176,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 11:19:41 2015 +1000
 
     Added authors.
-    
+
     * In alphabetical order.
     * Mine will need updating once Martin and I have decided what to do
       regarding the two main branches.
@@ -189,7 +189,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 10:23:00 2015 +1000
 
     Docs and other things.
-    
+
     * Now able to import pyme.core without error, indicates port process is
       successful.
     * Code is *not* compatible with the Python 2 version.
@@ -227,7 +227,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 10:08:22 2015 +1000
 
     Bytes vs. Unicode
-    
+
     * Trying PyBytes instead of PyUnicode.
 
  gpgme.i   | 14 +++++++-------
@@ -239,7 +239,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 09:22:58 2015 +1000
 
     String to Unicode
-    
+
     * Replaced all instances of PyString with PyUnicode (and hoping there's
       no byte data in there).
 
@@ -252,7 +252,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 09:17:06 2015 +1000
 
     PyInt_AsLong
-    
+
     * Replaced all instances of PyInt with PyLong, as per C API docs.
 
  gpgme.i   | 4 ++--
@@ -264,7 +264,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 05:59:36 2015 +1000
 
     Import correction
-    
+
     * Once pygpgme.py is generated and moved, it will be in the right
       directory for the explicit "from . import pygpgme" to be correct.
 
@@ -303,10 +303,10 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 04:53:21 2015 +1000
 
     Pet Peeve
-    
+
     def pet_peeve(self):
         peeve = print("people who don't press return after a colon!")
-    
+
     FFS!
 
  pyme/core.py | 5 +++--
@@ -371,7 +371,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sun May 3 03:51:48 2015 +1000
 
     Linking swig to py3
-    
+
     * Changed the swig invocations to run with the -python -py3 flags explicitly.
 
  Makefile | 4 ++--
@@ -383,7 +383,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 11:12:00 2015 +1000
 
     String fun
-    
+
     * streamlined confdata details, including decoding strom binary to string.
 
  setup.py | 4 +---
@@ -394,7 +394,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 10:46:59 2015 +1000
 
     Open File
-    
+
     * Removed deprecated file() and replaced with open().
 
  examples/PyGtkGpgKeys.py | 2 +-
@@ -407,7 +407,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 10:36:15 2015 +1000
 
     print() fix
-    
+
     * Makefile includes a python print, changed from statement to function.
 
  Makefile | 2 +-
@@ -418,7 +418,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 10:28:42 2015 +1000
 
     Updated Makefile
-    
+
     * set make to use python3 instead.
     * This will mean a successful port may need to be maintained seperately
       from the original python2 code instead of merged, but ought to be able
@@ -434,7 +434,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 10:15:20 2015 +1000
 
     Env and a little license issue
-    
+
     * Updated all the /usr/bin/env paths to point to python3.
     * Also fixed the hard coded /usr/bin/python paths.
     * Updated part of setup.py which gave the impression this package was
@@ -463,7 +463,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 08:50:54 2015 +1000
 
     Removed extraneous files.
-    
+
     * The two .bak files.
 
  pyme/errors.py.bak |  46 ---------------------
@@ -475,7 +475,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 08:19:37 2015 +1000
 
     Added TODO.org
-    
+
     * TODO list in Emacs org-mode.
     * Will eventually be removed along with this entire directory when the
       porting process is complete.
@@ -488,7 +488,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 07:58:40 2015 +1000
 
     2to3 conversion of remaining files
-    
+
     * Ran the extended version against all the unmodified python files.
     * Only pyme/errors.py required additional work.
 
@@ -502,7 +502,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Sat May 2 07:50:39 2015 +1000
 
     2to3 conversion of setup.py
-    
+
     * Ran extended 2to3 command to produce python 3 code for setup.py.
     * Effectively testing for what to run against the other originally
       unmodified py2 files.
@@ -517,7 +517,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Fri May 1 21:50:07 2015 +1000
 
     Removing 2to3 generated .bak files.
-    
+
     * Not really needed with a real VCS, but couldn't hurt to have them for
       a couple of revisions.  ;)
 
@@ -548,7 +548,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Fri May 1 21:45:50 2015 +1000
 
     2to3 conversion log
-    
+
     * The output of the command to convert the code from Python 2 to 3.
     * Note: this contains the list of files which were not modified and
       which will or may need to be modified.
@@ -561,7 +561,7 @@ Author: Ben McGinnes <ben at adversary.org>
 Date:   Fri May 1 21:36:58 2015 +1000
 
     2to3 conversion of pyme master
-    
+
     * Branch from commit 459f3eca659b4949e394c4a032d9ce2053e6c721
     * Ran this: or x in `find . | egrep .py$` ; do 2to3 -w $x; done ;
     * Multiple files not modified, will record elsewhere (see next commit).
@@ -614,7 +614,7 @@ Author: Martin Albrecht <martinralbrecht at googlemail.com>
 Date:   Wed Jul 9 10:48:33 2014 +0100
 
     Merged in jerrykan/pyme/fix_setup_26 (pull request #1)
-    
+
     Provide support for using setup.py with Python v2.6
 
 commit dae7f14a54e6c2bde0ad4da7308cc7fc0d0c0469
@@ -622,7 +622,7 @@ Author: John Kristensen <john.kristensen at dpipwe.tas.gov.au>
 Date:   Wed Jul 9 15:54:39 2014 +1000
 
     Provide support for using setup.py with Python v2.6
-    
+
     The setup.py script uses subprocess.check_output() which was introduced
     in Python v2.7. The equivalent functionality can be achieved without
     adding much extra code and provide support for Python v2.6.
@@ -701,7 +701,7 @@ Author: Martin Albrecht <martinralbrecht at googlemail.com>
 Date:   Sat May 10 15:41:02 2014 +0100
 
     Merge branch 'master' of bitbucket.org:malb/pyme
-    
+
     Conflicts:
     	setup.py
 
@@ -1018,10 +1018,10 @@ Author: Martin Albrecht <martinralbrecht at googlemail.com>
 Date:   Mon Jan 6 17:44:20 2014 +0100
 
     fixing op_export_keys()
-    
+
     the conversion of gpgme_key_t [] was restricted to gpgme_key_t [] with the
     name recv, i.e. only the use-cases of encryption were covered.
-    
+
     see: http://sourceforge.net/mailarchive/forum.php?forum_name=pyme-help&max_rows=25&style=nested&viewmonth=201309
 
  pyme/gpgme.i | 6 +++---
@@ -1618,9 +1618,9 @@ Date:   Fri Jun 10 03:01:22 2005 +0000
     Update 'docs' rule in Makefile to build packages first to ensure that
     documentation is build for the current version of pyme and not for the
     installed one.
-    
+
     Added 'callbacks' into the list of visible pyme modules (__all__ var.)
-    
+
     Slightly updated INSTALL file.
 
  pyme/INSTALL          | 11 ++++++++---
@@ -2100,7 +2100,7 @@ Author: belyi <devnull at localhost>
 Date:   Fri Mar 18 19:09:33 2005 +0000
 
     Added package building for python2.4
-    
+
     Updated copyright notes to include myslef and avoid confusion who's the
     maintainer. In John's own words: "I'd prefer to just step out of the picture".
     Jonh's copyright notice left intact.
diff --git a/lang/python/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py
index 8f9d250..c890df4 100755
--- a/lang/python/examples/encrypt-to-all.py
+++ b/lang/python/examples/encrypt-to-all.py
@@ -54,7 +54,7 @@ for key in c.op_keylist_all(None, 0):
                   (keyid, can_encrypt and "enabled" or "disabled"))
     except UnicodeEncodeError as e:
         print(e)
-    
+
     if valid:
         names.append(key)
     else:
diff --git a/lang/python/examples/signverify.py b/lang/python/examples/signverify.py
index f8804ca..7194157 100755
--- a/lang/python/examples/signverify.py
+++ b/lang/python/examples/signverify.py
@@ -43,7 +43,7 @@ if not c.signers_enum(0):
 passlist = {
     b"<joe at example.org>": b"Crypt0R0cks"
     }
-    
+
 # callback will return password based on the e-mail listed in the hint.
 c.set_passphrase_cb(lambda x,y,z: passlist[x[x.rindex("<"):]])
 
diff --git a/lang/python/examples/t-edit.py b/lang/python/examples/t-edit.py
index 6c53342..5553190 100644
--- a/lang/python/examples/t-edit.py
+++ b/lang/python/examples/t-edit.py
@@ -32,7 +32,7 @@ class KeyEditor:
         out.seek(0,0)
         print(out.read(), end=' ')
         print("[-- Code: %d, %s --]" % (status, args))
-    
+
         if args == "keyedit.prompt":
             result = self.steps[self.step]
             self.step += 1
diff --git a/lang/python/examples/testCMSgetkey.py b/lang/python/examples/testCMSgetkey.py
index 53fdef7..7c95301 100644
--- a/lang/python/examples/testCMSgetkey.py
+++ b/lang/python/examples/testCMSgetkey.py
@@ -22,7 +22,7 @@ from pyme.constants import protocol
 def printgetkeyresults(keyfpr):
     """Run gpgme_get_key()."""
 
-    # gpgme_check_version() necessary for initialisation according to 
+    # gpgme_check_version() necessary for initialisation according to
     # gogme 1.1.6 and this is not done automatically in pyme-0.7.0
     print("gpgme version:", core.check_version(None))
     c = core.Context()
@@ -45,5 +45,3 @@ def main():
 
 if __name__ == "__main__":
     main()
-
- 	  	 
diff --git a/lang/python/examples/verifydetails.py b/lang/python/examples/verifydetails.py
index 0d47ba5..a8d840e 100755
--- a/lang/python/examples/verifydetails.py
+++ b/lang/python/examples/verifydetails.py
@@ -96,5 +96,3 @@ def main():
 
 if __name__ == "__main__":
     main()
-
- 	  	 
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 0115caf..87efce7 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -241,14 +241,14 @@ gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status,
     func = pyopaque;
     pyargs = PyTuple_New(2);
   }
-  
+
   PyTuple_SetItem(pyargs, 0, PyLong_FromLong((long) status));
   PyTuple_SetItem(pyargs, 1, PyBytes_FromString(args));
   if (dataarg) {
     Py_INCREF(dataarg);		/* Because GetItem doesn't give a ref but SetItem taketh away */
     PyTuple_SetItem(pyargs, 2, dataarg);
   }
-  
+
   retval = PyObject_CallObject(func, pyargs);
   Py_DECREF(pyargs);
   if (PyErr_Occurred()) {
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index b53dbdd..96c844f 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -66,7 +66,7 @@ static gpgme_error_t pyPassphraseCb(void *hook,
   PyObject *args = NULL;
   PyObject *retval = NULL;
   PyObject *dataarg = NULL;
-  gpgme_error_t err_status = 0;  
+  gpgme_error_t err_status = 0;
 
   pygpgme_exception_init();
 
@@ -119,7 +119,7 @@ static void pyProgressCb(void *hook, const char *what, int type, int current,
 			 int total) {
   PyObject *func = NULL, *dataarg = NULL, *args = NULL, *retval = NULL;
   PyObject *pyhook = (PyObject *) hook;
-  
+
   if (PyTuple_Check(pyhook)) {
     func = PyTuple_GetItem(pyhook, 0);
     dataarg = PyTuple_GetItem(pyhook, 1);
@@ -137,7 +137,7 @@ static void pyProgressCb(void *hook, const char *what, int type, int current,
     Py_INCREF(dataarg);		/* Because GetItem doesn't give a ref but SetItem taketh away */
     PyTuple_SetItem(args, 4, dataarg);
   }
-  
+
   retval = PyObject_CallObject(func, args);
   Py_DECREF(args);
   Py_XDECREF(retval);
diff --git a/lang/python/pyme/callbacks.py b/lang/python/pyme/callbacks.py
index e3c810c..3a507b9 100644
--- a/lang/python/pyme/callbacks.py
+++ b/lang/python/pyme/callbacks.py
@@ -33,7 +33,7 @@ def passphrase_stdin(hint, desc, prev_bad, hook=None):
 def progress_stdout(what, type, current, total, hook=None):
     print("PROGRESS UPDATE: what = %s, type = %d, current = %d, total = %d" %\
           (what, type, current, total))
-    
+
 def readcb_fh(count, hook):
     """A callback for data.  hook should be a Python file-like object."""
     if count:
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index b03cedb..09f0fa8 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -37,7 +37,7 @@ class Context(GpgmeWrapper):
 
     def _getctype(self):
         return 'gpgme_ctx_t'
-    
+
     def _getnameprepend(self):
         return 'gpgme_'
 
@@ -106,7 +106,7 @@ class Context(GpgmeWrapper):
         if key:
             key.__del__ = lambda self: pygpgme.gpgme_key_unref(self)
             return key
-    
+
     def get_key(self, fpr, secret):
         """Return the key corresponding to the fingerprint 'fpr'"""
         ptr = pygpgme.new_gpgme_key_t_p()
@@ -147,7 +147,7 @@ class Context(GpgmeWrapper):
         desc, a string describing the passphrase it needs;
         prev_bad, a boolean equal True if this is a call made after
         unsuccessful previous attempt.
-        
+
         If hook has a value other than None it will be passed into the func
         as a forth argument.
 
@@ -206,7 +206,7 @@ class Context(GpgmeWrapper):
         context = pygpgme.gpgme_wait(self.wrapped, ptr, hang)
         status = pygpgme.gpgme_error_t_p_value(ptr)
         pygpgme.delete_gpgme_error_t_p(ptr)
-        
+
         if context == None:
             errorcheck(status)
             return None
@@ -219,7 +219,7 @@ class Context(GpgmeWrapper):
             raise ValueError("op_edit: First argument cannot be None")
         opaquedata = (func, fnc_value)
         errorcheck(pygpgme.gpgme_op_edit(self.wrapped, key, opaquedata, out))
-    
+
 class Data(GpgmeWrapper):
     """From the GPGME C manual:
 
@@ -236,7 +236,7 @@ class Data(GpgmeWrapper):
 
     def _getctype(self):
         return 'gpgme_data_t'
-    
+
     def _getnameprepend(self):
         return 'gpgme_data_'
 
@@ -247,7 +247,7 @@ class Data(GpgmeWrapper):
                name == 'gpgme_data_seek':
             return 0
         return 1
-    
+
     def __init__(self, string = None, file = None, offset = None,
                  length = None, cbs = None):
         """Initialize a new gpgme_data_t object.
@@ -360,7 +360,7 @@ class Data(GpgmeWrapper):
         """This wraps the GPGME gpgme_data_new_from_fd() function.
         The argument "file" may be a file-like object, supporting the fileno()
         call and the mode attribute."""
-        
+
         tmp = pygpgme.new_gpgme_data_t_p()
         fp = pygpgme.fdopen(file.fileno(), file.mode)
         if fp == None:
@@ -375,18 +375,18 @@ class Data(GpgmeWrapper):
         new_from_fd() method since in python there's not difference
         between file stream and file descriptor"""
         self.new_from_fd(file)
-    
+
     def write(self, buffer):
         errorcheck(pygpgme.gpgme_data_write(self.wrapped, buffer, len(buffer)))
 
     def read(self, size = -1):
         """Read at most size bytes, returned as a string.
-        
+
         If the size argument is negative or omitted, read until EOF is reached.
 
         Returns the data read, or the empty string if there was no data
         to read before EOF was reached."""
-        
+
         if size == 0:
             return ''
 
@@ -445,11 +445,11 @@ def set_locale(category, value):
 def wait(hang):
     """Wait for asynchronous call on any Context  to finish.
     Wait forever if hang is True.
-    
+
     For finished anynch calls it returns a tuple (status, context):
         status  - status return by asnynchronous call.
         context - context which caused this call to return.
-        
+
     Please read the GPGME manual of more information."""
     ptr = pygpgme.new_gpgme_error_t_p()
     context = pygpgme.gpgme_wait(None, ptr, hang)
diff --git a/lang/python/pyme/errors.py b/lang/python/pyme/errors.py
index 0ad22f2..37d0fe6 100644
--- a/lang/python/pyme/errors.py
+++ b/lang/python/pyme/errors.py
@@ -22,7 +22,7 @@ class GPGMEError(Exception):
     def __init__(self, error = None, message = None):
         self.error = error
         self.message = message
-    
+
     def getstring(self):
         message = "%s: %s" % (pygpgme.gpgme_strsource(self.error),
                               pygpgme.gpgme_strerror(self.error))
@@ -35,7 +35,7 @@ class GPGMEError(Exception):
 
     def getsource(self):
         return pygpgme.gpgme_err_source(self.error)
-    
+
     def __str__(self):
         return "%s (%d,%d)"%(self.getstring(), self.getsource(), self.getcode())
 
diff --git a/lang/python/pyme/util.py b/lang/python/pyme/util.py
index c5f02a9..32e2f55 100644
--- a/lang/python/pyme/util.py
+++ b/lang/python/pyme/util.py
@@ -28,7 +28,7 @@ def process_constants(starttext, dict):
             continue
         name = identifier[index:]
         dict[name] = getattr(pygpgme, identifier)
-        
+
 class GpgmeWrapper(object):
     """Base class all Pyme wrappers for GPGME functionality.  Not to be
     instantiated directly."""
@@ -51,7 +51,7 @@ class GpgmeWrapper(object):
 
     def _getctype(self):
         raise NotImplementedException
-    
+
     def __getattr__(self, name):
         """On-the-fly function generation."""
         if name[0] == '_' or self._getnameprepend() == None:
diff --git a/lang/python/setup.py b/lang/python/setup.py
index b0ed3b2..562c08f 100755
--- a/lang/python/setup.py
+++ b/lang/python/setup.py
@@ -60,7 +60,7 @@ for item in getconfig('cflags'):
 # Adjust include and library locations in case of win32
 uname_s = os.popen("uname -s").read()
 if uname_s.startswith("MINGW32"):
-   mnts = [x.split()[0:3:2] for x in os.popen("mount").read().split("\n") if x] 
+   mnts = [x.split()[0:3:2] for x in os.popen("mount").read().split("\n") if x]
    tmplist = sorted([(len(x[1]), x[1], x[0]) for x in mnts])
    tmplist.reverse()
    extra_dirs = []
@@ -89,9 +89,9 @@ except OSError as e:
         raise RuntimeError("Could not call swig, perhaps install swig.")
     else:
         raise
-    
+
 subprocess.call(["make swig"], shell=True)
-               
+
 swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"],
                   include_dirs = include_dirs,
                   define_macros = define_macros,
@@ -106,7 +106,7 @@ setup(name = "pyme",
       url = version.homepage,
       ext_modules=[swige],
       packages = ['pyme', 'pyme.constants', 'pyme.constants.data',
-                  'pyme.constants.keylist', 'pyme.constants.sig'], 
+                  'pyme.constants.keylist', 'pyme.constants.sig'],
       license = version.copyright + \
                 ", Licensed under the GPL version 2 and the LGPL version 2.1"
 )

commit 000dbb5b9a56f9b9143ca2555999a8f83ec88536
Author: Justus Winter <justus at gnupg.org>
Date:   Tue May 10 13:21:34 2016 +0200

    python: Drop Debian packaging.
    
    --
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/python/debian/README.Debian b/lang/python/debian/README.Debian
deleted file mode 100644
index c520ba6..0000000
--- a/lang/python/debian/README.Debian
+++ /dev/null
@@ -1,6 +0,0 @@
-Please note:
-
-The documentation for this package is in python-pyme-doc. 
-
-When you install that package, you can find the documentation and examples
-in /usr/share/doc/python-pyme-doc.
diff --git a/lang/python/debian/changelog b/lang/python/debian/changelog
deleted file mode 100644
index 7071d79..0000000
--- a/lang/python/debian/changelog
+++ /dev/null
@@ -1,93 +0,0 @@
-pyme (0.8.1) unstable; urgency=low
-
-  * Add issuing gpgme_key_unref() in __del__ method for keys return from
-    op_keylist_next() and get_key() calls to avoid memory leak in a long
-    living contexts.
-  * Add missing (get|set)_engine_info() methods for the Context class and
-    set_engine_info() and set_locale() for the core module.
-  * Remove support for python2.3 in debian packaging since neither testing
-    nor unstable dist contains packages for it now.
-  * Update verifydetails.py for the new way structure types are handled;
-    add testCMSgetkey.py example for CMS keys. Thanks to Bernhard Reiter.
-  * Fix hang on Windows caused by passphrase_cb.
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Mon, 24 Nov 2008 01:56:19 -0500
-
-pyme (0.8.0) unstable; urgency=low
-
-  * Make all structure types containing 'next' field to be return as lists.
-    This includes when they are return from a function and when they are
-    member of another structure. Update all examples to use that updated
-    API.
-  * Switch to using pycentral for debian packages.
-  * Add rules to update PY file location in generated doc files.
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Sat, 29 Mar 2008 18:43:27 -0400
-
-pyme (0.7.1) unstable; urgency=low
-
-  * Add rules to build Windows version of the package.
-  * Move all constants into pyme.constants package to avoid conflicts with
-    Python reserved words. Previous location are preserved for now for
-    compatibility purposes.
-  * Change name of the internal GPGME wrapper package from 'gpgme' to
-    'pygpgme' to avoid conflict with gpgme.dll library on Windows.
-  * Fix gpgme.i to work with SWIG version >= 1.3.28
-  * Add core.check_version(None) call to the examples to do the proper
-    startup initialization.
-  * Add verifydetails.py example provided by Bernhard Reiter.
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Sun, 09 Mar 2008 21:35:16 -0400
-
-pyme (0.7.0) unstable; urgency=low
-
-  * Removed workaround in Context.wait()
-  * Updated core.wait() to return Context() object instead of GPGME pointer.
-  * Made Context.wait() and Context.op_edit() throw exception on failure.
-  * Added exception handling for passphrase_cb and edit_cb
-  * Allowed using None to unset previous callback and made hook argument
-    optional
-  * Fixed passphrase_cb to pass previously missing prev_bad argument as well
-  * Got rid of "warning: function declaration isn't a prototype" in helpers.h
-  * License on PyMe is changed from GPL to LGPL. Examples keep GPL license.
-  * Added pygpa.py example to illustrate gpa functionality using python.
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Wed, 27 Apr 2005 17:22:11 -0400
-
-pyme (0.6.2) unstable; urgency=low
-
-  * Implemented Context.wait() method more sutable for asynch calls in Python.
-  * Implemented Context.op_edit() to support editing operations
-  * Fixed string representation of the errors.GPGMEError exception
-  * Added a nice example: PyGtkGpgKeys.py (requires Glade2 and PyGTK 2.4).
-    No match to gpa, seahorse, or kgpg of course. :)
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Sat, 26 Mar 2005 11:42:27 -0500
-
-pyme (0.6.1) unstable; urgency=low
-
-  * Added package building for python2.4
-  * Updated copyright notes to avoid confusion for John's sake.
-  * Cleanup deprecated functions and typedefs from gpgme.h before building.
-
- -- Igor Belyi <belyi at users.sourceforge.net>  Fri, 18 Mar 2005 20:41:52 -0500
-
-pyme (0.6.0) unstable; urgency=low
-
-  * Added support for libgpgme11 revision of GPGME library.
-
- -- Igor Belyi <belyi at katehok.homeip.net>  Sun, 14 Mar 2004 16:37:39 -0500
-	
-pyme (0.5.1) unstable; urgency=low
-
-  * Added support for read callbacks for data objects, and an 
-    example for such to callbacks module.
-
- -- John Goerzen <jgoerzen at complete.org>  Thu, 21 Nov 2002 08:29:52 -0600
-
-pyme (0.5.0) unstable; urgency=low
-
-  * Initial Release.  Closes: #169807.
-
- -- John Goerzen <jgoerzen at complete.org>  Tue, 19 Nov 2002 14:32:36 -0600
-
diff --git a/lang/python/debian/control b/lang/python/debian/control
deleted file mode 100644
index 56885f9..0000000
--- a/lang/python/debian/control
+++ /dev/null
@@ -1,34 +0,0 @@
-Source: pyme
-Section: python
-Priority: optional
-Maintainer: Igor Belyi <belyi at users.sourceforge.net>
-Build-Depends: debhelper (>> 4.1.67), python-central, python2.4-dev, python2.5-dev, libgpgme11-dev, swig
-XS-Python-Version: 2.4, 2.5
-Standards-Version: 3.5.2
-
-Package: python-pyme-doc
-Architecture: all
-XB-Python-Version: ${python:Versions}
-Description: Python interface to the GPGME GnuPG encryption library
- This package contains the documentation for Pyme.
-
-Package: python-pyme
-Architecture: any
-Provides: ${python:Provides}
-Depends: ${python:Depends}, ${shlibs:Depends}
-XB-Python-Version: ${python:Versions}
-Suggests: python-pyme-doc
-Description: Python interface to the GPGME GnuPG encryption library
- Pyme is, for the most part, a direct interface to the C GPGME
- library.  However, it is re-packaged in a more Pythonic way --
- object-oriented with classes and modules.  Take a look at the classes
- defined here -- they correspond directly to certain object types in GPGME
- for C.
- .
- Features:
- * Feature-rich, full implementation of the GPGME library. Supports all
-   GPGME features. Callback functions may be written in pure Python.
- * Ability to sign, encrypt, decrypt, and verify data.
- * Ability to list keys, export and import keys, and manage the keyring.
- * Fully object-oriented with convenient classes and modules.
-
diff --git a/lang/python/debian/copyright b/lang/python/debian/copyright
deleted file mode 100644
index 5ea64b3..0000000
--- a/lang/python/debian/copyright
+++ /dev/null
@@ -1,25 +0,0 @@
-The maintainance of the package was taken over by Igor Belyi
-<belyi at users.sourceforge.net> on Thu, 18 March 2004 <time unknown>
-This package was debianized by John Goerzen <jgoerzen at complete.org> on
-Tue, 19 Nov 2002 14:32:36 -0600.
-
-Copyright:
-
-Copyright (C) 2004 Igor Belyi <belyi at users.sourceforge.net>
-Copyright (C) 2002 John Goerzen <jgoerzen at complete.org>
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   This library 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 library; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
-
-Debian users may find the GPL in /usr/share/common-licenses/LGPL-2.1
diff --git a/lang/python/debian/docs b/lang/python/debian/docs
deleted file mode 100644
index 9f2374e..0000000
--- a/lang/python/debian/docs
+++ /dev/null
@@ -1,2 +0,0 @@
-debian/README.Debian
-doc
diff --git a/lang/python/debian/examples b/lang/python/debian/examples
deleted file mode 100644
index 636d928..0000000
--- a/lang/python/debian/examples
+++ /dev/null
@@ -1,2 +0,0 @@
-examples/*.py
-examples/*.glade
diff --git a/lang/python/debian/rules b/lang/python/debian/rules
deleted file mode 100755
index 0e886ee..0000000
--- a/lang/python/debian/rules
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/make -f
-# Sample debian/rules that uses debhelper.
-# GNU copyright 1997 to 1999 by Joey Hess.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# This is the debhelper compatibility version to use.
-export DH_COMPAT=4
-
-
-ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
-	CFLAGS += -g
-endif
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
-	INSTALL_PROGRAM += -s
-endif
-
-configure: configure-stamp
-configure-stamp:
-	dh_testdir
-	# Add here commands to configure the package.
-
-	touch configure-stamp
-
-
-build: build-stamp
-
-build-stamp: configure-stamp 
-	dh_testdir
-
-	# Add here commands to compile the package.
-	$(MAKE) swig
-	python2.4 setup.py build -b `pwd`/build
-	python2.5 setup.py build -b `pwd`/build
-	$(MAKE) PYSRCURL=file:/usr/share/pyshared/\\1 docs
-	touch build-stamp
-
-clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp configure-stamp
-
-	# Add here commands to clean up after the build process.
-	-$(MAKE) reallyclean
-
-	dh_clean
-
-install: build
-	dh_testdir
-	dh_testroot
-	dh_clean -k
-	dh_installdirs
-
-	# Add here commands to install the package into debian/pyme.
-	python2.4 setup.py install --root=`pwd`/debian/python-pyme
-	python2.5 setup.py install --root=`pwd`/debian/python-pyme
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-	dh_testdir
-	dh_testroot
-	dh_installdocs -i -XCVS
-	dh_installexamples -i -XCVS
-	dh_installmenu -i
-	dh_installchangelogs -i
-	dh_link -i
-	dh_strip -i
-	dh_compress -i
-	dh_fixperms -i
-	dh_pycentral -i
-	dh_installdeb -i
-	dh_shlibdeps -i
-	dh_gencontrol -i
-	dh_md5sums -i
-	dh_builddeb -i
-
-# Build architecture-dependent files here.
-binary-arch: build install
-	dh_testdir
-	dh_testroot
-	dh_installdocs -a -XCVS
-	dh_installexamples -a -XCVS
-	dh_installmenu -a
-	dh_installchangelogs -a
-	dh_link -a
-	dh_strip -a
-	dh_compress -a
-	dh_fixperms -a
-	dh_pycentral -a
-	dh_installdeb -a
-	dh_shlibdeps -a
-	dh_gencontrol -a
-	dh_md5sums -a
-	dh_builddeb -a
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure

commit f4ba16b31ea282d0787a40be3f37b951584143a1
Author: Justus Winter <justus at gnupg.org>
Date:   Tue May 10 13:19:26 2016 +0200

    python: Rename bindings.
    
    --
    Signed-off-by: Justus Winter <justus at gnupg.org>

diff --git a/lang/Makefile.am b/lang/Makefile.am
index 29446eb..8eb461d 100644
--- a/lang/Makefile.am
+++ b/lang/Makefile.am
@@ -17,6 +17,6 @@
 # License along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 
-SUBDIRS = cl, py3-pyme
+SUBDIRS = cl python
 
 EXTRA_DIST = README
diff --git a/lang/py3-pyme/COPYING b/lang/python/COPYING
similarity index 100%
rename from lang/py3-pyme/COPYING
rename to lang/python/COPYING
diff --git a/lang/py3-pyme/COPYING.LESSER b/lang/python/COPYING.LESSER
similarity index 100%
rename from lang/py3-pyme/COPYING.LESSER
rename to lang/python/COPYING.LESSER
diff --git a/lang/py3-pyme/INSTALL b/lang/python/INSTALL
similarity index 100%
rename from lang/py3-pyme/INSTALL
rename to lang/python/INSTALL
diff --git a/lang/py3-pyme/MANIFEST.in b/lang/python/MANIFEST.in
similarity index 100%
rename from lang/py3-pyme/MANIFEST.in
rename to lang/python/MANIFEST.in
diff --git a/lang/py3-pyme/README.rst b/lang/python/README.rst
similarity index 100%
rename from lang/py3-pyme/README.rst
rename to lang/python/README.rst
diff --git a/lang/py3-pyme/debian/README.Debian b/lang/python/debian/README.Debian
similarity index 100%
rename from lang/py3-pyme/debian/README.Debian
rename to lang/python/debian/README.Debian
diff --git a/lang/py3-pyme/debian/changelog b/lang/python/debian/changelog
similarity index 100%
rename from lang/py3-pyme/debian/changelog
rename to lang/python/debian/changelog
diff --git a/lang/py3-pyme/debian/control b/lang/python/debian/control
similarity index 100%
rename from lang/py3-pyme/debian/control
rename to lang/python/debian/control
diff --git a/lang/py3-pyme/debian/copyright b/lang/python/debian/copyright
similarity index 100%
rename from lang/py3-pyme/debian/copyright
rename to lang/python/debian/copyright
diff --git a/lang/py3-pyme/debian/docs b/lang/python/debian/docs
similarity index 100%
rename from lang/py3-pyme/debian/docs
rename to lang/python/debian/docs
diff --git a/lang/py3-pyme/debian/examples b/lang/python/debian/examples
similarity index 100%
rename from lang/py3-pyme/debian/examples
rename to lang/python/debian/examples
diff --git a/lang/py3-pyme/debian/rules b/lang/python/debian/rules
similarity index 100%
rename from lang/py3-pyme/debian/rules
rename to lang/python/debian/rules
diff --git a/lang/py3-pyme/docs/Short_History.rst b/lang/python/docs/Short_History.rst
similarity index 100%
rename from lang/py3-pyme/docs/Short_History.rst
rename to lang/python/docs/Short_History.rst
diff --git a/lang/py3-pyme/docs/TODO.rst b/lang/python/docs/TODO.rst
similarity index 100%
rename from lang/py3-pyme/docs/TODO.rst
rename to lang/python/docs/TODO.rst
diff --git a/lang/py3-pyme/docs/old-commits.log b/lang/python/docs/old-commits.log
similarity index 100%
rename from lang/py3-pyme/docs/old-commits.log
rename to lang/python/docs/old-commits.log
diff --git a/lang/py3-pyme/examples/Examples.rst b/lang/python/examples/Examples.rst
similarity index 100%
rename from lang/py3-pyme/examples/Examples.rst
rename to lang/python/examples/Examples.rst
diff --git a/lang/py3-pyme/examples/delkey.py b/lang/python/examples/delkey.py
similarity index 100%
rename from lang/py3-pyme/examples/delkey.py
rename to lang/python/examples/delkey.py
diff --git a/lang/py3-pyme/examples/encrypt-to-all.py b/lang/python/examples/encrypt-to-all.py
similarity index 100%
rename from lang/py3-pyme/examples/encrypt-to-all.py
rename to lang/python/examples/encrypt-to-all.py
diff --git a/lang/py3-pyme/examples/exportimport.py b/lang/python/examples/exportimport.py
similarity index 100%
rename from lang/py3-pyme/examples/exportimport.py
rename to lang/python/examples/exportimport.py
diff --git a/lang/py3-pyme/examples/genkey.py b/lang/python/examples/genkey.py
similarity index 100%
rename from lang/py3-pyme/examples/genkey.py
rename to lang/python/examples/genkey.py
diff --git a/lang/py3-pyme/examples/inter-edit.py b/lang/python/examples/inter-edit.py
similarity index 100%
rename from lang/py3-pyme/examples/inter-edit.py
rename to lang/python/examples/inter-edit.py
diff --git a/lang/py3-pyme/examples/sign.py b/lang/python/examples/sign.py
similarity index 100%
rename from lang/py3-pyme/examples/sign.py
rename to lang/python/examples/sign.py
diff --git a/lang/py3-pyme/examples/signverify.py b/lang/python/examples/signverify.py
similarity index 100%
rename from lang/py3-pyme/examples/signverify.py
rename to lang/python/examples/signverify.py
diff --git a/lang/py3-pyme/examples/simple.py b/lang/python/examples/simple.py
similarity index 100%
rename from lang/py3-pyme/examples/simple.py
rename to lang/python/examples/simple.py
diff --git a/lang/py3-pyme/examples/t-edit.py b/lang/python/examples/t-edit.py
similarity index 100%
rename from lang/py3-pyme/examples/t-edit.py
rename to lang/python/examples/t-edit.py
diff --git a/lang/py3-pyme/examples/testCMSgetkey.py b/lang/python/examples/testCMSgetkey.py
similarity index 100%
rename from lang/py3-pyme/examples/testCMSgetkey.py
rename to lang/python/examples/testCMSgetkey.py
diff --git a/lang/py3-pyme/examples/verifydetails.py b/lang/python/examples/verifydetails.py
similarity index 100%
rename from lang/py3-pyme/examples/verifydetails.py
rename to lang/python/examples/verifydetails.py
diff --git a/lang/py3-pyme/gpgme-h-clean.py b/lang/python/gpgme-h-clean.py
similarity index 100%
rename from lang/py3-pyme/gpgme-h-clean.py
rename to lang/python/gpgme-h-clean.py
diff --git a/lang/py3-pyme/gpgme.i b/lang/python/gpgme.i
similarity index 100%
rename from lang/py3-pyme/gpgme.i
rename to lang/python/gpgme.i
diff --git a/lang/py3-pyme/helpers.c b/lang/python/helpers.c
similarity index 100%
rename from lang/py3-pyme/helpers.c
rename to lang/python/helpers.c
diff --git a/lang/py3-pyme/helpers.h b/lang/python/helpers.h
similarity index 100%
rename from lang/py3-pyme/helpers.h
rename to lang/python/helpers.h
diff --git a/lang/py3-pyme/pyme/__init__.py b/lang/python/pyme/__init__.py
similarity index 100%
rename from lang/py3-pyme/pyme/__init__.py
rename to lang/python/pyme/__init__.py
diff --git a/lang/py3-pyme/pyme/callbacks.py b/lang/python/pyme/callbacks.py
similarity index 100%
rename from lang/py3-pyme/pyme/callbacks.py
rename to lang/python/pyme/callbacks.py
diff --git a/lang/py3-pyme/pyme/constants/__init__.py b/lang/python/pyme/constants/__init__.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/__init__.py
rename to lang/python/pyme/constants/__init__.py
diff --git a/lang/py3-pyme/pyme/constants/data/__init__.py b/lang/python/pyme/constants/data/__init__.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/data/__init__.py
rename to lang/python/pyme/constants/data/__init__.py
diff --git a/lang/py3-pyme/pyme/constants/data/encoding.py b/lang/python/pyme/constants/data/encoding.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/data/encoding.py
rename to lang/python/pyme/constants/data/encoding.py
diff --git a/lang/py3-pyme/pyme/constants/event.py b/lang/python/pyme/constants/event.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/event.py
rename to lang/python/pyme/constants/event.py
diff --git a/lang/py3-pyme/pyme/constants/import.py b/lang/python/pyme/constants/import.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/import.py
rename to lang/python/pyme/constants/import.py
diff --git a/lang/py3-pyme/pyme/constants/sig/__init__.py b/lang/python/pyme/constants/keylist/__init__.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/sig/__init__.py
rename to lang/python/pyme/constants/keylist/__init__.py
diff --git a/lang/py3-pyme/pyme/constants/keylist/mode.py b/lang/python/pyme/constants/keylist/mode.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/keylist/mode.py
rename to lang/python/pyme/constants/keylist/mode.py
diff --git a/lang/py3-pyme/pyme/constants/md.py b/lang/python/pyme/constants/md.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/md.py
rename to lang/python/pyme/constants/md.py
diff --git a/lang/py3-pyme/pyme/constants/pk.py b/lang/python/pyme/constants/pk.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/pk.py
rename to lang/python/pyme/constants/pk.py
diff --git a/lang/py3-pyme/pyme/constants/protocol.py b/lang/python/pyme/constants/protocol.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/protocol.py
rename to lang/python/pyme/constants/protocol.py
diff --git a/lang/py3-pyme/pyme/constants/keylist/__init__.py b/lang/python/pyme/constants/sig/__init__.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/keylist/__init__.py
rename to lang/python/pyme/constants/sig/__init__.py
diff --git a/lang/py3-pyme/pyme/constants/sig/mode.py b/lang/python/pyme/constants/sig/mode.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/sig/mode.py
rename to lang/python/pyme/constants/sig/mode.py
diff --git a/lang/py3-pyme/pyme/constants/sigsum.py b/lang/python/pyme/constants/sigsum.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/sigsum.py
rename to lang/python/pyme/constants/sigsum.py
diff --git a/lang/py3-pyme/pyme/constants/status.py b/lang/python/pyme/constants/status.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/status.py
rename to lang/python/pyme/constants/status.py
diff --git a/lang/py3-pyme/pyme/constants/validity.py b/lang/python/pyme/constants/validity.py
similarity index 100%
rename from lang/py3-pyme/pyme/constants/validity.py
rename to lang/python/pyme/constants/validity.py
diff --git a/lang/py3-pyme/pyme/core.py b/lang/python/pyme/core.py
similarity index 100%
rename from lang/py3-pyme/pyme/core.py
rename to lang/python/pyme/core.py
diff --git a/lang/py3-pyme/pyme/errors.py b/lang/python/pyme/errors.py
similarity index 100%
rename from lang/py3-pyme/pyme/errors.py
rename to lang/python/pyme/errors.py
diff --git a/lang/py3-pyme/pyme/util.py b/lang/python/pyme/util.py
similarity index 100%
rename from lang/py3-pyme/pyme/util.py
rename to lang/python/pyme/util.py
diff --git a/lang/py3-pyme/pyme/version.py b/lang/python/pyme/version.py
similarity index 100%
rename from lang/py3-pyme/pyme/version.py
rename to lang/python/pyme/version.py
diff --git a/lang/py3-pyme/setup.py b/lang/python/setup.py
similarity index 100%
rename from lang/py3-pyme/setup.py
rename to lang/python/setup.py

commit f531608539b45f0bbd036f430943b390ec21aa65
Merge: a7fbd52 fc38c15
Author: Justus Winter <justus at gnupg.org>
Date:   Tue May 10 13:03:34 2016 +0200

    Merge branch 'master' into justus/pyme3


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


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




More information about the Gnupg-commits mailing list