docs: python bindings howto
* Added a What's New section to summarise changes since the last release. There have been quite a few and some attention does need to be drawn to some of them. * Confirming certain issues with some platform builds, especially BSD/OSX vs. Linux issues which will need to update the installation troubleshooting guides.
This commit is contained in:
parent
b12b2cc996
commit
e9da4d9710
@ -39,6 +39,11 @@ Introduction
|
|||||||
* Python 2 versus Python 3::
|
* Python 2 versus Python 3::
|
||||||
* Examples::
|
* Examples::
|
||||||
* Unofficial Drafts::
|
* Unofficial Drafts::
|
||||||
|
* What's New::
|
||||||
|
|
||||||
|
What's New
|
||||||
|
|
||||||
|
* New in GPGME 1.12.0: New in GPGME 1120.
|
||||||
|
|
||||||
GPGME Concepts
|
GPGME Concepts
|
||||||
|
|
||||||
@ -175,6 +180,7 @@ Python bindings to programmatically leverage the GPGME library.
|
|||||||
* Python 2 versus Python 3::
|
* Python 2 versus Python 3::
|
||||||
* Examples::
|
* Examples::
|
||||||
* Unofficial Drafts::
|
* Unofficial Drafts::
|
||||||
|
* What's New::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Python 2 versus Python 3
|
@node Python 2 versus Python 3
|
||||||
@ -214,6 +220,80 @@ on locations to read or download @ref{Draft Editions of this HOWTO, , draft edit
|
|||||||
at the end of it. These are unofficial versions produced in between
|
at the end of it. These are unofficial versions produced in between
|
||||||
major releases.
|
major releases.
|
||||||
|
|
||||||
|
@node What's New
|
||||||
|
@section What's New
|
||||||
|
|
||||||
|
The most obviously new point for those reading this guide is this
|
||||||
|
section on other new things, but that's hardly important. Not given
|
||||||
|
all the other things which spurred the need for adding this section
|
||||||
|
and its subsections.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* New in GPGME 1.12.0: New in GPGME 1120.
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node New in GPGME 1120
|
||||||
|
@subsection New in GPGME 1.12.0
|
||||||
|
|
||||||
|
There have been quite a number of additions to GPGME and the Python
|
||||||
|
bindings to it since the last release of GPGME with versions 1.11.0
|
||||||
|
and 1.11.1 in April, 2018.
|
||||||
|
|
||||||
|
The bullet points of new additiions are:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
an expanded section on @ref{Installation, , installing} and @ref{Known Issues, , troubleshooting} the Python
|
||||||
|
bindings.
|
||||||
|
@item
|
||||||
|
The release of Python 3.7.0; which appears to be working just fine
|
||||||
|
with our bindings, in spite of intermittent reports of problems for
|
||||||
|
many other Python projects with that new release.
|
||||||
|
@item
|
||||||
|
In order to fix some other issues, there are certain underlying
|
||||||
|
functions which are more exposed through the @ref{Context, , gpg.Context()}, but
|
||||||
|
ongoing documentation ought to clarify that or otherwise provide the
|
||||||
|
best means of using the bindings. Some additions to @samp{gpg.core} and
|
||||||
|
the @samp{Context()}, however, were intended (see below).
|
||||||
|
@item
|
||||||
|
Continuing work in identifying and confirming the cause of
|
||||||
|
oft-reported @ref{Won't Work With Windows, , problems installing the Python bindings on Windows}.
|
||||||
|
@item
|
||||||
|
GSOC: Google's Surreptitiously Ordered Conscription @dots{} erm @dots{} oh,
|
||||||
|
right; Google's Summer of Code. Though there were two hopeful
|
||||||
|
candidates this year; only one ended up involved with the GnuPG
|
||||||
|
Project directly, the other concentrated on an unrelated third party
|
||||||
|
project with closer ties to one of the GNU/Linux distributions than
|
||||||
|
to the GnuPG Project. Thus the Python bindings benefited from GSOC
|
||||||
|
participant Jacob Adams, who added the key@math{_import} function; building
|
||||||
|
on prior work by Tobias Mueller.
|
||||||
|
@item
|
||||||
|
Several new methods functions were added to the gpg.Context(),
|
||||||
|
including: @ref{Importing keys, , key@math{_import}}, @ref{Exporting keys, , key@math{_export}}, @ref{Exporting public keys, , key@math{_export}@math{_minimal}} and
|
||||||
|
@ref{Exporting secret keys, , key@math{_export}@math{_secret}}.
|
||||||
|
@item
|
||||||
|
Importing and exporting examples include versions integrated with
|
||||||
|
Marcel Fest's recently released @uref{https://github.com/Selfnet/hkp4py, HKP for Python} module. Some
|
||||||
|
@ref{Keyserver access for Python, , additional notes on this module} are included at the end of the HOWTO.
|
||||||
|
@item
|
||||||
|
Instructions for dealing with semi-walled garden implementations
|
||||||
|
like ProtonMail are also included. This is intended to make things
|
||||||
|
a little easier when communicating with users of ProtonMail's
|
||||||
|
services and should not be construed as an endorsement of said
|
||||||
|
service. The GnuPG Project neither favours, nor disfavours
|
||||||
|
ProtonMail and the majority of this deals with interacting with the
|
||||||
|
ProtonMail keyserver.
|
||||||
|
@item
|
||||||
|
Semi-formalised the location where @ref{Draft Editions of this HOWTO, , draft versions} of this HOWTO may
|
||||||
|
periodically be accessible. This is both for the reference of
|
||||||
|
others and testing the publishing of the document itself.
|
||||||
|
@item
|
||||||
|
Added a new section for @ref{Advanced or Experimental Use Cases, , advanced or experimental use}.
|
||||||
|
@item
|
||||||
|
Began the advanced use cases with @ref{C plus Python plus SWIG plus Cython, , a section} on using the module with
|
||||||
|
@uref{http://cython.org/, Cython}.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
@node GPGME Concepts
|
@node GPGME Concepts
|
||||||
@chapter GPGME Concepts
|
@chapter GPGME Concepts
|
||||||
|
|
||||||
@ -479,7 +559,7 @@ If Python is set to precede one of the other languages then it is
|
|||||||
possible that the errors described here may interrupt the build
|
possible that the errors described here may interrupt the build
|
||||||
process before generating bindings for those other languages. In
|
process before generating bindings for those other languages. In
|
||||||
these cases it may be preferable to configure all preferred language
|
these cases it may be preferable to configure all preferred language
|
||||||
bindings separately with alternative @samp{configure} steps for GPGME using
|
howto-export-public-keybindings separately with alternative @samp{configure} steps for GPGME using
|
||||||
the @samp{--enable-languages=$LANGUAGE} option.
|
the @samp{--enable-languages=$LANGUAGE} option.
|
||||||
@end enumerate
|
@end enumerate
|
||||||
|
|
||||||
@ -2673,7 +2753,11 @@ support for Python 2.7 as well and is available via PyPI.
|
|||||||
|
|
||||||
Since it rewrites the @samp{hkp} protocol prefix as @samp{http} and @samp{hkps} as
|
Since it rewrites the @samp{hkp} protocol prefix as @samp{http} and @samp{hkps} as
|
||||||
@samp{https}, the module is able to be used even with servers which do not
|
@samp{https}, the module is able to be used even with servers which do not
|
||||||
support the full scope of keyserver functions. It also works quite
|
support the full scope of keyserver functions.@footnote{Such as with ProtonMail servers. This also means that
|
||||||
|
restricted servers which only advertise either HTTP or HTTPS end
|
||||||
|
points and not HKP or HKPS end points must still be identified as as
|
||||||
|
HKP or HKPS within the Python Code. The @samp{hkp4py} module will rewrite
|
||||||
|
these appropriately when the connection is made to the server.} It also works quite
|
||||||
readily when incorporated into a @ref{C plus Python plus SWIG plus Cython, , Cython} generated and compiled version
|
readily when incorporated into a @ref{C plus Python plus SWIG plus Cython, , Cython} generated and compiled version
|
||||||
of any code.
|
of any code.
|
||||||
|
|
||||||
|
@ -72,6 +72,68 @@ at the end of it. These are unofficial versions produced in between
|
|||||||
major releases.
|
major releases.
|
||||||
|
|
||||||
|
|
||||||
|
** What's New
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: new-stuff
|
||||||
|
:END:
|
||||||
|
|
||||||
|
The most obviously new point for those reading this guide is this
|
||||||
|
section on other new things, but that's hardly important. Not given
|
||||||
|
all the other things which spurred the need for adding this section
|
||||||
|
and its subsections.
|
||||||
|
|
||||||
|
*** New in GPGME 1.12.0
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: new-stuff-1-12-0
|
||||||
|
:END:
|
||||||
|
|
||||||
|
There have been quite a number of additions to GPGME and the Python
|
||||||
|
bindings to it since the last release of GPGME with versions 1.11.0
|
||||||
|
and 1.11.1 in April, 2018.
|
||||||
|
|
||||||
|
The bullet points of new additiions are:
|
||||||
|
|
||||||
|
- an expanded section on [[#installation][installing]] and [[#snafu][troubleshooting]] the Python
|
||||||
|
bindings.
|
||||||
|
- The release of Python 3.7.0; which appears to be working just fine
|
||||||
|
with our bindings, in spite of intermittent reports of problems for
|
||||||
|
many other Python projects with that new release.
|
||||||
|
- In order to fix some other issues, there are certain underlying
|
||||||
|
functions which are more exposed through the [[#howto-get-context][gpg.Context()]], but
|
||||||
|
ongoing documentation ought to clarify that or otherwise provide the
|
||||||
|
best means of using the bindings. Some additions to =gpg.core= and
|
||||||
|
the =Context()=, however, were intended (see below).
|
||||||
|
- Continuing work in identifying and confirming the cause of
|
||||||
|
oft-reported [[#snafu-runtime-not-funtime][problems installing the Python bindings on Windows]].
|
||||||
|
- GSOC: Google's Surreptitiously Ordered Conscription ... erm ... oh,
|
||||||
|
right; Google's Summer of Code. Though there were two hopeful
|
||||||
|
candidates this year; only one ended up involved with the GnuPG
|
||||||
|
Project directly, the other concentrated on an unrelated third party
|
||||||
|
project with closer ties to one of the GNU/Linux distributions than
|
||||||
|
to the GnuPG Project. Thus the Python bindings benefited from GSOC
|
||||||
|
participant Jacob Adams, who added the key_import function; building
|
||||||
|
on prior work by Tobias Mueller.
|
||||||
|
- Several new methods functions were added to the gpg.Context(),
|
||||||
|
including: [[#howto-import-key][key_import]], [[#howto-export-key][key_export]], [[#howto-export-public-key][key_export_minimal]] and
|
||||||
|
[[#howto-export-secret-key][key_export_secret]].
|
||||||
|
- Importing and exporting examples include versions integrated with
|
||||||
|
Marcel Fest's recently released [[https://github.com/Selfnet/hkp4py][HKP for Python]] module. Some
|
||||||
|
[[#hkp4py][additional notes on this module]] are included at the end of the HOWTO.
|
||||||
|
- Instructions for dealing with semi-walled garden implementations
|
||||||
|
like ProtonMail are also included. This is intended to make things
|
||||||
|
a little easier when communicating with users of ProtonMail's
|
||||||
|
services and should not be construed as an endorsement of said
|
||||||
|
service. The GnuPG Project neither favours, nor disfavours
|
||||||
|
ProtonMail and the majority of this deals with interacting with the
|
||||||
|
ProtonMail keyserver.
|
||||||
|
- Semi-formalised the location where [[#draft-editions][draft versions]] of this HOWTO may
|
||||||
|
periodically be accessible. This is both for the reference of
|
||||||
|
others and testing the publishing of the document itself.
|
||||||
|
- Added a new section for [[#advanced-use][advanced or experimental use]].
|
||||||
|
- Began the advanced use cases with [[#cython][a section]] on using the module with
|
||||||
|
[[http://cython.org/][Cython]].
|
||||||
|
|
||||||
|
|
||||||
* GPGME Concepts
|
* GPGME Concepts
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: gpgme-concepts
|
:CUSTOM_ID: gpgme-concepts
|
||||||
@ -336,7 +398,7 @@ If Python is set to precede one of the other languages then it is
|
|||||||
possible that the errors described here may interrupt the build
|
possible that the errors described here may interrupt the build
|
||||||
process before generating bindings for those other languages. In
|
process before generating bindings for those other languages. In
|
||||||
these cases it may be preferable to configure all preferred language
|
these cases it may be preferable to configure all preferred language
|
||||||
bindings separately with alternative =configure= steps for GPGME using
|
howto-export-public-keybindings separately with alternative =configure= steps for GPGME using
|
||||||
the =--enable-languages=$LANGUAGE= option.
|
the =--enable-languages=$LANGUAGE= option.
|
||||||
|
|
||||||
|
|
||||||
@ -2577,7 +2639,7 @@ support for Python 2.7 as well and is available via PyPI.
|
|||||||
|
|
||||||
Since it rewrites the =hkp= protocol prefix as =http= and =hkps= as
|
Since it rewrites the =hkp= protocol prefix as =http= and =hkps= as
|
||||||
=https=, the module is able to be used even with servers which do not
|
=https=, the module is able to be used even with servers which do not
|
||||||
support the full scope of keyserver functions. It also works quite
|
support the full scope of keyserver functions.[fn:6] It also works quite
|
||||||
readily when incorporated into a [[#cython][Cython]] generated and compiled version
|
readily when incorporated into a [[#cython][Cython]] generated and compiled version
|
||||||
of any code.
|
of any code.
|
||||||
|
|
||||||
@ -2704,3 +2766,9 @@ POSIX systems which utilise single user mode (some even require it).
|
|||||||
keyservers for "gnupg.org" produces over 400 results, the majority of
|
keyservers for "gnupg.org" produces over 400 results, the majority of
|
||||||
which aren't actually at the gnupg.org domain, but just included a
|
which aren't actually at the gnupg.org domain, but just included a
|
||||||
comment regarding the project in their key somewhere.
|
comment regarding the project in their key somewhere.
|
||||||
|
|
||||||
|
[fn:6] Such as with ProtonMail servers. This also means that
|
||||||
|
restricted servers which only advertise either HTTP or HTTPS end
|
||||||
|
points and not HKP or HKPS end points must still be identified as as
|
||||||
|
HKP or HKPS within the Python Code. The =hkp4py= module will rewrite
|
||||||
|
these appropriately when the connection is made to the server.
|
||||||
|
Loading…
Reference in New Issue
Block a user