A framework for implementing the Stateless OpenPGP CLI
Project description
The Stateless OpenPGP Command-Line Interface
The Stateless OpenPGP Command-Line
Interface
(or sop
) is a specification that encourages OpenPGP implementors
to provide a common, relatively simple command-line API for purposes
of object security.
This Python module helps implementers build such a CLI from any implementation accessible to the Python interpreter.
It does not provide such an implementation itself -- this is just the scaffolding for the command line, which should make it relatively easy to supply a handful of python functions as methods to a class.
Note that if the user has argcomplete
installed, they should also
get tab completion in standard shells like bash
basically for free.
Example
Here is an example of a minimal command-line tool that just implements
the extract_cert()
interface, using (imaginary) module foo
that has the
appropriate
#!/usr/bin/python3
# PYTHON_ARGCOMPLETE_OK
import sop
import foo
class FooSop(sop.StatelessOpenPGP):
def __init__(self):
super().__init__(prog='FooPGP', version='0.17')
# overrides go here...
def extract_cert(self, key:bytes, armor:bool=True, **kwargs:Namespace) -> bytes:
self.raise_on_unknown_options(**kwargs)
return foo.bytes_to_openpgp_key(key).get_certificate(armor=armor)
if __name__ = "__main__":
foo = FooSop()
foo.dispatch()
Module Goals
Extensibility
An implementer who wants to extend sop
in a simple way (e.g. adding
an option to an existing subcommand, or adding a special option)
should be able to do so without breaking this interface.
Minimal dependencies
The aim is to only depend on modules from stdlib. We make an
exception for optional modules like argcomplete
, which can be
skipped.
Type-checking
All the code in here should be well-annotated
Self-documenting
Implementers should learn what they need to know from the docstrings, like so:
import sop
help(sop)
help(sop.StatelessOpenPGP)
Semantic Versioning
The major version number will only change when backward-incompatible changes are made.
As long as the major version number is 0, the same holds true for the minor version number.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sop-0.5.1.tar.gz
.
File metadata
- Download URL: sop-0.5.1.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d43957a1cf55edca41bde6b079edd675fad33bbd50a44f6a1f14d90e3e0e5a6a |
|
MD5 | def47e1efb7af5eeea0008c7f3bfe401 |
|
BLAKE2b-256 | ac45885f054108ac6e2fc330fb306a566efbe104fee4632482fd3d475559abc0 |
File details
Details for the file sop-0.5.1-py3-none-any.whl
.
File metadata
- Download URL: sop-0.5.1-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ee2d32dbd21a7818c0beacefbff34e3f5ec9f2942ea3b3123caddd333618838 |
|
MD5 | eb0e8986f7c1e7ca1e142fc74431e9d6 |
|
BLAKE2b-256 | f0b2730d82c3750dbb7be3c9afa0a3cb6f84a71313d9293c128caebdcec1db9b |