[Pkg-gnupg-commit] [gpgme] 102/412: Merge branch 'justus/pyme3'
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Thu Sep 22 21:26:25 UTC 2016
This is an automated email from the git hooks/post-receive script.
dkg pushed a commit to branch master
in repository gpgme.
commit db343325356a73b6899e9580c6f5e32f33544003
Merge: 52f2295 1032832
Author: Justus Winter <justus at gnupg.org>
Date: Tue May 17 15:10:28 2016 +0200
Merge branch 'justus/pyme3'
configure.ac | 26 +-
lang/README | 5 +-
lang/python/COPYING | 340 ++++
lang/python/COPYING.LESSER | 508 +++++
lang/python/INSTALL | 15 +
lang/python/MANIFEST.in | 5 +
lang/python/Makefile.am | 54 +
lang/python/README.rst | 48 +
lang/python/docs/Short_History.rst | 55 +
lang/python/docs/TODO.rst | 23 +
lang/python/docs/old-commits.log | 2445 ++++++++++++++++++++++++
lang/python/examples/Examples.rst | 7 +
lang/python/examples/delkey.py | 36 +
lang/python/examples/encrypt-to-all.py | 68 +
lang/python/examples/exportimport.py | 76 +
lang/python/examples/genkey.py | 45 +
lang/python/examples/inter-edit.py | 59 +
lang/python/examples/sign.py | 33 +
lang/python/examples/signverify.py | 78 +
lang/python/examples/simple.py | 53 +
lang/python/examples/t-edit.py | 63 +
lang/python/examples/testCMSgetkey.py | 47 +
lang/python/examples/verifydetails.py | 97 +
lang/python/gpgme-h-clean.py | 42 +
lang/python/gpgme.i | 296 +++
lang/python/helpers.c | 154 ++
lang/python/helpers.h | 36 +
lang/python/pyme/__init__.py | 139 ++
lang/python/pyme/callbacks.py | 47 +
lang/python/pyme/constants/__init__.py | 7 +
lang/python/pyme/constants/data/__init__.py | 4 +
lang/python/pyme/constants/data/encoding.py | 20 +
lang/python/pyme/constants/event.py | 20 +
lang/python/pyme/constants/import.py | 20 +
lang/python/pyme/constants/keylist/__init__.py | 4 +
lang/python/pyme/constants/keylist/mode.py | 20 +
lang/python/pyme/constants/md.py | 20 +
lang/python/pyme/constants/pk.py | 20 +
lang/python/pyme/constants/protocol.py | 20 +
lang/python/pyme/constants/sig/__init__.py | 4 +
lang/python/pyme/constants/sig/mode.py | 20 +
lang/python/pyme/constants/sigsum.py | 20 +
lang/python/pyme/constants/status.py | 20 +
lang/python/pyme/constants/validity.py | 20 +
lang/python/pyme/core.py | 482 +++++
lang/python/pyme/errors.py | 50 +
lang/python/pyme/util.py | 97 +
lang/python/pyme/version.py | 43 +
lang/python/setup.py | 94 +
lang/python/tests/Makefile.am | 82 +
lang/python/tests/support.py | 26 +
lang/python/tests/t-data.py | 49 +
lang/python/tests/t-decrypt.py | 37 +
lang/python/tests/t-encrypt.py | 42 +
lang/python/tests/t-wrapper.py | 25 +
m4/ax_pkg_swig.m4 | 135 ++
m4/m4_ax_swig_python.m4 | 64 +
57 files changed, 6360 insertions(+), 5 deletions(-)
diff --cc configure.ac
index eefa1de,e2b4029..36f4f94
--- a/configure.ac
+++ b/configure.ac
@@@ -160,8 -146,6 +160,8 @@@ have_w32_system=n
have_w64_system=no
build_w32_glib=no
build_w32_qt=no
- available_languages="cpp cl qt"
- default_languages="cpp cl qt"
++available_languages="cl cpp python qt"
++default_languages="cl cpp python qt"
case "${host}" in
x86_64-*mingw32*)
have_w64_system=yes
@@@ -249,97 -245,6 +249,117 @@@ if test x$fixed_search_path != x ; the
[Locate binaries only via this PATH])
fi
+AC_ARG_ENABLE([languages],
+ AC_HELP_STRING([--enable-languages=languages],
+ [enable only specific language bindings]),
+ [enabled_languages=`echo $enableval | \
+ tr ',:' ' ' | tr '[A-Z]' '[a-z]' | \
+ sed 's/c++/cpp/'`],
+ [enabled_languages="maybe"])
+if test "x$enabled_languages" = "x" \
+ -o "$enabled_languages" = "no"; then
+ enabled_languages=
+fi
+
+# If languages are explicitly set missing requirements
+# for the languages are treated as errors otherwise
+# there will be a warning.
+explicit_languages=1
+if test "x$enabled_languages" = "xmaybe"; then
+ explicit_languages=0
+ enabled_languages="$default_languages"
+fi
+
+for language in $enabled_languages; do
+ LIST_MEMBER($language, $available_languages)
+ if test "$found" = "0"; then
+ AC_MSG_ERROR([unsupported language binding specified])
+ fi
+done
+
+
+
+# Enable C++ 11 if cpp language is requested
+LIST_MEMBER("cpp", $enabled_languages)
+if test "$found" = "1"; then
+ AX_CXX_COMPILE_STDCXX(11, noext, optional)
+ if test "$HAVE_CXX11" != "1"; then
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
+***
+*** A compiler with c++11 support is required for the c++ binding.
+***]])
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
+ enabled_languages=$(echo $enabled_languages | sed 's/qt//')
+ AC_MSG_WARN([[
+***
+*** No c++11 support detected. C++ and Qt bindings will be disabled.
+***]])
+ fi
+ fi
+fi
+
+# Check that if qt is enabled cpp also is enabled
+LIST_MEMBER("qt", $enabled_languages)
+if test "$found" = "1"; then
+ # We need to ensure that in the langauge order qt comes after cpp
+ # so we remove qt first and explicitly add it as last list member.
+ enabled_languages=$(echo $enabled_languages | sed 's/qt//')
+ LIST_MEMBER("cpp", $enabled_languages)
+ if test "$found" = "0"; then
+ AC_MSG_ERROR([[
+***
+*** Qt language binding depends on cpp binding.
+***]])
+ fi
+ FIND_QT
+ if test "$have_qt5_libs" != "yes"; then
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
+***
+*** Qt5 (Qt5Core) is required for Qt binding.
+***]])
+ else
+ AC_MSG_WARN([[
+***
+*** Qt5 (Qt5Core) not found Qt Binding will be disabled.
+***]])
+ fi
+ else
+ enabled_languages=`echo $enabled_languages qt`
+
+ AC_CHECK_PROGS([DOXYGEN], [doxygen])
+ if test -z "$DOXYGEN";
+ # This is not highlighted becase it's not really important.
+ then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.])
+ fi
+ fi
+fi
+AM_CONDITIONAL([HAVE_DOXYGEN],
+ [test -n "$DOXYGEN"])
+
++# Python bindings.
++LIST_MEMBER("python", $enabled_languages)
++if test "$found" = "1"; then
++ AX_PKG_SWIG
++ if test -z "$SWIG"; then
++ if test "$explicit_languages" = "1"; then
++ die=yes
++ AC_MSG_NOTICE([[
++***
++*** You need SWIG to build the Python bindings.
++***]])
++ else
++ enabled_languages=$(echo $enabled_languages | sed 's/qt//')
++ fi
++ else
++ AM_PATH_PYTHON([3.2])
++ AX_SWIG_PYTHON
++ fi
++fi
++
+AC_SUBST(ENABLED_LANGUAGES, $enabled_languages)
#
# Provide information about the build.
@@@ -682,7 -587,33 +702,6 @@@ AC_SUBST(emacs_local_vars_begin, [['Loc
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
if test "$have_gpg_error" = "no"; then
@@@ -727,16 -658,8 +746,17 @@@ AC_CONFIG_FILES(Makefile src/Makefil
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
- lang/python/Makefile lang/python/tests/Makefile])
+AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
+AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
+AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
+AC_CONFIG_FILES(lang/qt/Makefile lang/qt/src/Makefile)
+AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in)
+AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake)
+AC_CONFIG_FILES(lang/qt/tests/Makefile)
+AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
+AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])])
+AC_CONFIG_FILES(lang/qt/doc/Makefile)
++AC_CONFIG_FILES([lang/python/Makefile lang/python/tests/Makefile])
AC_OUTPUT
echo "
diff --cc lang/README
index e1c04f2,559be5f..778c417
--- a/lang/README
+++ b/lang/README
@@@ -10,5 -10,4 +10,6 @@@ sub-directory
Directory Language
cl Common Lisp
- cpp C++
- qt Qt-Framework API
-py3-pyme Python 3 (port of PyME 0.9.0)
++cpp C++
++qt Qt-Framework API
++python Python 3 (port of PyME 0.9.0)
diff --cc lang/python/COPYING.LESSER
index 0000000,b124cf5..2331e2a
mode 000000,100644..100644
--- a/lang/python/COPYING.LESSER
+++ b/lang/python/COPYING.LESSER
@@@ -1,0 -1,510 +1,508 @@@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ [This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General Public
+ Licenses are intended to guarantee your freedom to share and change
+ free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+ specially designated software packages--typically libraries--of the
+ Free Software Foundation and other authors who decide to use it. You
+ can use it too, but we suggest you first think carefully about whether
+ this license or the ordinary General Public License is the better
+ strategy to use in any particular case, based on the explanations
+ below.
+
+ When we speak of free software, we are referring to freedom of use,
+ not price. Our General Public Licenses are designed to make sure that
+ you have the freedom to distribute copies of free software (and charge
+ for this service if you wish); that you receive source code or can get
+ it if you want it; that you can change the software and use pieces of
+ it in new free programs; and that you are informed that you can do
+ these things.
+
+ To protect your rights, we need to make restrictions that forbid
+ distributors to deny you these rights or to ask you to surrender these
+ rights. These restrictions translate to certain responsibilities for
+ you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+ or for a fee, you must give the recipients all the rights that we gave
+ you. You must make sure that they, too, receive or can get the source
+ code. If you link other code with the library, you must provide
+ complete object files to the recipients, so that they can relink them
+ with the library after making changes to the library and recompiling
+ it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+ library, and (2) we offer you this license, which gives you legal
+ permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+ there is no warranty for the free library. Also, if the library is
+ modified by someone else and passed on, the recipients should know
+ that what they have is not the original version, so that the original
+ author's reputation will not be affected by problems that might be
+ introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+ any free program. We wish to make sure that a company cannot
+ effectively restrict the users of a free program by obtaining a
+ restrictive license from a patent holder. Therefore, we insist that
+ any patent license obtained for a version of the library must be
+ consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ ordinary GNU General Public License. This license, the GNU Lesser
+ General Public License, applies to certain designated libraries, and
+ is quite different from the ordinary General Public License. We use
+ this license for certain libraries in order to permit linking those
+ libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+ a shared library, the combination of the two is legally speaking a
+ combined work, a derivative of the original library. The ordinary
+ General Public License therefore permits such linking only if the
+ entire combination fits its criteria of freedom. The Lesser General
+ Public License permits more lax criteria for linking other code with
+ the library.
+
+ We call this license the "Lesser" General Public License because it
+ does Less to protect the user's freedom than the ordinary General
+ Public License. It also provides other free software developers Less
+ of an advantage over competing non-free programs. These disadvantages
+ are the reason we use the ordinary General Public License for many
+ libraries. However, the Lesser license provides advantages in certain
+ special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+ encourage the widest possible use of a certain library, so that it
+ becomes a de-facto standard. To achieve this, non-free programs must
+ be allowed to use the library. A more frequent case is that a free
+ library does the same job as widely used non-free libraries. In this
+ case, there is little to gain by limiting the free library to free
+ software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+ programs enables a greater number of people to use a large body of
+ free software. For example, permission to use the GNU C Library in
+ non-free programs enables many more people to use the whole GNU
+ operating system, as well as its variant, the GNU/Linux operating
+ system.
+
+ Although the Lesser General Public License is Less protective of the
+ users' freedom, it does ensure that the user of a program that is
+ linked with the Library has the freedom and the wherewithal to run
+ that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+ modification follow. Pay close attention to the difference between a
+ "work based on the library" and a "work that uses the library". The
+ former contains code derived from the library, whereas the latter must
+ be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+ program which contains a notice placed by the copyright holder or
+ other authorized party saying it may be distributed under the terms of
+ this Lesser General Public License (also called "this License").
+ Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+ prepared so as to be conveniently linked with application programs
+ (which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+ which has been distributed under these terms. A "work based on the
+ Library" means either the Library or any derivative work under
+ copyright law: that is to say, a work containing the Library or a
+ portion of it, either verbatim or with modifications and/or translated
+ straightforwardly into another language. (Hereinafter, translation is
+ included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+ making modifications to it. For a library, complete source code means
+ all the source code for all modules it contains, plus any associated
+ interface definition files, plus the scripts used to control
+ compilation and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of
+ running a program using the Library is not restricted, and output from
+ such a program is covered only if its contents constitute a work based
+ on the Library (independent of the use of the Library in a tool for
+ writing it). Whether that is true depends on what the Library does
+ and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+ complete source code as you receive it, in any medium, provided that
+ you conspicuously and appropriately publish on each copy an
+ appropriate copyright notice and disclaimer of warranty; keep intact
+ all the notices that refer to this License and to the absence of any
+ warranty; and distribute a copy of this License along with the
+ Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+ and you may at your option offer warranty protection in exchange for a
+ fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+ of it, thus forming a work based on the Library, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Library,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Library, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote
+ it.
+
+ Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Library.
+
+ In addition, mere aggregation of another work not based on the Library
+ with the Library (or with a work based on the Library) on a volume of
+ a storage or distribution medium does not bring the other work under
+ the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+ License instead of this License to a given copy of the Library. To do
+ this, you must alter all the notices that refer to this License, so
+ that they refer to the ordinary GNU General Public License, version 2,
+ instead of to this License. (If a newer version than version 2 of the
+ ordinary GNU General Public License has appeared, then you can specify
+ that version instead if you wish.) Do not make any other change in
+ these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+ that copy, so the ordinary GNU General Public License applies to all
+ subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+ the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+ derivative of it, under Section 2) in object code or executable form
+ under the terms of Sections 1 and 2 above provided that you accompany
+ it with the complete corresponding machine-readable source code, which
+ must be distributed under the terms of Sections 1 and 2 above on a
+ medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+ from a designated place, then offering equivalent access to copy the
+ source code from the same place satisfies the requirement to
+ distribute the source code, even though third parties are not
+ compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+ Library, but is designed to work with the Library by being compiled or
+ linked with it, is called a "work that uses the Library". Such a
+ work, in isolation, is not a derivative work of the Library, and
+ therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+ creates an executable that is a derivative of the Library (because it
+ contains portions of the Library), rather than a "work that uses the
+ library". The executable is therefore covered by this License.
+ Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+ that is part of the Library, the object code for the work may be a
+ derivative work of the Library even though the source code is not.
+ Whether this is true is especially significant if the work can be
+ linked without the Library, or if the work is itself a library. The
+ threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+ structure layouts and accessors, and small macros and small inline
+ functions (ten lines or less in length), then the use of the object
+ file is unrestricted, regardless of whether it is legally a derivative
+ work. (Executables containing this object code plus portions of the
+ Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+ distribute the object code for the work under the terms of Section 6.
+ Any executables containing that work also fall under Section 6,
+ whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+ link a "work that uses the Library" with the Library to produce a
+ work containing portions of the Library, and distribute that work
+ under terms of your choice, provided that the terms permit
+ modification of the work for the customer's own use and reverse
+ engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+ Library is used in it and that the Library and its use are covered by
+ this License. You must supply a copy of this License. If the work
+ during execution displays copyright notices, you must include the
+ copyright notice for the Library among them, as well as a reference
+ directing the user to the copy of this License. Also, you must do one
+ of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+ Library" must include any data and utility programs needed for
+ reproducing the executable from it. However, as a special exception,
+ the materials to be distributed need not include anything that is
+ normally distributed (in either source or binary form) with the major
+ components (compiler, kernel, and so on) of the operating system on
+ which the executable runs, unless that component itself accompanies
+ the executable.
+
+ It may happen that this requirement contradicts the license
+ restrictions of other proprietary libraries that do not normally
+ accompany the operating system. Such a contradiction means you cannot
+ use both them and the Library together in an executable that you
+ distribute.
+
+ 7. You may place library facilities that are a work based on the
+ Library side-by-side in a single library together with other library
+ facilities not covered by this License, and distribute such a combined
+ library, provided that the separate distribution of the work based on
+ the Library and of the other library facilities is otherwise
+ permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+ the Library except as expressly provided under this License. Any
+ attempt otherwise to copy, modify, sublicense, link with, or
+ distribute the Library is void, and will automatically terminate your
+ rights under this License. However, parties who have received copies,
+ or rights, from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Library or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Library (or any work based on the
+ Library), you indicate your acceptance of this License to do so, and
+ all its terms and conditions for copying, distributing or modifying
+ the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+ Library), the recipient automatically receives a license from the
+ original licensor to copy, distribute, link with or modify the Library
+ subject to these terms and conditions. You may not impose any further
+ restrictions on the recipients' exercise of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties with
+ this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+ infringement or for any other reason (not limited to patent issues),
+ conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot
+ distribute so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you
+ may not distribute the Library at all. For example, if a patent
+ license would not permit royalty-free redistribution of the Library by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Library.
+
+ If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply, and the section as a whole is intended to apply in other
+ circumstances.
+
+ It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system which is
+ implemented by public license practices. Many people have made
+ generous contributions to the wide range of software distributed
+ through that system in reliance on consistent application of that
+ system; it is up to the author/donor to decide if he or she is willing
+ to distribute software through any other system and a licensee cannot
+ impose that choice.
+
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Library under this License
+ may add an explicit geographical distribution limitation excluding those
+ countries, so that distribution is permitted only in or among
+ countries not thus excluded. In such case, this License incorporates
+ the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+ versions of the Lesser General Public License from time to time.
+ Such new versions will be similar in spirit to the present version,
+ but may differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the Library
+ specifies a version number of this License which applies to it and
+ "any later version", you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Library does not specify a
+ license version number, you may choose any version ever published by
+ the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+ programs whose distribution conditions are incompatible with these,
+ write to the author to ask for permission. For software which is
+ copyrighted by the Free Software Foundation, write to the Free
+ Software Foundation; we sometimes make exceptions for this. Our
+ decision will be guided by the two goals of preserving the free status
+ of all derivatives of our free software and of promoting the sharing
+ and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+ WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+ OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+ KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+ LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+ THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+ AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+ FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+ LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+ possible use to the public, we recommend making it free software that
+ everyone can redistribute and change. You can do so by permitting
+ redistribution under these terms (or, alternatively, under the terms
+ of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+ It is safest to attach them to the start of each source file to most
+ effectively convey the exclusion of warranty; and each file should
+ have at least the "copyright" line and a pointer to where the full
+ notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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
+
+ Also add information on how to contact you by electronic and paper mail.
+
+ You should also get your employer (if you work as a programmer) or
+ your school, if any, to sign a "copyright disclaimer" for the library,
+ if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+ Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+ That's all there is to it!
-
-
diff --cc lang/python/MANIFEST.in
index 0000000,45671b6..f079538
mode 000000,100644..100644
--- a/lang/python/MANIFEST.in
+++ b/lang/python/MANIFEST.in
@@@ -1,0 -1,6 +1,5 @@@
+ recursive-include examples *.py *.glade *.gladep
+ include gpgme-h-clean.py gpgme.i
+ include helpers.c helpers.h
+ include Makefile
+ recursive-include pyme *.py
-
diff --cc lang/python/docs/Short_History.rst
index 0000000,839570e..126c121
mode 000000,100644..100644
--- a/lang/python/docs/Short_History.rst
+++ b/lang/python/docs/Short_History.rst
@@@ -1,0 -1,57 +1,55 @@@
+ =======================
+ A Short History of PyME
+ =======================
+
+ In 2002 John Goerzen released PyME; Python bindings for the GPGME
+ module which utilised the current release of Python of the time
+ (Python 2.2 or 2.3) and SWIG. Shortly after creating it and ensuring
+ it worked he stopped supporting it, though left his work available on
+ his Gopher site.
+
+ A couple of years later the project was picked up by Igor Belyi and
+ actively developed and maintained by him from 2004 to 2008. Igor's
+ whereabouts at the time of this document's creation are unknown, but
+ the current authors do hope he is well. We're assuming (or hoping)
+ that life did what life does and made continuing untenable.
+
+ In 2014 Martin Albrecht wanted to patch a bug in the PyME code and
+ discovered the absence of Igor. Following a discussion on the PyME
+ mailing list he became the new maintainer for PyME, releasing version
+ 0.9.0 in May of that year. He remains the maintainer of the original
+ PyME release in Python 2.6 and 2.7 (available via PyPI).
+
+ In 2015 Ben McGinnes approached Martin about a Python 3 version, while
+ investigating how complex a task this would be the task ended up being
+ completed. A subsequent discussion with Werner Koch led to the
+ decision to fold the Python 3 port back into the original GPGME
+ release in the languages subdirectory for non-C bindings. Ben is the
+ maintainer of the Python 3 port within GPGME.
+
+
+ ---------------------
+ The Annoyances of Git
+ ---------------------
+
+ As anyone who has ever worked with git knows, submodules are horrible
+ way to deal with pretty much anything. In the interests of avoiding
+ migraines, that is being skipped with addition of PyME to GPGME.
+ Instead the files will be added to the subdirectory, along with a copy
+ of the entire git log up to that point as a separate file within the
+ docs directory (old-commits.log). As the log for PyME is nearly 100KB
+ and the log for GPGME is approximately 1MB, this would cause
+ considerable bloat, as well as some confusion, should the two be
+ merged. Hence the unfortunate, but necessary, step to simply move the
+ files. A regular repository version will be maintained should it be
+ possible to implement this better in the future.
+
+
+ ------------------
+ The Perils of PyPI
+ ------------------
+
+ At the current time the Python 3 fork is not available via PyPI and
+ the pip installer. The recommended installation method is to follow
+ the instructions in lang/py3-pyme/INSTALL. This will build the
+ necessary SWIG portions against the installed version of GPGME.
-
-
diff --cc lang/python/docs/TODO.rst
index 0000000,7796230..a398ccd
mode 000000,100644..100644
--- a/lang/python/docs/TODO.rst
+++ b/lang/python/docs/TODO.rst
@@@ -1,0 -1,25 +1,23 @@@
+ ===========
+ Stuff To Do
+ ===========
+
+ ----------------
+ Working examples
+ ----------------
+
+ The examples from the Python 2 code base do not work and it appears
+ that they don't under Python 2 either. These ought to be replaced or
+ updated with examples from the GPGME documentation.
+
+
+ -------------
+ Documentation
+ -------------
+
+ Currently this appears to be buried in the debian/ directory for some
+ unknown reason, probably pertaining to one of the other developers.
+ Documentation is to be moved to a more appropriate docs/ directory and
+ produced using reST in preparation for inevitable publication by way
+ of Sphinx and the existing infrastructure at readthedocs.org or the
+ projects new home at gnupg.org.
-
-
diff --cc lang/python/docs/old-commits.log
index 0000000,0db59a0..93661e3
mode 000000,100644..100644
--- a/lang/python/docs/old-commits.log
+++ b/lang/python/docs/old-commits.log
@@@ -1,0 -1,2445 +1,2445 @@@
+ commit 2145348ec54c6027f2ea20f695de0277e2871405
+ Merge: 348ba88 2036f1a
+ 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
+ Merge: dbabf0c 348ba88
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Wed May 6 02:57:44 2015 +1000
+
+ Merge branch 'master' of github:adversary-org/pyme3
+
+ commit dbabf0cf1f2985755c2293b619011832e34faa9c
+ 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.
+ * Mentions that intact git repos will be maintained, but not where they
+ are (one will be on github, another will be in a user directory on
+ playfair.gnupg.org).
+
+ docs/Short_History.rst | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 57 insertions(+)
+
+ commit 348ba883424778c711c04ae9b66035ccdb36eb8c
+ Merge: 127d0a5 7c37a27
+ 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
+ Merge: f692cff 127d0a5
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Wed May 6 02:17:14 2015 +1000
+
+ Merge branch 'master' of github:adversary-org/pyme3
+
+ commit f692cff50a89c2c61acdbd3d7dd60f5ce3cd15af
+ 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 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit bd5ccf9e3bfe69fa681613757577e87b72ca08ec
+ 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
+ modifications can be back-ported to the Python 2 version).
+ * Updated the author and copyright information to reflect the two
+ current authors (Martin and I).
+ * Replaced Igor's contact details with mine.
+ * Replaced project home page with the GnuPG one.
+
+ pyme/version.py | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+ commit ec167512f4ca88d8f6e89e2ae831798c8283b4df
+ 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.
+
+ README.rst | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+ commit 8a48515e884c36b5bdb24a13cb4d2e49f4ee6f17
+ 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 -------------------------
+ docs/TODO.rst | 25 +++++++++++++++++++++++++
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+ commit f968c777472f01f308f6e57eac1740bf5c76c205
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 16:52:13 2015 +1000
+
+ Started another TODO file.
+
+ TODO.rst | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+ commit 127d0a56fa9f7ad1d4fb39d0b529b890a8d67365
+ Merge: db72dea 44837f6
+ 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
+ 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.
+
+ README.rst | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit db72deaae19c3513391df040bcaf66a88d9213af
+ Merge: db34286 48eb185
+ 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
+ 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
+ projects, so preparing for that eventuality with this repo.
+
+ README.rst | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+ commit db3428659783f30b9a76204403daedf9fc4cf7cf
+ 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
+ moment, but will probably raise this to 3.3).
+
+ 2to3/2to3-output-remaining.log | 60 ---
+ 2to3/2to3-output-setup.log | 35 --
+ 2to3/2to3-output.log | 950 -----------------------------------------
+ README.rst | 10 +-
+ 4 files changed, 7 insertions(+), 1048 deletions(-)
+
+ commit 3edf07a4ba8a86af3a33246234d6e133074862af
+ 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.
+
+ README.rst | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+ commit 811eb14b53e8856312d99f46b77215f7f9bd672c
+ 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.
+ * Will need to consider making this a parallel project with the master
+ branch.
+ * Got rid of the .org TODO file.
+ * Changed the README to use the reST file extension since it's full of
+ reST anyway.
+
+ 2to3/TODO.org | 5 -----
+ README.rst | 32 ++++++++++++++++++++++++++++++++
+ README.txt | 32 --------------------------------
+ 3 files changed, 32 insertions(+), 37 deletions(-)
+
+ commit 79e784bdcce1de6f7856921b5431044c62c6f015
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 10:18:40 2015 +1000
+
+ Fixed another implicit import by making it explicit. Hopefully this is the last one.
+
+ pyme/util.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 2b52b46ccda3e7abcc50eed0745062259d698661
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 10:16:01 2015 +1000
+
+ Fixed another implicit import by making it explicit.
+
+ pyme/errors.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 409c8fd565e21f23cd41daaeffc867e6d23a0863
+ 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 +++++++-------
+ helpers.c | 8 ++++----
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+ commit d8164aa2ae98bf8c807c16e2d9be12c5fbea7cfd
+ 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).
+
+ gpgme.i | 14 +++++++-------
+ helpers.c | 8 ++++----
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+ commit bd99b7865656e559b17c419c6b64b412a22c6c44
+ 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 ++--
+ helpers.c | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+ commit 3c91e2ccf8ca788b51e3308e292c6b64888fdb15
+ 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.
+
+ pyme/core.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 23a49e7070812ff1ce138d8d4cc46d0b80328897
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 05:38:29 2015 +1000
+
+ The -py3 flag.
+
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit b1549587d6db5e33081b9c20f75d1348a1d25938
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 05:01:42 2015 +1000
+
+ Fixed indentation - 4.
+
+ pyme/core.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit a685142ce46761ee6f5176e90717176e38e0d24f
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 05:00:16 2015 +1000
+
+ Fixed indentation - 3.
+
+ pyme/core.py | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+ commit 488a70b490cc64eb1c47d2483cb2f4079c6767f7
+ 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 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+ commit a5d38eb47d64bb17bb609fe594dae2aca480bac9
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:47:54 2015 +1000
+
+ Fixed indentation - 2.
+
+ pyme/core.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 476a207f732b8559abb1ea3c23147c0e34804730
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:46:01 2015 +1000
+
+ Fixed indentation.
+
+ pyme/core.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit 0572900eba9bcd9b0283c7d8e022e8972f06f9f8
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:43:49 2015 +1000
+
+ Replaced all tabs with 4 spaces.
+
+ pyme/core.py | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+ commit 78c0b7677e94ce1e11b8cdb833a9064527187330
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:39:07 2015 +1000
+
+ SWIG flags in the wrong place.
+
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit dfa7f2589963494a8f89277560d8c1116604a3c8
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:35:09 2015 +1000
+
+ Fixed subprocess call for swig (again).
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 249bfd8c714dcda53127b99b6cc8a6c7c4a99f20
+ Author: Ben McGinnes <ben at adversary.org>
+ Date: Sun May 3 04:32:40 2015 +1000
+
+ Fixed subprocess call for swig.
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 6fd7e719cf4c975f466ceb39835db7007df36fb2
+ 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 ++--
+ setup.py | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+ commit 7a6b584f50ed6ddc8617a642185eea1f24ff791a
+ 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 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+ commit f7fd3f270592021a95a8f779bfe85ac18f4e390b
+ 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 +-
+ examples/pygpa.py | 6 +++---
+ gpgme-h-clean.py | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+ commit 4227d486f9558015e7e548d71085e58e1b50ec08
+ 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 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 406f7f2567b701502186fe0a325dc2a3491ff7f8
+ 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
+ to share most things. So maybe merge with separated make files or a
+ pre-make script to set python2 or python3 prior to building ... decide
+ later, after it works.
+
+ Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+ commit 90b3efa5b193d37e08dc9b4ee766ba9ebc9412af
+ 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
+ only licensed under the GPL (it's actually licensed under the LGPL as
+ well, essentially the same dual licensing as the GPGME library).
+
+ examples/PyGtkGpgKeys.py | 2 +-
+ examples/delkey.py | 2 +-
+ examples/encrypt-to-all.py | 2 +-
+ examples/exportimport.py | 2 +-
+ examples/genkey.py | 2 +-
+ examples/inter-edit.py | 2 +-
+ examples/pygpa.py | 2 +-
+ examples/sign.py | 2 +-
+ examples/signverify.py | 2 +-
+ examples/simple.py | 2 +-
+ examples/t-edit.py | 2 +-
+ examples/testCMSgetkey.py | 2 +-
+ examples/verifydetails.py | 2 +-
+ gpgme-h-clean.py | 2 +-
+ setup.py | 4 ++--
+ 15 files changed, 16 insertions(+), 16 deletions(-)
+
+ commit 1a4b55dbccd2774344352e579130bf494bc5fa4b
+ 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 ---------------------
+ setup.py.bak | 116 -----------------------------------------------------
+ 2 files changed, 162 deletions(-)
+
+ commit 208879d4f2a6d0514c3f8ee2fc0da8bba42350de
+ 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.
+
+ 2to3/TODO.org | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+ commit 1548bf201059638675c5387c6f124d4b703363a9
+ 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.
+
+ 2to3/2to3-output-remaining.log | 60 ++++++++++++++++++++++++++++++++++++++++++
+ pyme/errors.py | 2 +-
+ pyme/errors.py.bak | 46 ++++++++++++++++++++++++++++++++
+ 3 files changed, 107 insertions(+), 1 deletion(-)
+
+ commit 1230650bc6bbe4c14d1284f7877aa932f3e86eb4
+ 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.
+
+ 2to3/2to3-output-setup.log | 35 ++++++++++++++
+ setup.py | 7 ++-
+ setup.py.bak | 116 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 154 insertions(+), 4 deletions(-)
+
+ commit edad44955f59aa879e95a369591717fb19eec6b7
+ 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. ;)
+
+ examples/PyGtkGpgKeys.py.bak | 663 ---------------
+ examples/encrypt-to-all.py.bak | 65 --
+ examples/exportimport.py.bak | 75 --
+ examples/genkey.py.bak | 45 -
+ examples/inter-edit.py.bak | 57 --
+ examples/pygpa.py.bak | 1457 --------------------------------
+ examples/sign.py.bak | 31 -
+ examples/signverify.py.bak | 78 --
+ examples/simple.py.bak | 52 --
+ examples/t-edit.py.bak | 59 --
+ examples/testCMSgetkey.py.bak | 45 -
+ examples/verifydetails.py.bak | 100 ---
+ gpgme-h-clean.py.bak | 42 -
+ pyme/callbacks.py.bak | 47 --
+ pyme/constants/data/__init__.py.bak | 4 -
+ pyme/constants/keylist/__init__.py.bak | 4 -
+ pyme/constants/sig/__init__.py.bak | 4 -
+ pyme/core.py.bak | 463 ----------
+ pyme/util.py.bak | 72 --
+ pyme/version.py.bak | 41 -
+ 20 files changed, 3404 deletions(-)
+
+ commit 1cfc3c969f885ed191610bffbbd60ac23fdd349e
+ 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.
+
+ 2to3/2to3-output.log | 950 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 950 insertions(+)
+
+ commit 078f6cf878aa62d12704fab424198a613a24cc8c
+ 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).
+
+ examples/PyGtkGpgKeys.py | 10 +-
+ examples/PyGtkGpgKeys.py.bak | 663 +++++++++++++++
+ examples/encrypt-to-all.py | 12 +-
+ examples/encrypt-to-all.py.bak | 65 ++
+ examples/exportimport.py | 20 +-
+ examples/exportimport.py.bak | 75 ++
+ examples/genkey.py | 2 +-
+ examples/genkey.py.bak | 45 +
+ examples/inter-edit.py | 8 +-
+ examples/inter-edit.py.bak | 57 ++
+ examples/pygpa.py | 40 +-
+ examples/pygpa.py.bak | 1457 ++++++++++++++++++++++++++++++++
+ examples/sign.py | 2 +-
+ examples/sign.py.bak | 31 +
+ examples/signverify.py | 18 +-
+ examples/signverify.py.bak | 78 ++
+ examples/simple.py | 8 +-
+ examples/simple.py.bak | 52 ++
+ examples/t-edit.py | 12 +-
+ examples/t-edit.py.bak | 59 ++
+ examples/testCMSgetkey.py | 8 +-
+ examples/testCMSgetkey.py.bak | 45 +
+ examples/verifydetails.py | 34 +-
+ examples/verifydetails.py.bak | 100 +++
+ gpgme-h-clean.py | 2 +-
+ gpgme-h-clean.py.bak | 42 +
+ pyme/callbacks.py | 6 +-
+ pyme/callbacks.py.bak | 47 ++
+ pyme/constants/data/__init__.py | 2 +-
+ pyme/constants/data/__init__.py.bak | 4 +
+ pyme/constants/keylist/__init__.py | 2 +-
+ pyme/constants/keylist/__init__.py.bak | 4 +
+ pyme/constants/sig/__init__.py | 2 +-
+ pyme/constants/sig/__init__.py.bak | 4 +
+ pyme/core.py | 26 +-
+ pyme/core.py.bak | 463 ++++++++++
+ pyme/util.py | 6 +-
+ pyme/util.py.bak | 72 ++
+ pyme/version.py | 2 +-
+ pyme/version.py.bak | 41 +
+ 40 files changed, 3515 insertions(+), 111 deletions(-)
+
+ commit 459f3eca659b4949e394c4a032d9ce2053e6c721
+ Merge: c5966ab dae7f14
+ 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
+ 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.
+
+ setup.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+ commit c5966abec9d772b3922d32650da288fd50a217be
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Thu May 15 19:43:00 2014 +0100
+
+ README.txt in ReST, including headlines
+
+ README.txt | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+ commit 43ee8c6f34fa9b6d3975aa6ea60b3d4a741fa721
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Thu May 15 19:37:15 2014 +0100
+
+ README.txt in ReST
+
+ README.txt | 25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+ commit f71a369484cba8801df23ccc5842335fa496c0df
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Thu May 15 19:28:12 2014 +0100
+
+ added MANIFEST.in and README.txt (instead of .md)
+
+ MANIFEST.in | 6 ++++++
+ README.md | 27 ---------------------------
+ README.txt | 27 +++++++++++++++++++++++++++
+ 3 files changed, 33 insertions(+), 27 deletions(-)
+
+ commit d0d6755229f920b0bed043e9c2731de2d57c096c
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Tue May 13 09:52:44 2014 +0100
+
+ added mailing list to README
+
+ README.md | 19 ++++++++++++++++---
+ 1 file changed, 16 insertions(+), 3 deletions(-)
+
+ commit 30ca60ddf92df684de261cb24c83c68089be0adc
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sun May 11 13:34:28 2014 +0100
+
+ we don't need a separate out of date ChangeLog file
+
+ ChangeLog | 802 --------------------------------------------------------------
+ 1 file changed, 802 deletions(-)
+
+ commit 8263f1a6d38fdb7f5f3dd5c7e28f83caa7528a08
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sun May 11 13:32:31 2014 +0100
+
+ adding README.md
+
+ README.md | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+ commit 3fc71b47e9e14b0b984801c28d722723baa4b406
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 10 15:43:06 2014 +0100
+
+ ValueError -> RuntimeError
+
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit eec432abea56296b9fa36aac0d10926a2335b739
+ Merge: eea6537 d2738b3
+ 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
++ setup.py
+
+ commit eea6537921061b4dcfc54e00a99d3fa110e71433
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 10 15:39:51 2014 +0100
+
+ check for swig
+
+ setup.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+ commit 53867bf9715ee1b4ea873bf5e2fbb7d9740a2b4a
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 10 15:35:04 2014 +0100
+
+ more friendly error message if gpgme is missing
+
+ setup.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+ commit d2738b35d63b1492d69641c5466103685f2d3a30
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 10 15:35:04 2014 +0100
+
+ more friendly error message if gpgme is missing
+
+ setup.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+ commit c0b01240becf8ba6cf1d4c1f64b2cb4c056f5163
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Fri May 9 15:20:24 2014 +0100
+
+ version number should have three digits
+
+ pyme/version.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 6672bb60b9bec60d38e854016c48658b57774578
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Wed May 7 15:11:08 2014 +0100
+
+ bump version number for upcoming release
+
+ pyme/version.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 7bd6de700f33ca5d1f27bc16ebbd401f21d2e788
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 3 19:36:25 2014 +0100
+
+ bump version number to indicate changes
+
+ pyme/version.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 4fb6bd9b3f47c1a343242ac83b326cacd12a136e
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 3 19:34:07 2014 +0100
+
+ pyme instead of pygpgme
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 9548973138d78241a45ccb82333b25f2cf36ce7d
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 3 19:31:10 2014 +0100
+
+ dirty hack to make 'python setup.py install' work
+
+ setup.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+ commit a961d7eab9db478b7e603324bc5d243bd3c84bad
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 3 19:05:44 2014 +0100
+
+ moved everything down to the toplevel directory
+
+ COPYING | 340 ++
+ COPYING.LESSER | 510 +++
+ ChangeLog | 802 +++++
+ INSTALL | 15 +
+ Makefile | 104 +
+ debian/README.Debian | 6 +
+ debian/changelog | 93 +
+ debian/control | 34 +
+ debian/copyright | 25 +
+ debian/docs | 2 +
+ debian/examples | 2 +
+ debian/rules | 99 +
+ examples/PyGtkGpgKeys.glade | 1394 ++++++++
+ examples/PyGtkGpgKeys.gladep | 8 +
+ examples/PyGtkGpgKeys.py | 663 ++++
+ examples/delkey.py | 34 +
+ examples/encrypt-to-all.py | 65 +
+ examples/exportimport.py | 75 +
+ examples/genkey.py | 45 +
+ examples/inter-edit.py | 57 +
+ examples/pygpa.glade | 5546 +++++++++++++++++++++++++++++++
+ examples/pygpa.py | 1457 ++++++++
+ examples/sign.py | 31 +
+ examples/signverify.py | 78 +
+ examples/simple.py | 52 +
+ examples/t-edit.py | 59 +
+ examples/testCMSgetkey.py | 45 +
+ examples/verifydetails.py | 100 +
+ gpgme-h-clean.py | 42 +
+ gpgme.i | 267 ++
+ helpers.c | 154 +
+ helpers.h | 36 +
+ pyme/COPYING | 340 --
+ pyme/COPYING.LESSER | 510 ---
+ pyme/ChangeLog | 802 -----
+ pyme/INSTALL | 15 -
+ pyme/Makefile | 104 -
+ pyme/__init__.py | 137 +
+ pyme/callbacks.py | 47 +
+ pyme/constants/__init__.py | 7 +
+ pyme/constants/data/__init__.py | 4 +
+ pyme/constants/data/encoding.py | 20 +
+ pyme/constants/event.py | 20 +
+ pyme/constants/import.py | 20 +
+ pyme/constants/keylist/__init__.py | 4 +
+ pyme/constants/keylist/mode.py | 20 +
+ pyme/constants/md.py | 20 +
+ pyme/constants/pk.py | 20 +
+ pyme/constants/protocol.py | 20 +
+ pyme/constants/sig/__init__.py | 4 +
+ pyme/constants/sig/mode.py | 20 +
+ pyme/constants/sigsum.py | 20 +
+ pyme/constants/status.py | 20 +
+ pyme/constants/validity.py | 20 +
+ pyme/core.py | 463 +++
+ pyme/debian/README.Debian | 6 -
+ pyme/debian/changelog | 93 -
+ pyme/debian/control | 34 -
+ pyme/debian/copyright | 25 -
+ pyme/debian/docs | 2 -
+ pyme/debian/examples | 2 -
+ pyme/debian/rules | 99 -
+ pyme/errors.py | 46 +
+ pyme/examples/PyGtkGpgKeys.glade | 1394 --------
+ pyme/examples/PyGtkGpgKeys.gladep | 8 -
+ pyme/examples/PyGtkGpgKeys.py | 663 ----
+ pyme/examples/delkey.py | 34 -
+ pyme/examples/encrypt-to-all.py | 65 -
+ pyme/examples/exportimport.py | 75 -
+ pyme/examples/genkey.py | 45 -
+ pyme/examples/inter-edit.py | 57 -
+ pyme/examples/pygpa.glade | 5546 -------------------------------
+ pyme/examples/pygpa.py | 1457 --------
+ pyme/examples/sign.py | 31 -
+ pyme/examples/signverify.py | 78 -
+ pyme/examples/simple.py | 52 -
+ pyme/examples/t-edit.py | 59 -
+ pyme/examples/testCMSgetkey.py | 45 -
+ pyme/examples/verifydetails.py | 100 -
+ pyme/gpgme-h-clean.py | 42 -
+ pyme/gpgme.i | 267 --
+ pyme/helpers.c | 154 -
+ pyme/helpers.h | 36 -
+ pyme/pyme/__init__.py | 137 -
+ pyme/pyme/callbacks.py | 47 -
+ pyme/pyme/constants/__init__.py | 7 -
+ pyme/pyme/constants/data/__init__.py | 4 -
+ pyme/pyme/constants/data/encoding.py | 20 -
+ pyme/pyme/constants/event.py | 20 -
+ pyme/pyme/constants/import.py | 20 -
+ pyme/pyme/constants/keylist/__init__.py | 4 -
+ pyme/pyme/constants/keylist/mode.py | 20 -
+ pyme/pyme/constants/md.py | 20 -
+ pyme/pyme/constants/pk.py | 20 -
+ pyme/pyme/constants/protocol.py | 20 -
+ pyme/pyme/constants/sig/__init__.py | 4 -
+ pyme/pyme/constants/sig/mode.py | 20 -
+ pyme/pyme/constants/sigsum.py | 20 -
+ pyme/pyme/constants/status.py | 20 -
+ pyme/pyme/constants/validity.py | 20 -
+ pyme/pyme/core.py | 463 ---
+ pyme/pyme/errors.py | 46 -
+ pyme/pyme/util.py | 72 -
+ pyme/pyme/version.py | 41 -
+ pyme/setup.py | 99 -
+ pyme/util.py | 72 +
+ pyme/version.py | 41 +
+ setup.py | 99 +
+ 108 files changed, 13384 insertions(+), 13384 deletions(-)
+
+ commit 8148cdd424c434e833ce427612ea8c89abc6e41c
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Sat May 3 18:58:52 2014 +0100
+
+ removing pyme-web
+
+ pyme-web/Makefile | 15 -
+ pyme-web/default.css | 37 --
+ pyme-web/doc/gpgme/ASCII-Armor.html | 57 ---
+ pyme-web/doc/gpgme/Advanced-Key-Editing.html | 98 ----
+ pyme-web/doc/gpgme/Algorithms.html | 47 --
+ pyme-web/doc/gpgme/Building-the-Source.html | 82 ----
+ .../doc/gpgme/Callback-Based-Data-Buffers.html | 148 ------
+ pyme-web/doc/gpgme/Cancellation.html | 67 ---
+ pyme-web/doc/gpgme/Concept-Index.html | 186 -------
+ pyme-web/doc/gpgme/Context-Attributes.html | 52 --
+ pyme-web/doc/gpgme/Contexts.html | 61 ---
+ pyme-web/doc/gpgme/Creating-Contexts.html | 49 --
+ pyme-web/doc/gpgme/Creating-Data-Buffers.html | 47 --
+ pyme-web/doc/gpgme/Creating-a-Signature.html | 143 ------
+ pyme-web/doc/gpgme/Crypto-Engine.html | 79 ---
+ pyme-web/doc/gpgme/Crypto-Operations.html | 67 ---
+ .../doc/gpgme/Cryptographic-Message-Syntax.html | 42 --
+ .../doc/gpgme/Data-Buffer-I_002fO-Operations.html | 104 ----
+ pyme-web/doc/gpgme/Data-Buffer-Meta_002dData.html | 100 ----
+ pyme-web/doc/gpgme/Decrypt-and-Verify.html | 79 ---
+ pyme-web/doc/gpgme/Decrypt.html | 123 -----
+ pyme-web/doc/gpgme/Deleting-Keys.html | 67 ---
+ pyme-web/doc/gpgme/Destroying-Contexts.html | 46 --
+ pyme-web/doc/gpgme/Destroying-Data-Buffers.html | 70 ---
+ pyme-web/doc/gpgme/Encrypt.html | 45 --
+ pyme-web/doc/gpgme/Encrypting-a-Plaintext.html | 147 ------
+ pyme-web/doc/gpgme/Engine-Configuration.html | 65 ---
+ pyme-web/doc/gpgme/Engine-Information.html | 119 -----
+ pyme-web/doc/gpgme/Engine-Version-Check.html | 48 --
+ pyme-web/doc/gpgme/Error-Codes.html | 133 -----
+ pyme-web/doc/gpgme/Error-Handling.html | 72 ---
+ pyme-web/doc/gpgme/Error-Sources.html | 89 ----
+ pyme-web/doc/gpgme/Error-Strings.html | 80 ---
+ pyme-web/doc/gpgme/Error-Values.html | 159 ------
+ pyme-web/doc/gpgme/Exchanging-Data.html | 58 ---
+ pyme-web/doc/gpgme/Exporting-Keys.html | 101 ----
+ pyme-web/doc/gpgme/Features.html | 59 ---
+ pyme-web/doc/gpgme/File-Based-Data-Buffers.html | 74 ---
+ pyme-web/doc/gpgme/Function-and-Data-Index.html | 229 ---------
+ pyme-web/doc/gpgme/Generating-Keys.html | 144 ------
+ pyme-web/doc/gpgme/Getting-Started.html | 55 ---
+ pyme-web/doc/gpgme/Hash-Algorithms.html | 59 ---
+ pyme-web/doc/gpgme/Header.html | 53 --
+ .../doc/gpgme/I_002fO-Callback-Example-GDK.html | 85 ----
+ .../gpgme/I_002fO-Callback-Example-GTK_002b.html | 86 ----
+ .../doc/gpgme/I_002fO-Callback-Example-Qt.html | 99 ----
+ pyme-web/doc/gpgme/I_002fO-Callback-Example.html | 259 ----------
+ pyme-web/doc/gpgme/I_002fO-Callback-Interface.html | 142 ------
+ pyme-web/doc/gpgme/Importing-Keys.html | 171 -------
+ pyme-web/doc/gpgme/Included-Certificates.html | 70 ---
+ pyme-web/doc/gpgme/Information-About-Keys.html | 207 --------
+ .../doc/gpgme/Information-About-Trust-Items.html | 75 ---
+ pyme-web/doc/gpgme/Introduction.html | 53 --
+ pyme-web/doc/gpgme/Key-Listing-Mode.html | 99 ----
+ pyme-web/doc/gpgme/Key-Management.html | 260 ----------
+ pyme-web/doc/gpgme/Key-Signatures.html | 130 -----
+ .../doc/gpgme/Largefile-Support-_0028LFS_0029.html | 110 -----
+ pyme-web/doc/gpgme/Library-Copying.html | 542 ---------------------
+ pyme-web/doc/gpgme/Library-Version-Check.html | 97 ----
+ pyme-web/doc/gpgme/Listing-Keys.html | 204 --------
+ pyme-web/doc/gpgme/Listing-Trust-Items.html | 88 ----
+ pyme-web/doc/gpgme/Locale.html | 69 ---
+ pyme-web/doc/gpgme/Manipulating-Data-Buffers.html | 45 --
+ pyme-web/doc/gpgme/Manipulating-Keys.html | 63 ---
+ pyme-web/doc/gpgme/Manipulating-Trust-Items.html | 62 ---
+ pyme-web/doc/gpgme/Memory-Based-Data-Buffers.html | 107 ----
+ pyme-web/doc/gpgme/Multi-Threading.html | 93 ----
+ pyme-web/doc/gpgme/OpenPGP.html | 44 --
+ pyme-web/doc/gpgme/Overview.html | 57 ---
+ pyme-web/doc/gpgme/Passphrase-Callback.html | 101 ----
+ pyme-web/doc/gpgme/Preparation.html | 54 --
+ pyme-web/doc/gpgme/Progress-Meter-Callback.html | 80 ---
+ pyme-web/doc/gpgme/Protocol-Selection.html | 60 ---
+ pyme-web/doc/gpgme/Protocols-and-Engines.html | 82 ----
+ pyme-web/doc/gpgme/Public-Key-Algorithms.html | 74 ---
+ .../doc/gpgme/Registering-I_002fO-Callbacks.html | 81 ---
+ pyme-web/doc/gpgme/Run-Control.html | 53 --
+ pyme-web/doc/gpgme/Selecting-Signers.html | 64 ---
+ pyme-web/doc/gpgme/Sign.html | 50 --
+ pyme-web/doc/gpgme/Signal-Handling.html | 61 ---
+ pyme-web/doc/gpgme/Signature-Notation-Data.html | 85 ----
+ pyme-web/doc/gpgme/Text-Mode.html | 63 ---
+ pyme-web/doc/gpgme/Trust-Item-Management.html | 68 ---
+ pyme-web/doc/gpgme/Using-Automake.html | 74 ---
+ pyme-web/doc/gpgme/Using-External-Event-Loops.html | 74 ---
+ pyme-web/doc/gpgme/Using-Libtool.html | 44 --
+ pyme-web/doc/gpgme/Verify.html | 492 -------------------
+ pyme-web/doc/gpgme/Waiting-For-Completion.html | 77 ---
+ pyme-web/doc/gpgme/index.html | 169 -------
+ pyme-web/doc/pyme/index.html | 164 -------
+ pyme-web/doc/pyme/pyme.callbacks.html | 42 --
+ .../doc/pyme/pyme.constants.data.encoding.html | 48 --
+ pyme-web/doc/pyme/pyme.constants.data.html | 29 --
+ pyme-web/doc/pyme/pyme.constants.event.html | 48 --
+ pyme-web/doc/pyme/pyme.constants.html | 39 --
+ pyme-web/doc/pyme/pyme.constants.import.html | 49 --
+ pyme-web/doc/pyme/pyme.constants.keylist.html | 29 --
+ pyme-web/doc/pyme/pyme.constants.keylist.mode.html | 49 --
+ pyme-web/doc/pyme/pyme.constants.md.html | 58 ---
+ pyme-web/doc/pyme/pyme.constants.pk.html | 50 --
+ pyme-web/doc/pyme/pyme.constants.protocol.html | 48 --
+ pyme-web/doc/pyme/pyme.constants.sig.html | 29 --
+ pyme-web/doc/pyme/pyme.constants.sig.mode.html | 47 --
+ pyme-web/doc/pyme/pyme.constants.sigsum.html | 55 ---
+ pyme-web/doc/pyme/pyme.constants.status.html | 126 -----
+ pyme-web/doc/pyme/pyme.constants.validity.html | 50 --
+ pyme-web/doc/pyme/pyme.core.html | 277 -----------
+ pyme-web/doc/pyme/pyme.errors.html | 82 ----
+ pyme-web/doc/pyme/pyme.html | 164 -------
+ pyme-web/doc/pyme/pyme.util.html | 81 ---
+ pyme-web/doc/pyme/pyme.version.html | 37 --
+ pyme-web/index.html | 72 ---
+ 112 files changed, 10551 deletions(-)
+
+ commit 684d95feb7e10e538a56fb1b27f1456111bacb60
+ 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 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+ commit 658d23b95110d21eeb50abf4e74701a667521a88
+ Author: Martin Albrecht <martinralbrecht at googlemail.com>
+ Date: Mon Jan 6 17:41:33 2014 +0100
+
+ deleting CVSROOT
+
+ CVSROOT/checkoutlist | 13 -------------
+ CVSROOT/commitinfo | 15 ---------------
+ CVSROOT/config | 21 ---------------------
+ CVSROOT/cvswrappers | 19 -------------------
+ CVSROOT/editinfo | 21 ---------------------
+ CVSROOT/loginfo | 26 --------------------------
+ CVSROOT/modules | 26 --------------------------
+ CVSROOT/notify | 12 ------------
+ CVSROOT/rcsinfo | 13 -------------
+ CVSROOT/taginfo | 20 --------------------
+ CVSROOT/verifymsg | 21 ---------------------
+ 11 files changed, 207 deletions(-)
+
+ commit 576b555499c094c4786d42de9e59aa9826009b89
+ Author: convert-repo <devnull at localhost>
+ Date: Mon Jan 6 15:22:44 2014 +0000
+
+ update tags
+
+ commit 2dcf0c5b702eb5a18c66ff1e42a72eaa7427af1d
+ Author: belyi <devnull at localhost>
+ Date: Wed Nov 26 02:38:33 2008 +0000
+
+ Move Windows specific fix from helpers.c to helpers.h so that it works
+ for edit callback as well as for the passphrase one.
+
+ pyme/helpers.c | 5 -----
+ pyme/helpers.h | 5 +++++
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+ commit 42a035f2ef62470fea7a7f8ee33a1297fa90a603
+ Author: belyi <devnull at localhost>
+ Date: Mon Nov 24 21:44:30 2008 +0000
+
+ Update the way build directives are constructed on MinGW to have a bit
+ more robust. Update PyMe build version to 0.8.1 in version.py
+
+ pyme/pyme/version.py | 2 +-
+ pyme/setup.py | 10 ++++++++--
+ 2 files changed, 9 insertions(+), 3 deletions(-)
+
+ commit 3aaa20fbcba17066c9ffd580f5209946022793a2
+ Author: belyi <devnull at localhost>
+ Date: Mon Nov 24 06:57:11 2008 +0000
+
+ Update changelog
+
+ pyme/debian/changelog | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+ commit 689ff46b2550547e3883f809a6dc40c22c3e137e
+ Author: belyi <devnull at localhost>
+ Date: Mon Nov 24 06:50:41 2008 +0000
+
+ Fix hang problem on Windows when password is written to a filehandle.
+ Fix the way path is constructed on MinGW platform.
+
+ pyme/helpers.c | 5 +++++
+ pyme/setup.py | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+ commit 852a60d541d66cb56f40378182b976fd87a02c46
+ Author: belyi <devnull at localhost>
+ Date: Sun Nov 23 04:31:31 2008 +0000
+
+ Add Bernard's example testCMSgetkey.py and his updates for
+ verifydetails.py
+
+ pyme/examples/testCMSgetkey.py | 45 ++++++++++++++++++++++++++++++++++++++++++
+ pyme/examples/verifydetails.py | 43 +++++++++++++++++++++++++++++-----------
+ 2 files changed, 77 insertions(+), 11 deletions(-)
+
+ commit f080527d9184f3360f0a8ef6136b9a188d8e7d2a
+ Author: belyi <devnull at localhost>
+ Date: Thu May 29 18:29:37 2008 +0000
+
+ Remove debian packaging for python2.3 since it is removed from both
+ testing and unstable dists.
+ Update docs build target to have correct PYTHONPATH set.
+
+ pyme/Makefile | 2 +-
+ pyme/debian/changelog | 4 +++-
+ pyme/debian/control | 4 ++--
+ pyme/debian/rules | 2 --
+ 4 files changed, 6 insertions(+), 6 deletions(-)
+
+ commit c25d133fcbadf3c7f6e655586b4a05d6e3cf6f0b
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 3 13:37:12 2008 +0000
+
+ Forgot to adjust mainText margin. Doing it now.
+
+ pyme-web/default.css | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit 897286a54a32336d060cd03305cdecb7905f34f1
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 3 13:00:11 2008 +0000
+
+ Fix an error in default.css and make index.html "Standards Compliant".
+
+ pyme-web/default.css | 2 +-
+ pyme-web/index.html | 7 ++++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+ commit 4e049212bd214449cc0ba1ce06e00782783f328a
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 3 12:38:42 2008 +0000
+
+ Adjust spacing between links.
+
+ pyme-web/default.css | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+ commit cb2bddfbd77483b1deb14f2eab0715a03dd33fcd
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 22:50:21 2008 +0000
+
+ Make style a big more IE friendly.
+
+ pyme-web/default.css | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+ commit ad66f0a1bb01b46baac328e9fee439b35a60c232
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 11:58:32 2008 +0000
+
+ Make GPGME documentation a bit more web friendly on the index.html page.
+
+ pyme-web/doc/gpgme/Algorithms.html | 2 +-
+ pyme-web/doc/gpgme/Concept-Index.html | 2 +-
+ pyme-web/doc/gpgme/Contexts.html | 2 +-
+ pyme-web/doc/gpgme/Error-Handling.html | 2 +-
+ pyme-web/doc/gpgme/Exchanging-Data.html | 2 +-
+ pyme-web/doc/gpgme/Function-and-Data-Index.html | 2 +-
+ pyme-web/doc/gpgme/Introduction.html | 4 +-
+ pyme-web/doc/gpgme/Library-Copying.html | 2 +-
+ pyme-web/doc/gpgme/Preparation.html | 2 +-
+ pyme-web/doc/gpgme/Protocols-and-Engines.html | 2 +-
+ pyme-web/doc/gpgme/index.html | 229 +-----------------------
+ 11 files changed, 12 insertions(+), 239 deletions(-)
+
+ commit 4f57c0ccb049d4442e7732e2d1d05dabffd2a21d
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 06:12:57 2008 +0000
+
+ Add missing core.set_locale() to set default locale for contexts.
+
+ pyme/debian/changelog | 2 +-
+ pyme/pyme/core.py | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+ commit acf7ead3dea8590cf9fe86b67bb125837ad6ed4f
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 05:50:24 2008 +0000
+
+ Avoid leaks caused by keys.
+ Add set/get methods for engine info.
+
+ pyme/debian/changelog | 10 ++++++++++
+ pyme/pyme/core.py | 24 ++++++++++++++++++++++++
+ 2 files changed, 34 insertions(+)
+
+ commit df4a2fb518adbb6420d95ce74af212c87abff7e7
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 04:04:41 2008 +0000
+
+ Update index.html to reflect new versions on the web.
+
+ pyme-web/Makefile | 3 ++-
+ pyme-web/doc/gpgme/index.html | 4 +---
+ pyme-web/index.html | 4 ++--
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+ commit bd3ffc9bdf98d6aafde6b689c6c8215fa468612d
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 04:01:04 2008 +0000
+
+ Update PyMe documentation to match 0.8.0 version of the package.
+
+ pyme-web/doc/pyme/index.html | 14 ++++-----
+ pyme-web/doc/pyme/pyme.constants.keylist.mode.html | 1 +
+ pyme-web/doc/pyme/pyme.constants.protocol.html | 4 ++-
+ pyme-web/doc/pyme/pyme.constants.status.html | 9 ++++++
+ pyme-web/doc/pyme/pyme.core.html | 36 ++++++++++++++++++----
+ pyme-web/doc/pyme/pyme.errors.html | 8 ++---
+ pyme-web/doc/pyme/pyme.html | 14 ++++-----
+ pyme-web/doc/pyme/pyme.util.html | 17 ++++++++--
+ pyme-web/doc/pyme/pyme.version.html | 14 ++++-----
+ 9 files changed, 82 insertions(+), 35 deletions(-)
+
+ commit 6973a69a317608a0d0661590d701f4e3f3a21b32
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 02:35:24 2008 +0000
+
+ Have a fix for Contents being put onto 'Function and Data Index' page.
+
+ pyme-web/doc/gpgme/Concept-Index.html | 2 +-
+ pyme-web/doc/gpgme/Function-and-Data-Index.html | 153 +----------------------
+ pyme-web/doc/gpgme/index.html | 154 +++++++++++++++++++++++-
+ 3 files changed, 155 insertions(+), 154 deletions(-)
+
+ commit 086315964cbc2abad1187f306dcb9c72ac3257f3
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 2 01:00:29 2008 +0000
+
+ Update GPGME documentation. It's for v1.1.6 now.
+
+ pyme-web/doc/gpgme/ASCII-Armor.html | 57 ++
+ pyme-web/doc/gpgme/Advanced-Key-Editing.html | 98 +++
+ pyme-web/doc/gpgme/Algorithms.html | 47 ++
+ pyme-web/doc/gpgme/Building-the-Source.html | 82 +++
+ .../doc/gpgme/Callback-Based-Data-Buffers.html | 148 +++++
+ pyme-web/doc/gpgme/Cancellation.html | 67 ++
+ pyme-web/doc/gpgme/Concept-Index.html | 186 ++++++
+ pyme-web/doc/gpgme/Context-Attributes.html | 52 ++
+ pyme-web/doc/gpgme/Contexts.html | 61 ++
+ pyme-web/doc/gpgme/Creating-Contexts.html | 49 ++
+ pyme-web/doc/gpgme/Creating-Data-Buffers.html | 47 ++
+ pyme-web/doc/gpgme/Creating-a-Signature.html | 143 +++++
+ pyme-web/doc/gpgme/Crypto-Engine.html | 79 +++
+ pyme-web/doc/gpgme/Crypto-Operations.html | 67 ++
+ .../doc/gpgme/Cryptographic-Message-Syntax.html | 42 ++
+ .../doc/gpgme/Data-Buffer-I_002fO-Operations.html | 104 ++++
+ pyme-web/doc/gpgme/Data-Buffer-Meta_002dData.html | 100 +++
+ pyme-web/doc/gpgme/Decrypt-and-Verify.html | 79 +++
+ pyme-web/doc/gpgme/Decrypt.html | 123 ++++
+ pyme-web/doc/gpgme/Deleting-Keys.html | 67 ++
+ pyme-web/doc/gpgme/Destroying-Contexts.html | 46 ++
+ pyme-web/doc/gpgme/Destroying-Data-Buffers.html | 70 +++
+ pyme-web/doc/gpgme/Encrypt.html | 45 ++
+ pyme-web/doc/gpgme/Encrypting-a-Plaintext.html | 147 +++++
+ pyme-web/doc/gpgme/Engine-Configuration.html | 65 ++
+ pyme-web/doc/gpgme/Engine-Information.html | 119 ++++
+ pyme-web/doc/gpgme/Engine-Version-Check.html | 48 ++
+ pyme-web/doc/gpgme/Error-Codes.html | 133 ++++
+ pyme-web/doc/gpgme/Error-Handling.html | 72 +++
+ pyme-web/doc/gpgme/Error-Sources.html | 89 +++
+ pyme-web/doc/gpgme/Error-Strings.html | 80 +++
+ pyme-web/doc/gpgme/Error-Values.html | 159 +++++
+ pyme-web/doc/gpgme/Exchanging-Data.html | 58 ++
+ pyme-web/doc/gpgme/Exporting-Keys.html | 101 +++
+ pyme-web/doc/gpgme/Features.html | 59 ++
+ pyme-web/doc/gpgme/File-Based-Data-Buffers.html | 74 +++
+ pyme-web/doc/gpgme/Function-and-Data-Index.html | 380 ++++++++++++
+ pyme-web/doc/gpgme/Generating-Keys.html | 144 +++++
+ pyme-web/doc/gpgme/Getting-Started.html | 55 ++
+ pyme-web/doc/gpgme/Hash-Algorithms.html | 59 ++
+ pyme-web/doc/gpgme/Header.html | 53 ++
+ .../doc/gpgme/I_002fO-Callback-Example-GDK.html | 85 +++
+ .../gpgme/I_002fO-Callback-Example-GTK_002b.html | 86 +++
+ .../doc/gpgme/I_002fO-Callback-Example-Qt.html | 99 +++
+ pyme-web/doc/gpgme/I_002fO-Callback-Example.html | 259 ++++++++
+ pyme-web/doc/gpgme/I_002fO-Callback-Interface.html | 142 +++++
+ pyme-web/doc/gpgme/Importing-Keys.html | 171 +++++
+ pyme-web/doc/gpgme/Included-Certificates.html | 70 +++
+ pyme-web/doc/gpgme/Information-About-Keys.html | 207 +++++++
+ .../doc/gpgme/Information-About-Trust-Items.html | 75 +++
+ pyme-web/doc/gpgme/Introduction.html | 53 ++
+ pyme-web/doc/gpgme/Key-Listing-Mode.html | 99 +++
+ pyme-web/doc/gpgme/Key-Management.html | 260 ++++++++
+ pyme-web/doc/gpgme/Key-Signatures.html | 130 ++++
+ .../doc/gpgme/Largefile-Support-_0028LFS_0029.html | 110 ++++
+ pyme-web/doc/gpgme/Library-Copying.html | 542 ++++++++++++++++
+ pyme-web/doc/gpgme/Library-Version-Check.html | 97 +++
+ pyme-web/doc/gpgme/Listing-Keys.html | 204 ++++++
+ pyme-web/doc/gpgme/Listing-Trust-Items.html | 88 +++
+ pyme-web/doc/gpgme/Locale.html | 69 +++
+ pyme-web/doc/gpgme/Manipulating-Data-Buffers.html | 45 ++
+ pyme-web/doc/gpgme/Manipulating-Keys.html | 63 ++
+ pyme-web/doc/gpgme/Manipulating-Trust-Items.html | 62 ++
+ pyme-web/doc/gpgme/Memory-Based-Data-Buffers.html | 107 ++++
+ pyme-web/doc/gpgme/Multi-Threading.html | 93 +++
+ pyme-web/doc/gpgme/OpenPGP.html | 44 ++
+ pyme-web/doc/gpgme/Overview.html | 57 ++
+ pyme-web/doc/gpgme/Passphrase-Callback.html | 101 +++
+ pyme-web/doc/gpgme/Preparation.html | 54 ++
+ pyme-web/doc/gpgme/Progress-Meter-Callback.html | 80 +++
+ pyme-web/doc/gpgme/Protocol-Selection.html | 60 ++
+ pyme-web/doc/gpgme/Protocols-and-Engines.html | 82 +++
+ pyme-web/doc/gpgme/Public-Key-Algorithms.html | 74 +++
+ .../doc/gpgme/Registering-I_002fO-Callbacks.html | 81 +++
+ pyme-web/doc/gpgme/Run-Control.html | 53 ++
+ pyme-web/doc/gpgme/Selecting-Signers.html | 64 ++
+ pyme-web/doc/gpgme/Sign.html | 50 ++
+ pyme-web/doc/gpgme/Signal-Handling.html | 61 ++
+ pyme-web/doc/gpgme/Signature-Notation-Data.html | 85 +++
+ pyme-web/doc/gpgme/Text-Mode.html | 63 ++
+ pyme-web/doc/gpgme/Trust-Item-Management.html | 68 ++
+ pyme-web/doc/gpgme/Using-Automake.html | 74 +++
+ pyme-web/doc/gpgme/Using-External-Event-Loops.html | 74 +++
+ pyme-web/doc/gpgme/Using-Libtool.html | 44 ++
+ pyme-web/doc/gpgme/Verify.html | 492 +++++++++++++++
+ pyme-web/doc/gpgme/Waiting-For-Completion.html | 77 +++
+ pyme-web/doc/gpgme/gpgme.html | 251 --------
+ pyme-web/doc/gpgme/gpgme_1.html | 76 ---
+ pyme-web/doc/gpgme/gpgme_10.html | 61 --
+ pyme-web/doc/gpgme/gpgme_11.html | 130 ----
+ pyme-web/doc/gpgme/gpgme_12.html | 82 ---
+ pyme-web/doc/gpgme/gpgme_13.html | 130 ----
+ pyme-web/doc/gpgme/gpgme_14.html | 108 ----
+ pyme-web/doc/gpgme/gpgme_15.html | 69 ---
+ pyme-web/doc/gpgme/gpgme_16.html | 169 -----
+ pyme-web/doc/gpgme/gpgme_17.html | 63 --
+ pyme-web/doc/gpgme/gpgme_18.html | 63 --
+ pyme-web/doc/gpgme/gpgme_19.html | 66 --
+ pyme-web/doc/gpgme/gpgme_2.html | 79 ---
+ pyme-web/doc/gpgme/gpgme_20.html | 120 ----
+ pyme-web/doc/gpgme/gpgme_21.html | 102 ---
+ pyme-web/doc/gpgme/gpgme_22.html | 108 ----
+ pyme-web/doc/gpgme/gpgme_23.html | 237 -------
+ pyme-web/doc/gpgme/gpgme_24.html | 154 -----
+ pyme-web/doc/gpgme/gpgme_25.html | 248 --------
+ pyme-web/doc/gpgme/gpgme_26.html | 107 ----
+ pyme-web/doc/gpgme/gpgme_27.html | 80 ---
+ pyme-web/doc/gpgme/gpgme_28.html | 67 --
+ pyme-web/doc/gpgme/gpgme_29.html | 164 -----
+ pyme-web/doc/gpgme/gpgme_3.html | 86 ---
+ pyme-web/doc/gpgme/gpgme_30.html | 106 ----
+ pyme-web/doc/gpgme/gpgme_31.html | 232 -------
+ pyme-web/doc/gpgme/gpgme_32.html | 85 ---
+ pyme-web/doc/gpgme/gpgme_33.html | 223 -------
+ pyme-web/doc/gpgme/gpgme_34.html | 83 ---
+ pyme-web/doc/gpgme/gpgme_35.html | 70 ---
+ pyme-web/doc/gpgme/gpgme_36.html | 63 --
+ pyme-web/doc/gpgme/gpgme_37.html | 66 --
+ pyme-web/doc/gpgme/gpgme_38.html | 86 ---
+ pyme-web/doc/gpgme/gpgme_39.html | 79 ---
+ pyme-web/doc/gpgme/gpgme_4.html | 83 ---
+ pyme-web/doc/gpgme/gpgme_40.html | 89 ---
+ pyme-web/doc/gpgme/gpgme_41.html | 99 ---
+ pyme-web/doc/gpgme/gpgme_42.html | 144 -----
+ pyme-web/doc/gpgme/gpgme_43.html | 152 -----
+ pyme-web/doc/gpgme/gpgme_44.html | 112 ----
+ pyme-web/doc/gpgme/gpgme_45.html | 101 ---
+ pyme-web/doc/gpgme/gpgme_46.html | 459 --------------
+ pyme-web/doc/gpgme/gpgme_47.html | 292 ---------
+ pyme-web/doc/gpgme/gpgme_48.html | 363 -----------
+ pyme-web/doc/gpgme/gpgme_49.html | 209 -------
+ pyme-web/doc/gpgme/gpgme_5.html | 74 ---
+ pyme-web/doc/gpgme/gpgme_50.html | 88 ---
+ pyme-web/doc/gpgme/gpgme_51.html | 208 -------
+ pyme-web/doc/gpgme/gpgme_52.html | 154 -----
+ pyme-web/doc/gpgme/gpgme_53.html | 291 ---------
+ pyme-web/doc/gpgme/gpgme_54.html | 91 ---
+ pyme-web/doc/gpgme/gpgme_55.html | 107 ----
+ pyme-web/doc/gpgme/gpgme_56.html | 140 -----
+ pyme-web/doc/gpgme/gpgme_57.html | 106 ----
+ pyme-web/doc/gpgme/gpgme_58.html | 89 ---
+ pyme-web/doc/gpgme/gpgme_59.html | 97 ---
+ pyme-web/doc/gpgme/gpgme_6.html | 77 ---
+ pyme-web/doc/gpgme/gpgme_60.html | 142 -----
+ pyme-web/doc/gpgme/gpgme_61.html | 626 -------------------
+ pyme-web/doc/gpgme/gpgme_62.html | 107 ----
+ pyme-web/doc/gpgme/gpgme_63.html | 67 --
+ pyme-web/doc/gpgme/gpgme_64.html | 95 ---
+ pyme-web/doc/gpgme/gpgme_65.html | 233 -------
+ pyme-web/doc/gpgme/gpgme_66.html | 65 --
+ pyme-web/doc/gpgme/gpgme_67.html | 220 -------
+ pyme-web/doc/gpgme/gpgme_68.html | 75 ---
+ pyme-web/doc/gpgme/gpgme_69.html | 119 ----
+ pyme-web/doc/gpgme/gpgme_7.html | 123 ----
+ pyme-web/doc/gpgme/gpgme_70.html | 107 ----
+ pyme-web/doc/gpgme/gpgme_71.html | 218 -------
+ pyme-web/doc/gpgme/gpgme_72.html | 134 ----
+ pyme-web/doc/gpgme/gpgme_73.html | 299 ---------
+ pyme-web/doc/gpgme/gpgme_74.html | 103 ----
+ pyme-web/doc/gpgme/gpgme_75.html | 104 ----
+ pyme-web/doc/gpgme/gpgme_76.html | 118 ----
+ pyme-web/doc/gpgme/gpgme_77.html | 95 ---
+ pyme-web/doc/gpgme/gpgme_78.html | 71 ---
+ pyme-web/doc/gpgme/gpgme_79.html | 686 ---------------------
+ pyme-web/doc/gpgme/gpgme_8.html | 155 -----
+ pyme-web/doc/gpgme/gpgme_80.html | 120 ----
+ pyme-web/doc/gpgme/gpgme_81.html | 278 ---------
+ pyme-web/doc/gpgme/gpgme_82.html | 272 --------
+ pyme-web/doc/gpgme/gpgme_83.html | 180 ------
+ pyme-web/doc/gpgme/gpgme_84.html | 99 ---
+ pyme-web/doc/gpgme/gpgme_9.html | 104 ----
+ pyme-web/doc/gpgme/gpgme_abt.html | 206 -------
+ pyme-web/doc/gpgme/gpgme_fot.html | 53 --
+ pyme-web/doc/gpgme/gpgme_ovr.html | 68 --
+ pyme-web/doc/gpgme/gpgme_toc.html | 247 --------
+ pyme-web/doc/gpgme/index.html | 497 ++++++++-------
+ 176 files changed, 9054 insertions(+), 13378 deletions(-)
+
+ commit 163c1053dc761682f5a4231da163bdd0ff7162d7
+ Author: belyi <devnull at localhost>
+ Date: Tue Apr 1 21:14:29 2008 +0000
+
+ Update Home page to be a bit more visitor friendly.
+
+ pyme-web/Makefile | 2 +-
+ pyme-web/default.css | 27 ++++++++++++++++++++
+ pyme-web/index.html | 70 +++++++++++++++++++++++++++++++++++-----------------
+ 3 files changed, 75 insertions(+), 24 deletions(-)
+
+ commit 05db2d17d8fda0ab8c948bbdc0643dfc1466830d
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 30 21:27:38 2008 +0000
+
+ Add a rule to build binary distribution for Windows.
+
+ pyme/Makefile | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+ commit 57acb1089f5f8c24323ee62fc0a7f492a496b9c0
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 29 22:50:11 2008 +0000
+
+ Switch to using central location for python files (pycentral)
+ Update docs rule to fix location of the python source files.
+
+ pyme/Makefile | 5 +++-
+ pyme/debian/changelog | 4 ++-
+ pyme/debian/control | 74 +++++------------------------------------------
+ pyme/debian/dirs | 2 --
+ pyme/debian/docs | 1 +
+ pyme/debian/postinst.ex | 48 ------------------------------
+ pyme/debian/postrm.ex | 38 ------------------------
+ pyme/debian/preinst.ex | 44 ----------------------------
+ pyme/debian/prerm.ex | 39 -------------------------
+ pyme/debian/rules | 50 ++++++--------------------------
+ pyme/debian/setup.cfg-2.2 | 8 -----
+ pyme/debian/setup.cfg-2.3 | 8 -----
+ pyme/debian/setup.cfg-2.4 | 8 -----
+ pyme/gpgme-h-clean.py | 2 +-
+ pyme/pyme/core.py | 2 +-
+ pyme/pyme/util.py | 2 +-
+ 16 files changed, 28 insertions(+), 307 deletions(-)
+
+ commit 2b56fd10517cfbcffaa4ba98d8ea42f40f0d38a9
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 23 02:01:12 2008 +0000
+
+ Turn SWIG's autodoc feature on. Ignore 'next' in the types which are lists now.
+ Use new style for class declarations. Specify None as a default value for
+ core.check_version() method. Update version.py for 0.8.0 version.
+
+ pyme/examples/pygpa.py | 2 +-
+ pyme/gpgme.i | 5 +++++
+ pyme/pyme/core.py | 2 +-
+ pyme/pyme/util.py | 5 +++--
+ pyme/pyme/version.py | 6 +++---
+ 5 files changed, 13 insertions(+), 7 deletions(-)
+
+ commit df5e25d7ee4dc0aa0d429f9d009322dd8ac33bb8
+ Author: belyi <devnull at localhost>
+ Date: Thu Mar 20 19:07:00 2008 +0000
+
+ Improve matching for DEPRECATED typedefs
+
+ pyme/gpgme-h-clean.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit 78d8fc732848ac267ec65e9069265cd500587cdf
+ Author: belyi <devnull at localhost>
+ Date: Wed Mar 19 19:28:40 2008 +0000
+
+ Update API to use list when types containing 'next' field are return.
+ Update examples accordingly
+ Add verifydetails.py example
+ Start adding bullets for 0.8.0 version.
+
+ pyme/Makefile | 2 +-
+ pyme/debian/changelog | 14 +++++++-
+ pyme/examples/PyGtkGpgKeys.py | 53 +++++++++++++--------------
+ pyme/examples/delkey.py | 7 ++--
+ pyme/examples/encrypt-to-all.py | 7 ++--
+ pyme/examples/exportimport.py | 7 ++--
+ pyme/examples/pygpa.py | 70 ++++++++++++++++--------------------
+ pyme/examples/signverify.py | 11 +++---
+ pyme/examples/verifydetails.py | 79 +++++++++++++++++++++++++++++++++++++++++
+ pyme/gpgme.i | 19 +++++++++-
+ 10 files changed, 180 insertions(+), 89 deletions(-)
+
+ commit 342d85b07475e7360bcd62804bf5facda039494f
+ Author: belyi <devnull at localhost>
+ Date: Mon Mar 10 01:14:16 2008 +0000
+
+ Change references to source files so that they point to the WebCVS browse
+ location.
+
+ pyme-web/doc/pyme/index.html | 2 +-
+ pyme-web/doc/pyme/pyme.callbacks.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.data.encoding.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.data.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.event.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.import.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.keylist.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.keylist.mode.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.md.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.pk.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.protocol.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.sig.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.sig.mode.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.sigsum.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.status.html | 2 +-
+ pyme-web/doc/pyme/pyme.constants.validity.html | 2 +-
+ pyme-web/doc/pyme/pyme.core.html | 2 +-
+ pyme-web/doc/pyme/pyme.errors.html | 2 +-
+ pyme-web/doc/pyme/pyme.html | 2 +-
+ pyme-web/doc/pyme/pyme.util.html | 2 +-
+ pyme-web/doc/pyme/pyme.version.html | 2 +-
+ 22 files changed, 22 insertions(+), 22 deletions(-)
+
+ commit 4139dd1d066c1a6c892d84fe45dc3e6c4aa1b803
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 8 18:21:08 2008 +0000
+
+ Add core.check_version(None) to all examples since this function is used by
+ Gpgme to do internal initialization. Update debian/rules to use dh_pysupport
+ instead of deprecated dh_python.
+
+ pyme/debian/rules | 8 +++-----
+ pyme/examples/PyGtkGpgKeys.py | 7 ++++++-
+ pyme/examples/delkey.py | 2 ++
+ pyme/examples/encrypt-to-all.py | 3 +++
+ pyme/examples/exportimport.py | 2 ++
+ pyme/examples/genkey.py | 1 +
+ pyme/examples/inter-edit.py | 3 +++
+ pyme/examples/pygpa.py | 5 +++++
+ pyme/examples/sign.py | 2 ++
+ pyme/examples/signverify.py | 2 ++
+ pyme/examples/simple.py | 2 ++
+ pyme/examples/t-edit.py | 3 +++
+ 12 files changed, 34 insertions(+), 6 deletions(-)
+
+ commit ae76c6176457dd38e0634cbc17d794294a3a81d2
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 12 22:20:38 2006 +0000
+
+ Change name of internal package name from 'gpgme' to 'pygpgme' to avoid
+ conflict with gpgme.dll on Windows.
+ Fix build with SWIG 1.3.28.
+ Change version to 0.7.1 in a preparation for new release.
+
+ pyme/Makefile | 3 +-
+ pyme/debian/changelog | 12 ++++
+ pyme/gpgme.i | 19 +++---
+ pyme/pyme/callbacks.py | 1 -
+ pyme/pyme/core.py | 153 +++++++++++++++++++++++++------------------------
+ pyme/pyme/errors.py | 12 ++--
+ pyme/pyme/util.py | 10 ++--
+ pyme/pyme/version.py | 2 +-
+ pyme/setup.py | 4 +-
+ 9 files changed, 116 insertions(+), 100 deletions(-)
+
+ commit d644383a76e9f83bc2d426628319e3c4a989dc2d
+ Author: belyi <devnull at localhost>
+ Date: Sat Dec 17 01:34:53 2005 +0000
+
+ Put all constants into pyme.constants package to avoid stepping on python
+ reserved words.
+ Add build rules for Mingw32 and Cygwin on Windows. Rules for Mingw under
+ Debian are still to come.
+ Fixed a small bug in pygpa.py example.
+
+ pyme/Makefile | 11 ++++++++---
+ pyme/examples/pygpa.py | 3 ++-
+ pyme/pyme/__init__.py | 2 +-
+ pyme/pyme/constants/__init__.py | 3 +++
+ pyme/setup.py | 42 ++++++++++++++++++++++++++++++++++++-----
+ 5 files changed, 51 insertions(+), 10 deletions(-)
+
+ commit 89eb370fcaa8adc9d219eadbaa579dde7bf06329
+ Author: belyi <devnull at localhost>
+ Date: Mon Aug 1 03:08:32 2005 +0000
+
+ Imported changes provided by Joost van Baal:
+ Use dh_python in debian/rules and change the Section pyme belongs to from
+ 'libs' to 'python'.
+
+ pyme/debian/control | 6 +++---
+ pyme/debian/rules | 2 ++
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+ commit ad76d10c2a77b45b7459c62131279e946b860891
+ Author: belyi <devnull at localhost>
+ 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 ++++++++---
+ pyme/Makefile | 4 ++--
+ pyme/pyme/__init__.py | 2 +-
+ 3 files changed, 11 insertions(+), 6 deletions(-)
+
+ commit 2fe1a81e00721698bfa6850b3db2eb85e43d1724
+ Author: belyi <devnull at localhost>
+ Date: Wed Jun 8 16:16:18 2005 +0000
+
+ Update pyme documentation to remove dead links to pyme.gpgme.html and
+ pyme._gpgme.html
+ Added reference to the installed GPGME and PyMe documentation to the head
+ web page.
+ Updated Makefile to install all *.html files and to clean *~ files in all
+ subdirectories
+
+ pyme-web/Makefile | 10 ++++++----
+ pyme-web/doc/pyme/index.html | 8 +++-----
+ pyme-web/doc/pyme/pyme.callbacks.html | 8 --------
+ pyme-web/doc/pyme/pyme.core.html | 1 -
+ pyme-web/doc/pyme/pyme.errors.html | 8 --------
+ pyme-web/doc/pyme/pyme.html | 8 +++-----
+ pyme-web/doc/pyme/pyme.util.html | 8 --------
+ pyme-web/index.html | 9 +++++++--
+ 8 files changed, 19 insertions(+), 41 deletions(-)
+
+ commit 6aa34cce4ea0099e50b4936dfee59778157b8ca8
+ Author: belyi <devnull at localhost>
+ Date: Wed Jun 8 15:18:20 2005 +0000
+
+ Added pyme and gpgme documentation.
+
+ pyme-web/doc/gpgme/gpgme.html | 251 ++++++++
+ pyme-web/doc/gpgme/gpgme_1.html | 76 +++
+ pyme-web/doc/gpgme/gpgme_10.html | 61 ++
+ pyme-web/doc/gpgme/gpgme_11.html | 130 ++++
+ pyme-web/doc/gpgme/gpgme_12.html | 82 +++
+ pyme-web/doc/gpgme/gpgme_13.html | 130 ++++
+ pyme-web/doc/gpgme/gpgme_14.html | 108 ++++
+ pyme-web/doc/gpgme/gpgme_15.html | 69 +++
+ pyme-web/doc/gpgme/gpgme_16.html | 169 +++++
+ pyme-web/doc/gpgme/gpgme_17.html | 63 ++
+ pyme-web/doc/gpgme/gpgme_18.html | 63 ++
+ pyme-web/doc/gpgme/gpgme_19.html | 66 ++
+ pyme-web/doc/gpgme/gpgme_2.html | 79 +++
+ pyme-web/doc/gpgme/gpgme_20.html | 120 ++++
+ pyme-web/doc/gpgme/gpgme_21.html | 102 +++
+ pyme-web/doc/gpgme/gpgme_22.html | 108 ++++
+ pyme-web/doc/gpgme/gpgme_23.html | 237 +++++++
+ pyme-web/doc/gpgme/gpgme_24.html | 154 +++++
+ pyme-web/doc/gpgme/gpgme_25.html | 248 ++++++++
+ pyme-web/doc/gpgme/gpgme_26.html | 107 ++++
+ pyme-web/doc/gpgme/gpgme_27.html | 80 +++
+ pyme-web/doc/gpgme/gpgme_28.html | 67 ++
+ pyme-web/doc/gpgme/gpgme_29.html | 164 +++++
+ pyme-web/doc/gpgme/gpgme_3.html | 86 +++
+ pyme-web/doc/gpgme/gpgme_30.html | 106 ++++
+ pyme-web/doc/gpgme/gpgme_31.html | 232 +++++++
+ pyme-web/doc/gpgme/gpgme_32.html | 85 +++
+ pyme-web/doc/gpgme/gpgme_33.html | 223 +++++++
+ pyme-web/doc/gpgme/gpgme_34.html | 83 +++
+ pyme-web/doc/gpgme/gpgme_35.html | 70 +++
+ pyme-web/doc/gpgme/gpgme_36.html | 63 ++
+ pyme-web/doc/gpgme/gpgme_37.html | 66 ++
+ pyme-web/doc/gpgme/gpgme_38.html | 86 +++
+ pyme-web/doc/gpgme/gpgme_39.html | 79 +++
+ pyme-web/doc/gpgme/gpgme_4.html | 83 +++
+ pyme-web/doc/gpgme/gpgme_40.html | 89 +++
+ pyme-web/doc/gpgme/gpgme_41.html | 99 +++
+ pyme-web/doc/gpgme/gpgme_42.html | 144 +++++
+ pyme-web/doc/gpgme/gpgme_43.html | 152 +++++
+ pyme-web/doc/gpgme/gpgme_44.html | 112 ++++
+ pyme-web/doc/gpgme/gpgme_45.html | 101 +++
+ pyme-web/doc/gpgme/gpgme_46.html | 459 ++++++++++++++
+ pyme-web/doc/gpgme/gpgme_47.html | 292 +++++++++
+ pyme-web/doc/gpgme/gpgme_48.html | 363 +++++++++++
+ pyme-web/doc/gpgme/gpgme_49.html | 209 +++++++
+ pyme-web/doc/gpgme/gpgme_5.html | 74 +++
+ pyme-web/doc/gpgme/gpgme_50.html | 88 +++
+ pyme-web/doc/gpgme/gpgme_51.html | 208 +++++++
+ pyme-web/doc/gpgme/gpgme_52.html | 154 +++++
+ pyme-web/doc/gpgme/gpgme_53.html | 291 +++++++++
+ pyme-web/doc/gpgme/gpgme_54.html | 91 +++
+ pyme-web/doc/gpgme/gpgme_55.html | 107 ++++
+ pyme-web/doc/gpgme/gpgme_56.html | 140 +++++
+ pyme-web/doc/gpgme/gpgme_57.html | 106 ++++
+ pyme-web/doc/gpgme/gpgme_58.html | 89 +++
+ pyme-web/doc/gpgme/gpgme_59.html | 97 +++
+ pyme-web/doc/gpgme/gpgme_6.html | 77 +++
+ pyme-web/doc/gpgme/gpgme_60.html | 142 +++++
+ pyme-web/doc/gpgme/gpgme_61.html | 626 +++++++++++++++++++
+ pyme-web/doc/gpgme/gpgme_62.html | 107 ++++
+ pyme-web/doc/gpgme/gpgme_63.html | 67 ++
+ pyme-web/doc/gpgme/gpgme_64.html | 95 +++
+ pyme-web/doc/gpgme/gpgme_65.html | 233 +++++++
+ pyme-web/doc/gpgme/gpgme_66.html | 65 ++
+ pyme-web/doc/gpgme/gpgme_67.html | 220 +++++++
+ pyme-web/doc/gpgme/gpgme_68.html | 75 +++
+ pyme-web/doc/gpgme/gpgme_69.html | 119 ++++
+ pyme-web/doc/gpgme/gpgme_7.html | 123 ++++
+ pyme-web/doc/gpgme/gpgme_70.html | 107 ++++
+ pyme-web/doc/gpgme/gpgme_71.html | 218 +++++++
+ pyme-web/doc/gpgme/gpgme_72.html | 134 ++++
+ pyme-web/doc/gpgme/gpgme_73.html | 299 +++++++++
+ pyme-web/doc/gpgme/gpgme_74.html | 103 ++++
+ pyme-web/doc/gpgme/gpgme_75.html | 104 ++++
+ pyme-web/doc/gpgme/gpgme_76.html | 118 ++++
+ pyme-web/doc/gpgme/gpgme_77.html | 95 +++
+ pyme-web/doc/gpgme/gpgme_78.html | 71 +++
+ pyme-web/doc/gpgme/gpgme_79.html | 686 +++++++++++++++++++++
+ pyme-web/doc/gpgme/gpgme_8.html | 155 +++++
+ pyme-web/doc/gpgme/gpgme_80.html | 120 ++++
+ pyme-web/doc/gpgme/gpgme_81.html | 278 +++++++++
+ pyme-web/doc/gpgme/gpgme_82.html | 272 ++++++++
+ pyme-web/doc/gpgme/gpgme_83.html | 180 ++++++
+ pyme-web/doc/gpgme/gpgme_84.html | 99 +++
+ pyme-web/doc/gpgme/gpgme_9.html | 104 ++++
+ pyme-web/doc/gpgme/gpgme_abt.html | 206 +++++++
+ pyme-web/doc/gpgme/gpgme_fot.html | 53 ++
+ pyme-web/doc/gpgme/gpgme_ovr.html | 68 ++
+ pyme-web/doc/gpgme/gpgme_toc.html | 247 ++++++++
+ pyme-web/doc/gpgme/index.html | 251 ++++++++
+ pyme-web/doc/pyme/index.html | 166 +++++
+ pyme-web/doc/pyme/pyme.callbacks.html | 50 ++
+ .../doc/pyme/pyme.constants.data.encoding.html | 48 ++
+ pyme-web/doc/pyme/pyme.constants.data.html | 29 +
+ pyme-web/doc/pyme/pyme.constants.event.html | 48 ++
+ pyme-web/doc/pyme/pyme.constants.html | 39 ++
+ pyme-web/doc/pyme/pyme.constants.import.html | 49 ++
+ pyme-web/doc/pyme/pyme.constants.keylist.html | 29 +
+ pyme-web/doc/pyme/pyme.constants.keylist.mode.html | 48 ++
+ pyme-web/doc/pyme/pyme.constants.md.html | 58 ++
+ pyme-web/doc/pyme/pyme.constants.pk.html | 50 ++
+ pyme-web/doc/pyme/pyme.constants.protocol.html | 46 ++
+ pyme-web/doc/pyme/pyme.constants.sig.html | 29 +
+ pyme-web/doc/pyme/pyme.constants.sig.mode.html | 47 ++
+ pyme-web/doc/pyme/pyme.constants.sigsum.html | 55 ++
+ pyme-web/doc/pyme/pyme.constants.status.html | 117 ++++
+ pyme-web/doc/pyme/pyme.constants.validity.html | 50 ++
+ pyme-web/doc/pyme/pyme.core.html | 254 ++++++++
+ pyme-web/doc/pyme/pyme.errors.html | 90 +++
+ pyme-web/doc/pyme/pyme.html | 166 +++++
+ pyme-web/doc/pyme/pyme.util.html | 78 +++
+ pyme-web/doc/pyme/pyme.version.html | 37 ++
+ pyme-web/index.html | 6 +-
+ 113 files changed, 14966 insertions(+), 1 deletion(-)
+
+ commit 2d6fe54479f042644f7b0f3d2fe35877d2056144
+ Author: belyi <devnull at localhost>
+ Date: Thu May 19 02:06:09 2005 +0000
+
+ Added INSTALL file.
+
+ pyme/INSTALL | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+ commit d6892fff0c3cedf41dba4c25ab8608e7f2bc039c
+ Author: belyi <devnull at localhost>
+ Date: Tue May 17 16:49:28 2005 +0000
+
+ Update copyright note on simple.py
+
+ pyme/examples/simple.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+ commit c2cd9cdf5995843aad7b200b929db2969effc9d2
+ Author: belyi <devnull at localhost>
+ Date: Tue May 17 15:03:58 2005 +0000
+
+ Update simple.py to catch errors.
+
+ pyme/examples/simple.py | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+ commit eaedae7c6a0ea993caab067efe781a59b6769c44
+ Author: belyi <devnull at localhost>
+ Date: Tue May 17 01:18:23 2005 +0000
+
+ Added 'PYTHON = python' into Makefile for bug #1199122
+
+ pyme/Makefile | 1 +
+ pyme/examples/signverify.py | 1 +
+ 2 files changed, 2 insertions(+)
+
+ commit 56fd244bb2636a4d58629899ea3cde1d96428198
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 27 21:37:06 2005 +0000
+
+ Added pygpa example.
+
+ pyme/debian/changelog | 3 +-
+ pyme/examples/pygpa.glade | 5546 +++++++++++++++++++++++++++++++++++++++++++++
+ pyme/examples/pygpa.py | 1459 ++++++++++++
+ 3 files changed, 7007 insertions(+), 1 deletion(-)
+
+ commit 2d9a2a91a59ac3fee5410c953b7e0859e9e7cd35
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 21 15:17:51 2005 +0000
+
+ Change version to 0.7.0 due to the change in license.
+
+ pyme/debian/changelog | 2 +-
+ pyme/pyme/version.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+ commit 94e34e38d742f145385bd235825b6ba1e30d8339
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 21 03:53:12 2005 +0000
+
+ Changed license on PyMe from GPL to LGPL.
+ PyMe examples keep GPL license.
+
+ pyme/COPYING.LESSER | 510 +++++++++++++++++++++++++++++++++++
+ pyme/Makefile | 20 +-
+ pyme/debian/changelog | 4 +-
+ pyme/debian/copyright | 22 +-
+ pyme/gpgme-h-clean.py | 16 ++
+ pyme/gpgme.i | 20 +-
+ pyme/helpers.c | 20 +-
+ pyme/helpers.h | 20 +-
+ pyme/pyme/__init__.py | 20 +-
+ pyme/pyme/callbacks.py | 20 +-
+ pyme/pyme/constants/data/encoding.py | 20 +-
+ pyme/pyme/constants/event.py | 20 +-
+ pyme/pyme/constants/import.py | 20 +-
+ pyme/pyme/constants/keylist/mode.py | 20 +-
+ pyme/pyme/constants/md.py | 20 +-
+ pyme/pyme/constants/pk.py | 20 +-
+ pyme/pyme/constants/protocol.py | 20 +-
+ pyme/pyme/constants/sig/mode.py | 20 +-
+ pyme/pyme/constants/sigsum.py | 20 +-
+ pyme/pyme/constants/status.py | 20 +-
+ pyme/pyme/constants/validity.py | 20 +-
+ pyme/pyme/core.py | 20 +-
+ pyme/pyme/errors.py | 20 +-
+ pyme/pyme/util.py | 20 +-
+ pyme/pyme/version.py | 22 +-
+ pyme/setup.py | 20 +-
+ 26 files changed, 761 insertions(+), 233 deletions(-)
+
+ commit 0d8aa0f6335cb1506a37085095ed45173b099a02
+ Author: belyi <devnull at localhost>
+ Date: Tue Apr 19 01:46:06 2005 +0000
+
+ Added __hash__ and __eq__ methods to GpgmeWrapper to allow both Context()
+ and Data() to be used as a dictionary key.
+ Changed core.wait() function to always return a tuple. On timeout now it
+ returns (0, None) instead of just None. Plus, return context is now a
+ Context() object instead of a wrapper return by underlying gpgme.
+
+ pyme/helpers.c | 1 -
+ pyme/pyme/core.py | 25 +++++++++++++++----------
+ pyme/pyme/util.py | 9 +++++++++
+ 3 files changed, 24 insertions(+), 11 deletions(-)
+
+ commit 63ff6d10637be1dcbcd78c939ac1ef1ac30b1024
+ Author: belyi <devnull at localhost>
+ Date: Wed Apr 6 04:58:40 2005 +0000
+
+ Made hook parameter optional in passphrase_cb and progress_cb.
+ Allowed None for callbacks to unset ones set previously.
+ Removed cleanup of exception in callbacks - now just retrieve the error code.
+ Added prev_bad parameter in passphrase_cb since it can be used in
+ change password protocols.
+ Updated examples to follow new sets of arguments in callbacks
+ Updated op_edit to check if passed key is None (otherwise gpgme dumps core)
+ God rid of annoying warning "function declaration isn't a prototype" in
+ helpers.c and helpers.h by changing from () to (void) list of arguments.
+
+ pyme/debian/changelog | 10 +++++---
+ pyme/examples/signverify.py | 2 +-
+ pyme/examples/t-edit.py | 2 +-
+ pyme/gpgme.i | 18 +++++++++-----
+ pyme/helpers.c | 60 ++++++++++++++++++++++++++++++---------------
+ pyme/helpers.h | 4 +--
+ pyme/pyme/callbacks.py | 6 +++--
+ pyme/pyme/core.py | 47 +++++++++++++++++++++--------------
+ pyme/pyme/errors.py | 2 +-
+ 9 files changed, 96 insertions(+), 55 deletions(-)
+
+ commit 8f0ab8138c7aa190936376ccbbf33bb09c64d6f1
+ Author: belyi <devnull at localhost>
+ Date: Thu Mar 31 23:50:59 2005 +0000
+
+ Added exception handling in passphrase_cb and edit_cb. If GPGMEError
+ exception is thrown in those callbacks it will be converted into its
+ core representation and return as an error code to the caller.
+ On all other exceptions error code will be GPG_ERR_GENERAL.
+
+ pyme/Makefile | 1 +
+ pyme/debian/changelog | 8 ++++++++
+ pyme/gpgme.i | 20 ++++++++++++++------
+ pyme/helpers.c | 51 +++++++++++++++++++++++++++++++++++++++++++++------
+ pyme/helpers.h | 3 +++
+ 5 files changed, 71 insertions(+), 12 deletions(-)
+
+ commit 9903d1fb11231e7e3d920e58d1ecb674c5988b07
+ Author: belyi <devnull at localhost>
+ Date: Thu Mar 31 05:12:15 2005 +0000
+
+ Remove workaround from Context.wait() method since the bug report and
+ patch fixing gpgme_wait's behavior is sent to GPMGE developers already.
+ Added errorcheck into op_edit() so that it can report an error.
+
+ pyme/pyme/core.py | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+ commit 45e8a5f4e13d3ca797ec3b0037242874a6be5562
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 26 19:44:18 2005 +0000
+
+ Updated verion number to 0.6.2 in version.py
+ Added examples/*.glade files into documentation package.
+
+ pyme/debian/examples | 1 +
+ pyme/pyme/version.py | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+ commit 270b87bb40e180cb6e8f1de9a0e8161525ffa4ab
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 26 19:31:14 2005 +0000
+
+ Updated debian/changelog regarding PyGtkGpgKeys example and a fix in errors.
+
+ pyme/debian/changelog | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+ commit ea4682009a506db91e5174ffd038fe7e4406b591
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 26 19:25:36 2005 +0000
+
+ Added handling of right mouse button click.
+ Changed reporting a string instead of a number on key generation failure.
+
+ pyme/examples/PyGtkGpgKeys.glade | 2 ++
+ pyme/examples/PyGtkGpgKeys.py | 30 +++++++++++++++++++++++++++---
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+
+ commit f65ad1a703d0098a3204fb8527a54d253e5847e7
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 26 18:11:11 2005 +0000
+
+ Added another column indicating if a key has a secret part.
+ Automated generation of the View menu from the view field of the KeyColumn
+ class.
+
+ pyme/examples/PyGtkGpgKeys.glade | 93 ++--------------------------------------
+ pyme/examples/PyGtkGpgKeys.py | 74 +++++++++++++++++---------------
+ 2 files changed, 44 insertions(+), 123 deletions(-)
+
+ commit b54e83a7a7a5785502f3c7e8b95f15e23b40e65a
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 26 16:45:13 2005 +0000
+
+ Small change to the way gtk.TreeModel object is used.
+
+ pyme/examples/PyGtkGpgKeys.py | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+ commit 7078db75cef4c1fd70cf03e37172bdb4f933fd1b
+ Author: belyi <devnull at localhost>
+ Date: Fri Mar 25 23:33:06 2005 +0000
+
+ Use more comprehansible error reporting since gpgme_strerror_r returns None
+ all the time.
+
+ pyme/pyme/errors.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+ commit 151213f4344d9984975721440af07de09e3df61c
+ Author: belyi <devnull at localhost>
+ Date: Fri Mar 25 04:30:17 2005 +0000
+
+ Improved PyGtkGpgKeys example to manage owner_trust on keys.
+ Added another example inter-edit.py which is just a hepler to write
+ scripts for Context.op_edit() command.
+
+ pyme/examples/PyGtkGpgKeys.glade | 78 ++++++++++++++++++++++++++++++++++++++++
+ pyme/examples/PyGtkGpgKeys.py | 68 +++++++++++++++++++++++++++++++----
+ pyme/examples/inter-edit.py | 54 ++++++++++++++++++++++++++++
+ pyme/examples/t-edit.py | 18 ++++++++++
+ 4 files changed, 212 insertions(+), 6 deletions(-)
+
+ commit fc7235af217bcee5231ce7fbd7f234712d5ad3b0
+ Author: belyi <devnull at localhost>
+ Date: Fri Mar 25 00:30:39 2005 +0000
+
+ Updated PyGtkGpgKeys example to include import, export and reload
+ functionality. Also added ability to remove number of keys simultanously.
+ Rearanged how KeyColumn is used to avoid unnecessary sorts and duplication
+ of information in different parts of the code.
+
+ pyme/examples/PyGtkGpgKeys.glade | 86 +++++++++-
+ pyme/examples/PyGtkGpgKeys.py | 332 ++++++++++++++++++++++++++++-----------
+ 2 files changed, 325 insertions(+), 93 deletions(-)
+
+ commit 9f65749ccb1b7cab562e19c03f4371d5f7d94912
+ Author: belyi <devnull at localhost>
+ Date: Thu Mar 24 05:51:03 2005 +0000
+
+ Added example of PyGTK+ and PyMe integration.
+ For now it does only simple things - listing, deleting, and generating keys.
+
+ pyme/examples/PyGtkGpgKeys.glade | 1321 +++++++++++++++++++++++++++++++++++++
+ pyme/examples/PyGtkGpgKeys.gladep | 8 +
+ pyme/examples/PyGtkGpgKeys.py | 424 ++++++++++++
+ 3 files changed, 1753 insertions(+)
+
+ commit 59e23f32c3b46413c9ec09e23e1a385a110fb103
+ Author: belyi <devnull at localhost>
+ Date: Thu Mar 24 05:44:58 2005 +0000
+
+ Added wait method Context class which handles asynchornous calls a little
+ bit better than the one generated by SWIG.
+
+ pyme/debian/changelog | 7 +++++++
+ pyme/gpgme.i | 1 +
+ pyme/pyme/core.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 48 insertions(+)
+
+ commit 4c1b5259e4985df2cba0ae4fc09f12cd94603a75
+ Author: belyi <devnull at localhost>
+ Date: Tue Mar 22 18:29:31 2005 +0000
+
+ Added correct handling of Context.op_edit() method.
+ Added example/t-edit.py showing usage for this method.
+ Output of this example should match output of the tests/gpg/t-edit
+ from the GPGME test suite.
+ Remove unused static function from helpers.c
+
+ pyme/examples/t-edit.py | 38 ++++++++++++++++++++++++++++++++++++++
+ pyme/gpgme.i | 36 ++++++++++++++++++++++++++++++++++++
+ pyme/helpers.c | 36 ------------------------------------
+ pyme/pyme/core.py | 5 ++++-
+ 4 files changed, 78 insertions(+), 37 deletions(-)
+
+ commit dc587e215283bfef2dd594f86a7b2945f74f5155
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 19 01:43:59 2005 +0000
+
+ Update changelog to include note about deprecated function in 0.6.1 release
+
+ pyme/debian/changelog | 3 ++-
+ pyme/examples/encrypt-to-all.py | 3 +--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+ commit 86de4b3ad777f980ccf7ba3462c85bbe1787d1fd
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 19 01:40:07 2005 +0000
+
+ Remove deprecated functions from helpers.[ch]
+ Use gpgme-h-clean.py to remove deprecated functions and typedefs from
+ the GPGME header file. This will reduce the number of unused methods.
+
+ pyme/Makefile | 4 ++--
+ pyme/gpgme-h-clean.py | 26 ++++++++++++++++++++++++++
+ pyme/helpers.c | 8 --------
+ pyme/helpers.h | 2 --
+ 4 files changed, 28 insertions(+), 12 deletions(-)
+
+ commit 2483efcbd0d73c628c4d7717928a766c3b58f0aa
+ Author: belyi <devnull at localhost>
+ Date: Fri Mar 18 22:15:52 2005 +0000
+
+ Update copyright and author values in pyme/version.py
+ Create rules to build distribution files - one full and one without
+ debian bits.
+
+ pyme/Makefile | 28 ++++++++++++++++++++++------
+ pyme/pyme/version.py | 12 ++++++------
+ 2 files changed, 28 insertions(+), 12 deletions(-)
+
+ commit 168593285380f5a7805f3dd08657d429a72d3621
+ 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.
+
+ pyme/Makefile | 6 +++---
+ pyme/debian/changelog | 7 +++++++
+ pyme/debian/control | 30 +++++++++++++++++++++++++++---
+ pyme/debian/copyright | 10 ++++------
+ pyme/debian/rules | 4 ++++
+ pyme/debian/setup.cfg-2.4 | 8 ++++++++
+ pyme/examples/genkey.py | 4 ++--
+ pyme/gpgme.i | 4 ++--
+ pyme/helpers.c | 4 ++--
+ pyme/helpers.h | 4 ++--
+ pyme/pyme/__init__.py | 4 ++--
+ pyme/pyme/callbacks.py | 4 ++--
+ pyme/pyme/constants/data/encoding.py | 4 ++--
+ pyme/pyme/constants/event.py | 4 ++--
+ pyme/pyme/constants/import.py | 4 ++--
+ pyme/pyme/constants/keylist/mode.py | 4 ++--
+ pyme/pyme/constants/md.py | 4 ++--
+ pyme/pyme/constants/pk.py | 4 ++--
+ pyme/pyme/constants/protocol.py | 4 ++--
+ pyme/pyme/constants/sig/mode.py | 4 ++--
+ pyme/pyme/constants/sigsum.py | 4 ++--
+ pyme/pyme/constants/status.py | 4 ++--
+ pyme/pyme/constants/validity.py | 4 ++--
+ pyme/pyme/core.py | 4 ++--
+ pyme/pyme/errors.py | 4 ++--
+ pyme/pyme/util.py | 4 ++--
+ pyme/pyme/version.py | 2 +-
+ pyme/setup.py | 3 ++-
+ 28 files changed, 96 insertions(+), 54 deletions(-)
+
+ commit 6dbbb252771133724b2879ed6d767cd708196dae
+ Author: belyi <devnull at localhost>
+ Date: Fri Mar 18 18:04:35 2005 +0000
+
+ Remove the note about gpgme.i to be generated - it's been the primary source
+ for some time.
+
+ pyme/gpgme.i | 6 ------
+ 1 file changed, 6 deletions(-)
+
+ commit 9d449fa4889c6bda6d14583c0625b8d5c4ffe759
+ Author: belyi <devnull at localhost>
+ Date: Fri May 7 18:31:22 2004 +0000
+
+ Added my copyright in genkey.py since there's enough changes made.
+ Updated signverify to use only keys generated by genkey.py, to check
+ that keys added to singers are able to sign and to check that the
+ list of signers is not empty. The last check is necessary to prevent
+ signing with the key of the user running signverify.py script.
+ Added delkey.py script to delete keys generated by genkey.py
+ Added exportimport.py example for key export/import.
+
+ pyme/examples/delkey.py | 29 +++++++++++++++++
+ pyme/examples/exportimport.py | 76 +++++++++++++++++++++++++++++++++++++++++++
+ pyme/examples/genkey.py | 6 ++--
+ pyme/examples/signverify.py | 18 ++++++----
+ 4 files changed, 119 insertions(+), 10 deletions(-)
+
+ commit df98c8d28245ad2c14b0ab50fc8f8932853bec8b
+ Author: belyi <devnull at localhost>
+ Date: Tue May 4 17:34:15 2004 +0000
+
+ Added examples/signverify.py for unattended sing/verify.
+ Updated examples/genkey.py to work correctly.
+ Updated gpgme.i to allow None as a value for gpgme_data_t
+
+ pyme/examples/genkey.py | 14 ++-------
+ pyme/examples/signverify.py | 72 +++++++++++++++++++++++++++++++++++++++++++++
+ pyme/gpgme.i | 21 ++++++++-----
+ 3 files changed, 87 insertions(+), 20 deletions(-)
+
+ commit ba45931abf530ab89ead46d7233ff1b62b629a18
+ Author: belyi <devnull at localhost>
+ Date: Thu Apr 8 16:15:09 2004 +0000
+
+ Ensure that we support only python2.2 and up. :-)
+ Use generators in core.Context class which makes pyme.aux obsolete
+ Remove importing future nested_scopes since they are standart starting
+ with python2.2
+
+ pyme/pyme/__init__.py | 5 ++---
+ pyme/pyme/aux.py | 56 ---------------------------------------------------
+ pyme/pyme/core.py | 15 +++++++++++---
+ pyme/pyme/errors.py | 1 -
+ pyme/pyme/util.py | 2 +-
+ 5 files changed, 15 insertions(+), 64 deletions(-)
+
+ commit 4e9be5a55ecffa4da7ad5c192cc892eddaaa9586
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 03:53:30 2004 +0000
+
+ Small change to index.html
+ Added clean: rule to the Makefile
+
+ pyme-web/Makefile | 3 +++
+ pyme-web/index.html | 6 +++---
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+ commit 2efb95176f4edf56ed61c9ac0c3aa09c56534df0
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 03:00:32 2004 +0000
+
+ Added Makefile rules for pyme module installation.
+
+ pyme/Makefile | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+ commit 2b83d5d8b513029cc3e54f2fa502ccc85618104b
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 02:29:54 2004 +0000
+
+ Decorative change.
+
+ pyme/pyme/aux.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+ commit e3478015d763a036c1d806ae01433fce59712204
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 02:25:55 2004 +0000
+
+ Added RCS Id: tags
+
+ pyme/Makefile | 1 +
+ pyme/examples/encrypt-to-all.py | 3 ++-
+ pyme/examples/genkey.py | 3 ++-
+ pyme/examples/sign.py | 3 ++-
+ pyme/examples/simple.py | 3 ++-
+ pyme/gpgme.i | 1 +
+ pyme/helpers.c | 1 +
+ pyme/helpers.h | 1 +
+ pyme/pyme/__init__.py | 1 +
+ pyme/pyme/aux.py | 1 +
+ pyme/pyme/callbacks.py | 1 +
+ pyme/pyme/constants/__init__.py | 2 ++
+ pyme/pyme/constants/data/__init__.py | 2 ++
+ pyme/pyme/constants/data/encoding.py | 1 +
+ pyme/pyme/constants/event.py | 1 +
+ pyme/pyme/constants/import.py | 1 +
+ pyme/pyme/constants/keylist/__init__.py | 2 ++
+ pyme/pyme/constants/keylist/mode.py | 1 +
+ pyme/pyme/constants/md.py | 1 +
+ pyme/pyme/constants/pk.py | 1 +
+ pyme/pyme/constants/protocol.py | 1 +
+ pyme/pyme/constants/sig/__init__.py | 2 ++
+ pyme/pyme/constants/sig/mode.py | 1 +
+ pyme/pyme/constants/sigsum.py | 1 +
+ pyme/pyme/constants/status.py | 1 +
+ pyme/pyme/constants/validity.py | 1 +
+ pyme/pyme/core.py | 1 +
+ pyme/pyme/errors.py | 1 +
+ pyme/pyme/util.py | 1 +
+ pyme/pyme/version.py | 2 ++
+ 30 files changed, 39 insertions(+), 4 deletions(-)
+
+ commit b3b3712645332c5bc3e8d9d557aab21d48ff0f86
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 02:07:36 2004 +0000
+
+ Added Id: RCS tags to all files.
+
+ pyme-web/Makefile | 2 ++
+ pyme-web/index.html | 3 ++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+ commit 6aea2426beaaa8c43e6f2310a37a2737c0c3a1b5
+ Author: belyi <devnull at localhost>
+ Date: Sun Mar 21 01:50:55 2004 +0000
+
+ Update example on the init pyme.html page to match simple.py example.
+ Fix core.py to use getcode() instead of getvalue() method of the exception.
+
+ pyme/pyme/__init__.py | 22 ++++++++++++++--------
+ pyme/pyme/core.py | 4 ++--
+ 2 files changed, 16 insertions(+), 10 deletions(-)
+
+ commit dee337455ffd624d3f83e1c159c4bb2cefc692c9
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 20:32:29 2004 +0000
+
+ Added Makefile to simplify publishing web files.
+
+ pyme-web/Makefile | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+ commit af7129baa8260697d85c2ddb434562e8a80b62d8
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 20:15:53 2004 +0000
+
+ Added minimum of formating and SF icon.
+
+ pyme-web/index.html | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+ commit 2e64dcbf99cee796b51667b04d8961e390edde87
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 18:30:09 2004 +0000
+
+ Initial revision
+
+ pyme-web/index.html | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+ commit 1c51644b3d0b6611422d971758e35f303d2ad5df
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 05:10:46 2004 +0000
+
+ Update examples and package information on the initial pyme doc page.
+
+ pyme/pyme/__init__.py | 27 ++++++++++++---------------
+ 1 file changed, 12 insertions(+), 15 deletions(-)
+
+ commit b2d31b0bfbffdff5247d6db4e3c95140cc1b1f19
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 04:47:42 2004 +0000
+
+ Deleted unnecessary files.
+ Updated debian/control to remove dependency on python-xml package since there's
+ none now.
+ Move example files from 'doc' into separate control file.
+ Update debian/rules to build documentation from *.py files and to exclude
+ CVS directories from the installation.
+
+ pyme/Makefile | 26 ++-----
+ pyme/debian/control | 8 +--
+ pyme/debian/docs | 1 -
+ pyme/debian/ex.package.doc-base | 22 ------
+ pyme/debian/examples | 1 +
+ pyme/debian/manpage.1.ex | 60 ----------------
+ pyme/debian/manpage.sgml.ex | 152 ----------------------------------------
+ pyme/debian/rules | 12 ++--
+ 8 files changed, 15 insertions(+), 267 deletions(-)
+
+ commit 1b517dd9b82a433499b4696b06d94d756cd36e53
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 02:59:15 2004 +0000
+
+ Remove doc/gpgme directory containing GPGME documentation since this belongs
+ to a different project. Need to add reference in our documentation.
+
+ pyme/doc/gpgme/fdl.texi | 402 ------
+ pyme/doc/gpgme/gpgme.texi | 3372 -------------------------------------------
+ pyme/doc/gpgme/gpl.texi | 397 -----
+ pyme/doc/gpgme/version.texi | 4 -
+ 4 files changed, 4175 deletions(-)
+
+ commit 95d7d171da115a0fedfe2a4a7e5acc8aa408f673
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 02:45:03 2004 +0000
+
+ Change debian/rules to generate files by swig during build and to cleanup
+ those files on 'clean' rule.
+ Plus, leave generated gpgme_wrap.c in the root directory instead of moving
+ it into subdirectory 'generated'.
+
+ pyme/Makefile | 8 +++-----
+ pyme/debian/rules | 3 ++-
+ pyme/setup.py | 2 +-
+ 3 files changed, 6 insertions(+), 7 deletions(-)
+
+ commit 545b3d90d445c5c78e8d72b2c1780863e02c789a
+ Author: belyi <devnull at localhost>
+ Date: Sat Mar 20 02:18:01 2004 +0000
+
+ Initial revision
+
+ pyme/COPYING | 340 ++++
+ pyme/ChangeLog | 802 ++++++++
+ pyme/Makefile | 79 +
+ pyme/debian/README.Debian | 6 +
+ pyme/debian/changelog | 19 +
+ pyme/debian/control | 68 +
+ pyme/debian/copyright | 27 +
+ pyme/debian/dirs | 2 +
+ pyme/debian/docs | 2 +
+ pyme/debian/ex.package.doc-base | 22 +
+ pyme/debian/manpage.1.ex | 60 +
+ pyme/debian/manpage.sgml.ex | 152 ++
+ pyme/debian/postinst.ex | 48 +
+ pyme/debian/postrm.ex | 38 +
+ pyme/debian/preinst.ex | 44 +
+ pyme/debian/prerm.ex | 39 +
+ pyme/debian/rules | 130 ++
+ pyme/debian/setup.cfg-2.2 | 8 +
+ pyme/debian/setup.cfg-2.3 | 8 +
+ pyme/doc/gpgme/fdl.texi | 402 ++++
+ pyme/doc/gpgme/gpgme.texi | 3372 +++++++++++++++++++++++++++++++
+ pyme/doc/gpgme/gpl.texi | 397 ++++
+ pyme/doc/gpgme/version.texi | 4 +
+ pyme/examples/encrypt-to-all.py | 63 +
+ pyme/examples/genkey.py | 55 +
+ pyme/examples/sign.py | 28 +
+ pyme/examples/simple.py | 44 +
+ pyme/gpgme.i | 191 ++
+ pyme/helpers.c | 139 ++
+ pyme/helpers.h | 29 +
+ pyme/pyme/__init__.py | 134 ++
+ pyme/pyme/aux.py | 55 +
+ pyme/pyme/callbacks.py | 45 +
+ pyme/pyme/constants/__init__.py | 2 +
+ pyme/pyme/constants/data/__init__.py | 2 +
+ pyme/pyme/constants/data/encoding.py | 19 +
+ pyme/pyme/constants/event.py | 19 +
+ pyme/pyme/constants/import.py | 19 +
+ pyme/pyme/constants/keylist/__init__.py | 2 +
+ pyme/pyme/constants/keylist/mode.py | 19 +
+ pyme/pyme/constants/md.py | 19 +
+ pyme/pyme/constants/pk.py | 19 +
+ pyme/pyme/constants/protocol.py | 19 +
+ pyme/pyme/constants/sig/__init__.py | 2 +
+ pyme/pyme/constants/sig/mode.py | 19 +
+ pyme/pyme/constants/sigsum.py | 19 +
+ pyme/pyme/constants/status.py | 19 +
+ pyme/pyme/constants/validity.py | 19 +
+ pyme/pyme/core.py | 367 ++++
+ pyme/pyme/errors.py | 46 +
+ pyme/pyme/util.py | 61 +
+ pyme/pyme/version.py | 39 +
+ pyme/setup.py | 60 +
+ 53 files changed, 7642 insertions(+)
+
+ commit a3d5a442dc713b6c4d6fc4134db5b47e379dc41d
+ Author: root <devnull at localhost>
+ Date: Fri Mar 19 14:12:30 2004 +0000
+
+ initial checkin
+
+ CVSROOT/checkoutlist | 13 +++++++++++++
+ CVSROOT/commitinfo | 15 +++++++++++++++
+ CVSROOT/config | 21 +++++++++++++++++++++
+ CVSROOT/cvswrappers | 19 +++++++++++++++++++
+ CVSROOT/editinfo | 21 +++++++++++++++++++++
+ CVSROOT/loginfo | 26 ++++++++++++++++++++++++++
+ CVSROOT/modules | 26 ++++++++++++++++++++++++++
+ CVSROOT/notify | 12 ++++++++++++
+ CVSROOT/rcsinfo | 13 +++++++++++++
+ CVSROOT/taginfo | 20 ++++++++++++++++++++
+ CVSROOT/verifymsg | 21 +++++++++++++++++++++
+ 11 files changed, 207 insertions(+)
diff --cc lang/python/gpgme.i
index 0000000,c5b5bc9..4809fd6
mode 000000,100644..100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@@ -1,0 -1,297 +1,296 @@@
+ /*
+ # $Id$
+ # Copyright (C) 2004,2008 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
+ */
+ %module pygpgme
+ %include "cpointer.i"
+ %include "cstring.i"
+
+ // Generate doc strings for all methods.
+ %feature("autodoc", "0");
+
+ /* Allow use of Unicode objects, bytes, and None for strings. */
+
+ %typemap(in) const char * {
+ if ($input == Py_None)
+ $1 = NULL;
+ else if (PyUnicode_Check($input))
+ $1 = PyUnicode_AsUTF8($input);
+ else if (PyBytes_Check($input))
+ $1 = PyBytes_AsString($input);
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "arg %d: expected str, bytes, or None, got %s",
+ $argnum, $input->ob_type->tp_name);
+ return NULL;
+ }
+ }
+ %typemap(freearg) const char * "";
+
+ // Release returned buffers as necessary.
+ %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
+ {
+ 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;
+ }
+
+ 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;
+ }
+
+ %typemap(in) gpgme_key_t [] {
+ int i, numb = 0;
+ if (!PySequence_Check($input)) {
+ PyErr_Format(PyExc_ValueError, "arg %d: Expected a list of gpgme_key_t",
+ $argnum);
+ return NULL;
+ }
+ if((numb = PySequence_Length($input)) != 0) {
+ $1 = (gpgme_key_t*)malloc((numb+1)*sizeof(gpgme_key_t));
+ for(i=0; i<numb; i++) {
+ PyObject *pypointer = PySequence_GetItem($input, i);
+
+ /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */
+ /* &1_descriptor = $&1_descriptor *1_descriptor = $*1_descriptor */
+
+ // Following code is from swig's python.swg
+ if ((SWIG_ConvertPtr(pypointer,(void **) &$1[i], $*1_descriptor,SWIG_POINTER_EXCEPTION | $disown )) == -1) {
+ Py_DECREF(pypointer);
+ return NULL;
+ }
+ Py_DECREF(pypointer);
+ }
+ $1[numb] = NULL;
+ }
+ }
+ %typemap(freearg) gpgme_key_t [] {
+ if ($1) free($1);
+ }
+
+ // Special handling for references to our objects.
+ %typemap(in) gpgme_data_t DATAIN {
+ if ($input == Py_None)
+ $1 = NULL;
+ else {
+ PyObject *pypointer = NULL;
+
+ if((pypointer=object_to_gpgme_t($input, "$1_ltype", $argnum)) == NULL)
+ return NULL;
+
+ /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */
+
+ // Following code is from swig's python.swg
+
+ if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor,
+ SWIG_POINTER_EXCEPTION | $disown )) == -1) {
+ Py_DECREF(pypointer);
+ return NULL;
+ }
+ Py_DECREF(pypointer);
+ }
+ }
+
+ %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,
+ gpgme_data_t pubkey, gpgme_data_t seckey,
+ gpgme_data_t out};
+
+ // SWIG has problem interpreting ssize_t, off_t or gpgme_error_t in gpgme.h
+ %typemap(out) ssize_t, off_t, gpgme_error_t, gpgme_err_code_t, gpgme_err_source_t, gpg_error_t {
+ $result = PyLong_FromLong($1);
+ }
+ %typemap(in) ssize_t, off_t, gpgme_error_t, gpgme_err_code_t, gpgme_err_source_t, gpg_error_t {
+ $1 = PyLong_AsLong($input);
+ }
+
+ // Those are for gpgme_data_read() and gpgme_strerror_r()
+ %typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) {
+ $2 = PyLong_AsLong($input);
+ if ($2 < 0) {
+ PyErr_SetString(PyExc_ValueError, "Positive integer expected");
+ return NULL;
+ }
+ $1 = ($1_ltype) malloc($2+1);
+ }
+ %typemap(argout) (void *buffer, size_t size), (char *buf, size_t buflen) {
+ Py_XDECREF($result); /* Blow away any previous result */
+ if (result < 0) { /* Check for I/O error */
+ free($1);
+ return NULL;
+ }
+ $result = PyBytes_FromStringAndSize($1,result);
+ free($1);
+ }
+
+ /* For gpgme_data_write, but should be universal. */
+ %typemap(in) (const void *buffer, size_t size) {
+ if ($input == Py_None)
+ $1 = NULL, $2 = 0;
+ else if (PyUnicode_Check($input))
+ $1 = PyUnicode_AsUTF8AndSize($input, (size_t *) &$2);
+ else if (PyBytes_Check($input))
+ PyBytes_AsStringAndSize($input, (char **) &$1, (size_t *) &$2);
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "arg %d: expected str, bytes, or None, got %s",
+ $argnum, $input->ob_type->tp_name);
+ return NULL;
+ }
+ }
+ %typemap(freearg) (const void *buffer, size_t size) "";
+
+ // Make types containing 'next' field to be lists
+ %ignore next;
+ %typemap(out) gpgme_sig_notation_t, gpgme_engine_info_t, gpgme_subkey_t, gpgme_key_sig_t,
+ gpgme_user_id_t, gpgme_invalid_key_t, gpgme_recipient_t, gpgme_new_signature_t,
+ gpgme_signature_t, gpgme_import_status_t, gpgme_conf_arg_t, gpgme_conf_opt_t,
+ gpgme_conf_comp_t {
+ int i;
+ int size = 0;
+ $1_ltype curr;
+ for (curr = $1; curr != NULL; curr = curr->next) {
+ size++;
+ }
+ $result = PyList_New(size);
+ for (i=0,curr=$1; i<size; i++,curr=curr->next) {
+ PyObject *o = SWIG_NewPointerObj(SWIG_as_voidptr(curr), $1_descriptor, %newpointer_flags);
+ PyList_SetItem($result, i, o);
+ }
+ }
+
+ // Include mapper for edit callbacks
+ %typemap(in) (gpgme_edit_cb_t fnc, void *fnc_value) {
+ $1 = (gpgme_edit_cb_t) pyEditCb;
+ if ($input == Py_None)
+ $2 = NULL;
+ else
+ $2 = $input;
+ }
+
+ // Include the header file both for cc (first) and for swig (second)
+ // Include for swig locally since we need to fix 'class' usage there.
+ %{
+ #include <gpgme.h>
+ %}
+ %include "gpgme.h"
+
+ %constant long EOF = GPG_ERR_EOF;
+
+ // Generating and handling pointers-to-pointers.
+
+ %pointer_functions(gpgme_ctx_t, gpgme_ctx_t_p);
+ %pointer_functions(gpgme_data_t, gpgme_data_t_p);
+ %pointer_functions(gpgme_key_t, gpgme_key_t_p);
+ %pointer_functions(gpgme_error_t, gpgme_error_t_p);
+ %pointer_functions(gpgme_trust_item_t, gpgme_trust_item_t_p);
+ %pointer_functions(gpgme_engine_info_t, gpgme_engine_info_t_p);
+ %pointer_functions(PyObject *, PyObject_p_p);
+ %pointer_functions(void *, void_p_p);
+
+ // Helper functions.
+
+ %{
+ #include <stdio.h>
+ %}
+ FILE *fdopen(int fildes, const char *mode);
+
+ %{
+ #include "helpers.h"
+ %}
+ %include "helpers.h"
+
+ %{
+ gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status,
+ const char *args, int fd) {
+ PyObject *func = NULL, *dataarg = NULL, *pyargs = NULL, *retval = NULL;
+ PyObject *pyopaque = (PyObject *) opaque;
+ gpgme_error_t err_status = 0;
+
+ pygpgme_exception_init();
+
+ if (PyTuple_Check(pyopaque)) {
+ func = PyTuple_GetItem(pyopaque, 0);
+ dataarg = PyTuple_GetItem(pyopaque, 1);
+ pyargs = PyTuple_New(3);
+ } else {
+ func = pyopaque;
+ pyargs = PyTuple_New(2);
+ }
+
+ PyTuple_SetItem(pyargs, 0, PyLong_FromLong((long) status));
+ PyTuple_SetItem(pyargs, 1, PyUnicode_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()) {
+ err_status = pygpgme_exception2code();
+ } else {
+ if (fd>=0 && retval && PyUnicode_Check(retval)) {
+ const char *buffer;
+ Py_ssize_t size;
+
+ buffer = PyUnicode_AsUTF8AndSize(retval, &size);
+ write(fd, buffer, size);
+ write(fd, "\n", 1);
+ }
+ }
+
+ Py_XDECREF(retval);
+ return err_status;
+ }
+ %}
-
diff --cc lang/python/pyme/core.py
index 0000000,f3829d5..2a0ca07
mode 000000,100644..100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@@ -1,0 -1,483 +1,482 @@@
+ # $Id$
+ # Copyright (C) 2004,2008 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
+
+ # import generators for portability with python2.2
+
+
+ from . import pygpgme
+ from .errors import errorcheck, GPGMEError
+ from . import errors
+ from .util import GpgmeWrapper
+
+ class Context(GpgmeWrapper):
+ """From the GPGME C documentation:
+
+ * All cryptographic operations in GPGME are performed within a
+ * context, which contains the internal state of the operation as well as
+ * configuration parameters. By using several contexts you can run
+ * several cryptographic operations in parallel, with different
+ * configuration.
+
+ Thus, this is the place that you will usually start."""
+
+ def _getctype(self):
+ return 'gpgme_ctx_t'
+
+ def _getnameprepend(self):
+ return 'gpgme_'
+
+ def _errorcheck(self, name):
+ """This function should list all functions returning gpgme_error_t"""
+ if (name.startswith('gpgme_op_') and \
+ not name.endswith('_result')) or \
+ name == 'gpgme_signers_add' or \
+ name == 'gpgme_set_locale' or \
+ name == 'gpgme_set_keylist_mode' or \
+ name == 'gpgme_set_protocol':
+ return 1
+ return 0
+
+ def __init__(self, wrapped=None):
+ if wrapped:
+ self.wrapped = wrapped
+ self.own = False
+ else:
+ tmp = pygpgme.new_gpgme_ctx_t_p()
+ errorcheck(pygpgme.gpgme_new(tmp))
+ self.wrapped = pygpgme.gpgme_ctx_t_p_value(tmp)
+ pygpgme.delete_gpgme_ctx_t_p(tmp)
+ self.own = True
+ self.last_passcb = None
+ self.last_progresscb = None
+
+ def __del__(self):
+ if not pygpgme:
+ # At interpreter shutdown, pygpgme is set to NONE.
+ return
+
+ self._free_passcb()
+ self._free_progresscb()
+ if self.own and pygpgme.gpgme_release:
+ pygpgme.gpgme_release(self.wrapped)
+
+ def _free_passcb(self):
+ if self.last_passcb != None:
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_passcb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_passcb)
+ self.last_passcb = None
+
+ def _free_progresscb(self):
+ if self.last_progresscb != None:
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_progresscb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_progresscb)
+ self.last_progresscb = None
+
+ def op_keylist_all(self, *args, **kwargs):
+ self.op_keylist_start(*args, **kwargs)
+ key = self.op_keylist_next()
+ while key:
+ yield key
+ key = self.op_keylist_next()
+
+ def op_keylist_next(self):
+ """Returns the next key in the list created
+ by a call to op_keylist_start(). The object returned
+ is of type Key."""
+ ptr = pygpgme.new_gpgme_key_t_p()
+ try:
+ errorcheck(pygpgme.gpgme_op_keylist_next(self.wrapped, ptr))
+ key = pygpgme.gpgme_key_t_p_value(ptr)
+ except errors.GPGMEError as excp:
+ key = None
+ if excp.getcode() != errors.EOF:
+ raise excp
+ pygpgme.delete_gpgme_key_t_p(ptr)
+ 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()
+ errorcheck(pygpgme.gpgme_get_key(self.wrapped, fpr, ptr, secret))
+ key = pygpgme.gpgme_key_t_p_value(ptr)
+ pygpgme.delete_gpgme_key_t_p(ptr)
+ if key:
+ key.__del__ = lambda self: pygpgme.gpgme_key_unref(self)
+ return key
+
+ def op_trustlist_all(self, *args, **kwargs):
+ self.op_trustlist_start(*args, **kwargs)
+ trust = self.ctx.op_trustlist_next()
+ while trust:
+ yield trust
+ trust = self.ctx.op_trustlist_next()
+
+ def op_trustlist_next(self):
+ """Returns the next trust item in the list created
+ by a call to op_trustlist_start(). The object returned
+ is of type TrustItem."""
+ ptr = pygpgme.new_gpgme_trust_item_t_p()
+ try:
+ errorcheck(pygpgme.gpgme_op_trustlist_next(self.wrapped, ptr))
+ trust = pygpgme.gpgme_trust_item_t_p_value(ptr)
+ except errors.GPGMEError as excp:
+ trust = None
+ if excp.getcode() != errors.EOF:
+ raise
+ pygpgme.delete_gpgme_trust_item_t_p(ptr)
+ return trust
+
+ def set_passphrase_cb(self, func, hook=None):
+ """Sets the passphrase callback to the function specified by func.
+
+ When the system needs a passphrase, it will call func with three args:
+ hint, a string describing the key it needs the passphrase for;
+ 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.
+
+ Please see the GPGME manual for more information.
+ """
+ self._free_passcb()
+ if func == None:
+ hookdata = None
+ else:
+ self.last_passcb = pygpgme.new_PyObject_p_p()
+ if hook == None:
+ hookdata = func
+ else:
+ hookdata = (func, hook)
+ pygpgme.pygpgme_set_passphrase_cb(self.wrapped, hookdata, self.last_passcb)
+
+ def set_progress_cb(self, func, hook=None):
+ """Sets the progress meter callback to the function specified by
+
+ This function will be called to provide an interactive update of
+ the system's progress.
+
+ Please see the GPGME manual for more information."""
+ self._free_progresscb()
+ if func == None:
+ hookdata = None
+ else:
+ self.last_progresscb = pygpgme.new_PyObject_p_p()
+ if hook == None:
+ hookdata = func
+ else:
+ hookdata = (func, hook)
+ pygpgme.pygpgme_set_progress_cb(self.wrapped, hookdata, self.last_progresscb)
+
+ def get_engine_info(self):
+ """Returns this context specific engine info"""
+ return pygpgme.gpgme_ctx_get_engine_info(self.wrapped)
+
+ def set_engine_info(self, proto, file_name, home_dir=None):
+ """Changes the configuration of the crypto engine implementing the
+ protocol 'proto' for the context. 'file_name' is the file name of
+ the executable program implementing this protocol. 'home_dir' is the
+ directory name of the configuration directory (engine's default is
+ used if omitted)."""
+ errorcheck(pygpgme.gpgme_ctx_set_engine_info(self.wrapped, proto, file_name, home_dir))
+
+ def wait(self, hang):
+ """Wait for asynchronous call to finish. Wait forever if hang is True
+
+ Return:
+ On an async call completion its return status.
+ On timeout - None.
+
+ Please read the GPGME manual for more information."""
+ ptr = pygpgme.new_gpgme_error_t_p()
+ 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
+ else:
+ return status
+
+ def op_edit(self, key, func, fnc_value, out):
+ """Start key editing using supplied callback function"""
+ if key == None:
+ 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:
+
+ * A lot of data has to be exchanged between the user and the crypto
+ * engine, like plaintext messages, ciphertext, signatures and information
+ * about the keys. The technical details about exchanging the data
+ * information are completely abstracted by GPGME. The user provides and
+ * receives the data via `gpgme_data_t' objects, regardless of the
+ * communication protocol between GPGME and the crypto engine in use.
+
+ This Data class is the implementation of the GpgmeData objects.
+
+ Please see the information about __init__ for instantiation."""
+
+ def _getctype(self):
+ return 'gpgme_data_t'
+
+ def _getnameprepend(self):
+ return 'gpgme_data_'
+
+ def _errorcheck(self, name):
+ """This function should list all functions returning gpgme_error_t"""
+ if name == 'gpgme_data_release_and_get_mem' or \
+ name == 'gpgme_data_get_encoding' or \
+ 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.
+
+ If no args are specified, make it an empty object.
+
+ If string alone is specified, initialize it with the data
+ contained there.
+
+ If file, offset, and length are all specified, file must
+ be either a filename or a file-like object, and the object
+ will be initialized by reading the specified chunk from the file.
+
+ If cbs is specified, it MUST be a tuple of the form:
+
+ ((read_cb, write_cb, seek_cb, release_cb), hook)
+
+ where func is a callback function taking two arguments (count,
+ hook) and returning a string of read data, or None on EOF.
+ This will supply the read() method for the system.
+
+ If file is specified without any other arguments, then
+ it must be a filename, and the object will be initialized from
+ that file.
+
+ Any other use will result in undefined or erroneous behavior."""
+ self.wrapped = None
+ self.last_readcb = None
+
+ if cbs != None:
+ self.new_from_cbs(*cbs)
+ elif string != None:
+ self.new_from_mem(string)
+ elif file != None and offset != None and length != None:
+ self.new_from_filepart(file, offset, length)
+ elif file != None:
+ if type(file) == type("x"):
+ self.new_from_file(file)
+ else:
+ self.new_from_fd(file)
+ else:
+ self.new()
+
+ def __del__(self):
+ if not pygpgme:
+ # At interpreter shutdown, pygpgme is set to NONE.
+ return
+
+ if self.wrapped != None and pygpgme.gpgme_data_release:
+ pygpgme.gpgme_data_release(self.wrapped)
+ self._free_readcb()
+
+ def _free_readcb(self):
+ if self.last_readcb != None:
+ if pygpgme.pygpgme_clear_generic_cb:
+ pygpgme.pygpgme_clear_generic_cb(self.last_readcb)
+ if pygpgme.delete_PyObject_p_p:
+ pygpgme.delete_PyObject_p_p(self.last_readcb)
+ self.last_readcb = None
+
+ def new(self):
+ tmp = pygpgme.new_gpgme_data_t_p()
+ errorcheck(pygpgme.gpgme_data_new(tmp))
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_mem(self, string, copy = 1):
+ tmp = pygpgme.new_gpgme_data_t_p()
+ errorcheck(pygpgme.gpgme_data_new_from_mem(tmp,string,len(string),copy))
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_file(self, filename, copy = 1):
+ tmp = pygpgme.new_gpgme_data_t_p()
+ errorcheck(pygpgme.gpgme_data_new_from_file(tmp, filename, copy))
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_cbs(self, funcs, hook):
+ """Argument funcs must be a 4 element tuple with callbacks:
+ (read_cb, write_cb, seek_cb, release_cb)"""
+ tmp = pygpgme.new_gpgme_data_t_p()
+ self._free_readcb()
+ self.last_readcb = pygpgme.new_PyObject_p_p()
+ hookdata = (funcs, hook)
+ pygpgme.pygpgme_data_new_from_cbs(tmp, hookdata, self.last_readcb)
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_filepart(self, file, offset, length):
+ """This wraps the GPGME gpgme_data_new_from_filepart() function.
+ The argument "file" may be:
+
+ 1. a string specifying a file name, or
+ 3. a a file-like object. supporting the fileno() call and the mode
+ attribute."""
+
+ tmp = pygpgme.new_gpgme_data_t_p()
+ filename = None
+ fp = None
+
+ if type(file) == type("x"):
+ filename = file
+ else:
+ fp = pygpgme.fdopen(file.fileno(), file.mode)
+ if fp == None:
+ raise ValueError("Failed to open file from %s arg %s" % \
+ (str(type(file)), str(file)))
+
+ errorcheck(pygpgme.gpgme_data_new_from_filepart(tmp, filename, fp,
+ offset, length))
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_fd(self, file):
+ """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:
+ raise ValueError("Failed to open file from %s arg %s" % \
+ (str(type(file)), str(file)))
+ errorcheck(pygpgme.gpgme_data_new_from_fd(tmp, fp))
+ self.wrapped = pygpgme.gpgme_data_t_p_value(tmp)
+ pygpgme.delete_gpgme_data_t_p(tmp)
+
+ def new_from_stream(self, file):
+ """This wrap around gpgme_data_new_from_stream is an alias for
+ 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):
+ """Write buffer given as string or bytes.
+
+ If a string is given, it is implicitly encoded using UTF-8."""
+ written = pygpgme.gpgme_data_write(self.wrapped, buffer)
+ if written < 0:
+ raise GPGMEError.fromSyserror()
+ return written
+
+ def read(self, size = -1):
+ """Read at most size bytes, returned as bytes.
+
+ 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 ''
+
+ if size > 0:
+ return pygpgme.gpgme_data_read(self.wrapped, size)
+ else:
+ chunks = []
+ while 1:
+ result = pygpgme.gpgme_data_read(self.wrapped, 4096)
+ if len(result) == 0:
+ break
+ chunks.append(result)
+ return b''.join(chunks)
+
+ def pubkey_algo_name(algo):
+ return pygpgme.gpgme_pubkey_algo_name(algo)
+
+ def hash_algo_name(algo):
+ return pygpgme.gpgme_hash_algo_name(algo)
+
+ def get_protocol_name(proto):
+ return pygpgme.gpgme_get_protocol_name(proto)
+
+ def check_version(version=None):
+ return pygpgme.gpgme_check_version(version)
+
+ def engine_check_version (proto):
+ try:
+ errorcheck(pygpgme.gpgme_engine_check_version(proto))
+ return True
+ except errors.GPGMEError:
+ return False
+
+ def get_engine_info():
+ ptr = pygpgme.new_gpgme_engine_info_t_p()
+ try:
+ errorcheck(pygpgme.gpgme_get_engine_info(ptr))
+ info = pygpgme.gpgme_engine_info_t_p_value(ptr)
+ except errors.GPGMEError:
+ info = None
+ pygpgme.delete_gpgme_engine_info_t_p(ptr)
+ return info
+
+ def set_engine_info(proto, file_name, home_dir=None):
+ """Changes the default configuration of the crypto engine implementing
+ the protocol 'proto'. 'file_name' is the file name of
+ the executable program implementing this protocol. 'home_dir' is the
+ directory name of the configuration directory (engine's default is
+ used if omitted)."""
+ errorcheck(pygpgme.gpgme_set_engine_info(proto, file_name, home_dir))
+
+ def set_locale(category, value):
+ """Sets the default locale used by contexts"""
+ errorcheck(pygpgme.gpgme_set_locale(None, 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)
+ status = pygpgme.gpgme_error_t_p_value(ptr)
+ pygpgme.delete_gpgme_error_t_p(ptr)
+ if context == None:
+ errorcheck(status)
+ else:
+ context = Context(context)
+ return (status, context)
-
diff --cc lang/python/pyme/util.py
index 0000000,a9fa19d..3c34c79
mode 000000,100644..100644
--- a/lang/python/pyme/util.py
+++ b/lang/python/pyme/util.py
@@@ -1,0 -1,98 +1,97 @@@
+ # $Id$
+ # Copyright (C) 2004,2008 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
+
+ from . import pygpgme
+ from .errors import errorcheck
+
+ def process_constants(starttext, dict):
+ """Called by the constant libraries to load up the appropriate constants
+ from the C library."""
+ index = len(starttext)
+ for identifier in dir(pygpgme):
+ if not identifier.startswith(starttext):
+ 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."""
+ def __repr__(self):
+ return '<instance of %s.%s with GPG object at %s>' % \
+ (__name__, self.__class__.__name__,
+ self.wrapped)
+
+ def __str__(self):
+ return repr(self)
+
+ def __hash__(self):
+ return hash(repr(self.wrapped))
+
+ def __eq__(self, other):
+ if other == None:
+ return False
+ else:
+ return repr(self.wrapped) == repr(other.wrapped)
+
+ def _getctype(self):
+ """Must be implemented by child classes.
+
+ Must return the name of the c type."""
+ raise NotImplementedError()
+
+ def _getnameprepend(self):
+ """Must be implemented by child classes.
+
+ Must return the prefix of all c functions mapped to methods of
+ this class."""
+ raise NotImplementedError()
+
+ def _errorcheck(self, name):
+ """Must be implemented by child classes.
+
+ This function must return a trueish value for all c functions
+ returning gpgme_error_t."""
+ raise NotImplementedError()
+
+ def __getattr__(self, key):
+ """On-the-fly function generation."""
+ if key[0] == '_' or self._getnameprepend() == None:
+ return None
+ name = self._getnameprepend() + key
+ func = getattr(pygpgme, name)
+
+ if self._errorcheck(name):
+ def _funcwrap(slf, *args, **kwargs):
+ return errorcheck(func(slf.wrapped, *args, **kwargs),
+ "Invocation of " + name)
+ else:
+ def _funcwrap(slf, *args, **kwargs):
+ return func(slf.wrapped, *args, **kwargs)
+
+ _funcwrap.__doc__ = getattr(func, "__doc__")
+
+ # Monkey-patch the class.
+ setattr(self.__class__, key, _funcwrap)
+
+ # Bind the method to 'self'.
+ def wrapper(*args, **kwargs):
+ return _funcwrap(self, *args, **kwargs)
+ _funcwrap.__doc__ = getattr(func, "__doc__")
+
+ return wrapper
-
diff --cc lang/python/setup.py
index 0000000,f3d9143..374df5d
mode 000000,100755..100755
--- a/lang/python/setup.py
+++ b/lang/python/setup.py
@@@ -1,0 -1,95 +1,94 @@@
+ #!/usr/bin/env python3
+
+ # $Id$
+
+ # Module: installer
+ # 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
+ # END OF COPYRIGHT #
+
+ from distutils.core import setup, Extension
+ import os, os.path, sys
+ import subprocess
+
+ sys.path.insert(0, os.path.dirname(__file__))
+ import pyme.version
+
+ def getconfig(what):
+ 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 = ["../../src/.libs"] # XXX uses libtool internals
+ libs = getconfig('libs')
+
+ for item in getconfig('cflags'):
+ if item.startswith("-I"):
+ include_dirs.append(item[2:])
+ elif item.startswith("-D"):
+ defitem = item[2:].split("=", 1)
+ if len(defitem)==2:
+ define_macros.append((defitem[0], defitem[1]))
+ else:
+ define_macros.append((defitem[0], None))
+
+ # 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]
+ tmplist = sorted([(len(x[1]), x[1], x[0]) for x in mnts])
+ tmplist.reverse()
+ extra_dirs = []
+ for item in include_dirs:
+ for ln, mnt, tgt in tmplist:
+ if item.startswith(mnt):
+ item = os.path.normpath(item[ln:])
+ while item[0] == os.path.sep:
+ item = item[1:]
+ extra_dirs.append(os.path.join(tgt, item))
+ break
+ include_dirs += extra_dirs
+ for item in [x[2:] for x in libs if x.startswith("-L")]:
+ for ln, mnt, tgt in tmplist:
+ if item.startswith(mnt):
+ item = os.path.normpath(item[ln:])
+ while item[0] == os.path.sep:
+ item = item[1:]
+ library_dirs.append(os.path.join(tgt, item))
+ break
+
+ swige = Extension("pyme._pygpgme", ["gpgme_wrap.c", "helpers.c"],
+ include_dirs = include_dirs,
+ define_macros = define_macros,
+ library_dirs = library_dirs,
+ extra_link_args = libs)
+
+ setup(name = "pyme",
+ 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=pyme.version.copyright + \
+ ", Licensed under the GPL version 2 and the LGPL version 2.1"
+ )
-
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git
More information about the Pkg-gnupg-commit
mailing list