Merge remote-tracking branch 'kalikaneko/bug/fix-sphinx-build' into develop
commit
e9b422ec58
|
@ -83,3 +83,7 @@ gpg
|
||||||
# setuptools/distribute files:
|
# setuptools/distribute files:
|
||||||
PKG-INFO
|
PKG-INFO
|
||||||
MANIFEST
|
MANIFEST
|
||||||
|
|
||||||
|
# sphinx default build
|
||||||
|
docs/_build
|
||||||
|
docs/_static
|
||||||
|
|
|
@ -1,327 +0,0 @@
|
||||||
* {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: "Verdana", Arial, sans-serif;
|
|
||||||
line-height: 1.4em;
|
|
||||||
font-size: 14px;
|
|
||||||
color: black;
|
|
||||||
background-color: #eeeeec;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Page layout */
|
|
||||||
|
|
||||||
div.header, div.content, div.footer {
|
|
||||||
width: 70em;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header-wrapper {
|
|
||||||
background: url(bgtop.png) top left repeat-x;
|
|
||||||
border-bottom: 3px solid #2e3436;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Default body styles */
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #ce5c00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clearer {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, h2, h3, h4 {
|
|
||||||
font-family: "Georgia", "Times New Roman", serif;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #3465a4;
|
|
||||||
margin-bottom: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
color: #204a87;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
padding-bottom: .5em;
|
|
||||||
border-bottom: 1px solid #3465a4;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.headerlink {
|
|
||||||
visibility: hidden;
|
|
||||||
color: #dddddd;
|
|
||||||
padding-left: .3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1:hover > a.headerlink,
|
|
||||||
h2:hover > a.headerlink,
|
|
||||||
h3:hover > a.headerlink,
|
|
||||||
h4:hover > a.headerlink,
|
|
||||||
h5:hover > a.headerlink,
|
|
||||||
h6:hover > a.headerlink,
|
|
||||||
dt:hover > a.headerlink {
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Header */
|
|
||||||
|
|
||||||
div.header {
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header h1 {
|
|
||||||
font-family: "Georgia", "Times New Roman", serif;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 160%;
|
|
||||||
letter-spacing: .08em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header h1 a {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header div.rel {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header div.rel a {
|
|
||||||
color: #fcaf3e;
|
|
||||||
letter-spacing: .1em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Content */
|
|
||||||
div.content-wrapper {
|
|
||||||
background-color: white;
|
|
||||||
padding-top: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document {
|
|
||||||
width: 50em;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.body {
|
|
||||||
padding-right: 2em;
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document ul {
|
|
||||||
margin-left: 1.2em;
|
|
||||||
list-style-type: square;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document dd {
|
|
||||||
margin-left: 1.2em;
|
|
||||||
margin-top: .4em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document .section {
|
|
||||||
margin-top: 1.7em;
|
|
||||||
}
|
|
||||||
div.document .section:first-child {
|
|
||||||
margin-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document div.highlight {
|
|
||||||
padding: 3px;
|
|
||||||
background-color: #eeeeec;
|
|
||||||
border-top: 2px solid #dddddd;
|
|
||||||
border-bottom: 2px solid #dddddd;
|
|
||||||
margin-top: .8em;
|
|
||||||
margin-bottom: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document h2 {
|
|
||||||
margin-top: .7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document p {
|
|
||||||
margin-bottom: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document li.toctree-l1 {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document .descname {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document .docutils.literal {
|
|
||||||
background-color: #eeeeec;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document .docutils.xref.literal {
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Sidebar */
|
|
||||||
|
|
||||||
div.sidebar {
|
|
||||||
width: 20em;
|
|
||||||
float: right;
|
|
||||||
font-size: .9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar h3 {
|
|
||||||
color: #2e3436;
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-size: 130%;
|
|
||||||
letter-spacing: .1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar ul {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar li.toctree-l1 a {
|
|
||||||
display: block;
|
|
||||||
padding: 1px;
|
|
||||||
border: 1px solid #dddddd;
|
|
||||||
background-color: #eeeeec;
|
|
||||||
margin-bottom: .4em;
|
|
||||||
padding-left: 3px;
|
|
||||||
color: #2e3436;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar li.toctree-l2 a {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
border-bottom: 1px solid #dddddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar li.toctree-l2:last-child a {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar li.toctree-l1.current a {
|
|
||||||
border-right: 5px solid #fcaf3e;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sidebar li.toctree-l1.current li.toctree-l2 a {
|
|
||||||
border-right: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Footer */
|
|
||||||
|
|
||||||
div.footer-wrapper {
|
|
||||||
background: url(bgfooter.png) top left repeat-x;
|
|
||||||
border-top: 4px solid #babdb6;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
min-height: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer, div.footer a {
|
|
||||||
color: #888a85;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer .right {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer .left {
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Styles copied form basic theme */
|
|
||||||
|
|
||||||
/* -- search page ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
ul.search {
|
|
||||||
margin: 10px 0 0 20px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li {
|
|
||||||
padding: 5px 0 5px 20px;
|
|
||||||
background-image: url(file.png);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: 0 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li a {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li div.context {
|
|
||||||
color: #888;
|
|
||||||
margin: 2px 0 0 30px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.keywordmatches li.goodmatch a {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- index page ------------------------------------------------------------ */
|
|
||||||
|
|
||||||
table.contentstable {
|
|
||||||
width: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.contentstable p.biglink {
|
|
||||||
line-height: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.biglink {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.linkdescr {
|
|
||||||
font-style: italic;
|
|
||||||
padding-top: 5px;
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- general index --------------------------------------------------------- */
|
|
||||||
|
|
||||||
table.indextable td {
|
|
||||||
text-align: left;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable dl, table.indextable dd {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable tr.pcap {
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable tr.cap {
|
|
||||||
margin-top: 10px;
|
|
||||||
background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
|
|
||||||
img.toggler {
|
|
||||||
margin-right: 3px;
|
|
||||||
margin-top: 3px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
|
@ -1,232 +0,0 @@
|
||||||
/// XXX: make it cross browser
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make the code below compatible with browsers without
|
|
||||||
* an installed firebug like debugger
|
|
||||||
*/
|
|
||||||
if (!window.console || !console.firebug) {
|
|
||||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
|
||||||
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
|
||||||
window.console = {};
|
|
||||||
for (var i = 0; i < names.length; ++i)
|
|
||||||
window.console[names[i]] = function() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urldecode strings
|
|
||||||
*/
|
|
||||||
jQuery.urldecode = function(x) {
|
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urlencode strings
|
|
||||||
*/
|
|
||||||
jQuery.urlencode = encodeURIComponent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function returns the parsed url parameters of the
|
|
||||||
* current request. Multiple values per key are supported,
|
|
||||||
* it will always return arrays of strings for the value parts.
|
|
||||||
*/
|
|
||||||
jQuery.getQueryParameters = function(s) {
|
|
||||||
if (typeof s == 'undefined')
|
|
||||||
s = document.location.search;
|
|
||||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
|
||||||
var result = {};
|
|
||||||
for (var i = 0; i < parts.length; i++) {
|
|
||||||
var tmp = parts[i].split('=', 2);
|
|
||||||
var key = jQuery.urldecode(tmp[0]);
|
|
||||||
var value = jQuery.urldecode(tmp[1]);
|
|
||||||
if (key in result)
|
|
||||||
result[key].push(value);
|
|
||||||
else
|
|
||||||
result[key] = [value];
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small function to check if an array contains
|
|
||||||
* a given item.
|
|
||||||
*/
|
|
||||||
jQuery.contains = function(arr, item) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
if (arr[i] == item)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
|
||||||
* span elements with the given class name.
|
|
||||||
*/
|
|
||||||
jQuery.fn.highlightText = function(text, className) {
|
|
||||||
function highlight(node) {
|
|
||||||
if (node.nodeType == 3) {
|
|
||||||
var val = node.nodeValue;
|
|
||||||
var pos = val.toLowerCase().indexOf(text);
|
|
||||||
if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) {
|
|
||||||
var span = document.createElement("span");
|
|
||||||
span.className = className;
|
|
||||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
|
||||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
|
||||||
document.createTextNode(val.substr(pos + text.length)),
|
|
||||||
node.nextSibling));
|
|
||||||
node.nodeValue = val.substr(0, pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!jQuery(node).is("button, select, textarea")) {
|
|
||||||
jQuery.each(node.childNodes, function() {
|
|
||||||
highlight(this)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this.each(function() {
|
|
||||||
highlight(this);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Small JavaScript module for the documentation.
|
|
||||||
*/
|
|
||||||
var Documentation = {
|
|
||||||
|
|
||||||
init : function() {
|
|
||||||
this.fixFirefoxAnchorBug();
|
|
||||||
this.highlightSearchWords();
|
|
||||||
this.initModIndex();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* i18n support
|
|
||||||
*/
|
|
||||||
TRANSLATIONS : {},
|
|
||||||
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
|
|
||||||
LOCALE : 'unknown',
|
|
||||||
|
|
||||||
// gettext and ngettext don't access this so that the functions
|
|
||||||
// can savely bound to a different name (_ = Documentation.gettext)
|
|
||||||
gettext : function(string) {
|
|
||||||
var translated = Documentation.TRANSLATIONS[string];
|
|
||||||
if (typeof translated == 'undefined')
|
|
||||||
return string;
|
|
||||||
return (typeof translated == 'string') ? translated : translated[0];
|
|
||||||
},
|
|
||||||
|
|
||||||
ngettext : function(singular, plural, n) {
|
|
||||||
var translated = Documentation.TRANSLATIONS[singular];
|
|
||||||
if (typeof translated == 'undefined')
|
|
||||||
return (n == 1) ? singular : plural;
|
|
||||||
return translated[Documentation.PLURALEXPR(n)];
|
|
||||||
},
|
|
||||||
|
|
||||||
addTranslations : function(catalog) {
|
|
||||||
for (var key in catalog.messages)
|
|
||||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
|
||||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
|
||||||
this.LOCALE = catalog.locale;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add context elements like header anchor links
|
|
||||||
*/
|
|
||||||
addContextElements : function() {
|
|
||||||
$('div[id] > :header:first').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this headline')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
$('dt[id]').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this definition')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* workaround a firefox stupidity
|
|
||||||
*/
|
|
||||||
fixFirefoxAnchorBug : function() {
|
|
||||||
if (document.location.hash && $.browser.mozilla)
|
|
||||||
window.setTimeout(function() {
|
|
||||||
document.location.href += '';
|
|
||||||
}, 10);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight the search words provided in the url in the text
|
|
||||||
*/
|
|
||||||
highlightSearchWords : function() {
|
|
||||||
var params = $.getQueryParameters();
|
|
||||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
|
||||||
if (terms.length) {
|
|
||||||
var body = $('div.body');
|
|
||||||
window.setTimeout(function() {
|
|
||||||
$.each(terms, function() {
|
|
||||||
body.highlightText(this.toLowerCase(), 'highlight');
|
|
||||||
});
|
|
||||||
}, 10);
|
|
||||||
$('<li class="highlight-link"><a href="javascript:Documentation.' +
|
|
||||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
|
|
||||||
.appendTo($('.sidebar .this-page-menu'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* init the modindex toggle buttons
|
|
||||||
*/
|
|
||||||
initModIndex : function() {
|
|
||||||
var togglers = $('img.toggler').click(function() {
|
|
||||||
var src = $(this).attr('src');
|
|
||||||
var idnum = $(this).attr('id').substr(7);
|
|
||||||
console.log($('tr.cg-' + idnum).toggle());
|
|
||||||
if (src.substr(-9) == 'minus.png')
|
|
||||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
|
||||||
else
|
|
||||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
|
||||||
}).css('display', '');
|
|
||||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) {
|
|
||||||
togglers.click();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to hide the search marks again
|
|
||||||
*/
|
|
||||||
hideSearchWords : function() {
|
|
||||||
$('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
|
|
||||||
$('span.highlight').removeClass('highlight');
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make the url absolute
|
|
||||||
*/
|
|
||||||
makeURL : function(relativeURL) {
|
|
||||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the current relative url
|
|
||||||
*/
|
|
||||||
getCurrentURL : function() {
|
|
||||||
var path = document.location.pathname;
|
|
||||||
var parts = path.split(/\//);
|
|
||||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
|
||||||
if (this == '..')
|
|
||||||
parts.pop();
|
|
||||||
});
|
|
||||||
var url = parts.join('/');
|
|
||||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// quick alias for translations
|
|
||||||
_ = Documentation.gettext;
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
Documentation.init();
|
|
||||||
});
|
|
|
@ -1,386 +0,0 @@
|
||||||
/* custom stuff I put in FIXME where is it "supposed" to go? */
|
|
||||||
|
|
||||||
div.admonition-todo
|
|
||||||
{
|
|
||||||
border: 1px solid red;
|
|
||||||
background-color: #Fdd;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition-todo p.admonition-title
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
color: red;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.admonition-title
|
|
||||||
{
|
|
||||||
font-size: 120%;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl.class>dt, dl.interface>dt, dl.function>dt, dl.staticmethod>dt
|
|
||||||
{
|
|
||||||
font-size: 150%;
|
|
||||||
background-color:#ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl.method>dt
|
|
||||||
{
|
|
||||||
background-color: #eee;
|
|
||||||
border-bottom: 2px solid #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl.method:hover
|
|
||||||
{
|
|
||||||
background-color:#ffd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** end custom */
|
|
||||||
|
|
||||||
html {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
background: #FFF url(bg-page.png) top left repeat-x;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
line-height: 1.5;
|
|
||||||
margin: auto;
|
|
||||||
padding: 0px;
|
|
||||||
font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
|
|
||||||
min-width: 59em;
|
|
||||||
max-width: 70em;
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer {
|
|
||||||
padding: 8px;
|
|
||||||
font-size: 11px;
|
|
||||||
text-align: center;
|
|
||||||
letter-spacing: 0.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* link colors and text decoration */
|
|
||||||
|
|
||||||
a:link {
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #dc3c01;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:visited {
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #892601;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover, a:active {
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #ff4500;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Some headers act as anchors, don't give them a hover effect */
|
|
||||||
|
|
||||||
h1 a:hover, a:active {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #0c3762;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 a:hover, a:active {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #0c3762;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 a:hover, a:active {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #0c3762;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 a:hover, a:active {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #0c3762;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.headerlink {
|
|
||||||
color: #a7ce38;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.headerlink:hover {
|
|
||||||
color: #a7ce38;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* basic text elements */
|
|
||||||
|
|
||||||
div.content {
|
|
||||||
margin-top: 20px;
|
|
||||||
margin-left: 40px;
|
|
||||||
margin-right: 40px;
|
|
||||||
margin-bottom: 50px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* heading and navigation */
|
|
||||||
|
|
||||||
div.header {
|
|
||||||
position: relative;
|
|
||||||
left: 0px;
|
|
||||||
top: 0px;
|
|
||||||
height: 85px;
|
|
||||||
/* background: #eeeeee; */
|
|
||||||
padding: 0 40px;
|
|
||||||
}
|
|
||||||
div.header h1 {
|
|
||||||
font-size: 1.6em;
|
|
||||||
font-weight: normal;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
color: #0c3762;
|
|
||||||
border: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding-top: 15px;
|
|
||||||
}
|
|
||||||
div.header h1 a {
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0c3762;
|
|
||||||
}
|
|
||||||
div.header h2 {
|
|
||||||
font-size: 1.3em;
|
|
||||||
font-weight: normal;
|
|
||||||
letter-spacing: 1px;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: #aaa;
|
|
||||||
border: 0;
|
|
||||||
margin-top: -3px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.header img.rightlogo {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
div.title {
|
|
||||||
font-size: 1.3em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #0c3762;
|
|
||||||
border-bottom: dotted thin #e0e0e0;
|
|
||||||
margin-bottom: 25px;
|
|
||||||
}
|
|
||||||
div.topnav {
|
|
||||||
/* background: #e0e0e0; */
|
|
||||||
}
|
|
||||||
div.topnav p {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-left: 40px;
|
|
||||||
margin-right: 40px;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
text-align: right;
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
div.bottomnav {
|
|
||||||
background: #eeeeee;
|
|
||||||
}
|
|
||||||
div.bottomnav p {
|
|
||||||
margin-right: 40px;
|
|
||||||
text-align: right;
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.uplink {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* contents box */
|
|
||||||
|
|
||||||
table.index {
|
|
||||||
margin: 0px 0px 30px 30px;
|
|
||||||
padding: 1px;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: dotted;
|
|
||||||
border-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
table.index tr.heading {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
table.index tr.index {
|
|
||||||
background-color: #eeeeee;
|
|
||||||
}
|
|
||||||
table.index td {
|
|
||||||
padding: 5px 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.index a:link, table.index a:visited {
|
|
||||||
font-weight: normal;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #dc3c01;
|
|
||||||
}
|
|
||||||
table.index a:hover, table.index a:active {
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #ff4500;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Haiku User Guide styles and layout */
|
|
||||||
|
|
||||||
/* Rounded corner boxes */
|
|
||||||
/* Common declarations */
|
|
||||||
div.admonition {
|
|
||||||
-webkit-border-radius: 10px;
|
|
||||||
-khtml-border-radius: 10px;
|
|
||||||
-moz-border-radius: 10px;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-style: dotted;
|
|
||||||
border-width: thin;
|
|
||||||
border-color: #dcdcdc;
|
|
||||||
padding: 10px 15px 10px 15px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
margin-top: 15px;
|
|
||||||
}
|
|
||||||
div.note {
|
|
||||||
padding: 10px 15px 10px 80px;
|
|
||||||
background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
|
|
||||||
min-height: 42px;
|
|
||||||
}
|
|
||||||
div.warning {
|
|
||||||
padding: 10px 15px 10px 80px;
|
|
||||||
background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
|
|
||||||
min-height: 42px;
|
|
||||||
}
|
|
||||||
div.seealso {
|
|
||||||
background: #e4ffde;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* More layout and styles */
|
|
||||||
h1 {
|
|
||||||
font-size: 1.3em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #0c3762;
|
|
||||||
border-bottom: dotted thin #e0e0e0;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0c3762;
|
|
||||||
border-bottom: dotted thin #e0e0e0;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0c3762;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-size: 1.0em;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #0c3762;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.last {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
padding-left: 5px;
|
|
||||||
margin-top: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
line-height: 1.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.content ul > li {
|
|
||||||
-moz-background-clip:border;
|
|
||||||
-moz-background-inline-policy:continuous;
|
|
||||||
-moz-background-origin:padding;
|
|
||||||
background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
|
|
||||||
list-style-image: none;
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0 0 0 1.666em;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
tt {
|
|
||||||
background-color: #e2e2e2;
|
|
||||||
font-size: 1.0em;
|
|
||||||
font-family: monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
border-color: #0c3762;
|
|
||||||
border-style: dotted;
|
|
||||||
border-width: thin;
|
|
||||||
margin: 0 0 12px 0;
|
|
||||||
padding: 0.8em;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
border-top: 1px solid #ccc;
|
|
||||||
border-bottom: 0;
|
|
||||||
border-right: 0;
|
|
||||||
border-left: 0;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* printer only pretty stuff */
|
|
||||||
@media print {
|
|
||||||
.noprint {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
/* for acronyms we want their definitions inlined at print time */
|
|
||||||
acronym[title]:after {
|
|
||||||
font-size: small;
|
|
||||||
content: " (" attr(title) ")";
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
/* and not have mozilla dotted underline */
|
|
||||||
acronym {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
div.topnav, div.bottomnav, div.header, table.index {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
div.content {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
html {
|
|
||||||
background: #FFF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewcode-back {
|
|
||||||
font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.viewcode-block:target {
|
|
||||||
background-color: #f4debf;
|
|
||||||
border-top: 1px solid #ac9;
|
|
||||||
border-bottom: 1px solid #ac9;
|
|
||||||
margin: -1px -12px;
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
|
@ -1,69 +0,0 @@
|
||||||
.hll { background-color: #ffffcc }
|
|
||||||
.c { color: #8f5902; font-style: italic } /* Comment */
|
|
||||||
.err { color: #a40000; border: 1px solid #ef2929 } /* Error */
|
|
||||||
.g { color: #000000 } /* Generic */
|
|
||||||
.k { color: #204a87; font-weight: bold } /* Keyword */
|
|
||||||
.l { color: #000000 } /* Literal */
|
|
||||||
.n { color: #000000 } /* Name */
|
|
||||||
.o { color: #ce5c00; font-weight: bold } /* Operator */
|
|
||||||
.x { color: #000000 } /* Other */
|
|
||||||
.p { color: #000000; font-weight: bold } /* Punctuation */
|
|
||||||
.cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
|
|
||||||
.cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
|
|
||||||
.c1 { color: #8f5902; font-style: italic } /* Comment.Single */
|
|
||||||
.cs { color: #8f5902; font-style: italic } /* Comment.Special */
|
|
||||||
.gd { color: #a40000 } /* Generic.Deleted */
|
|
||||||
.ge { color: #000000; font-style: italic } /* Generic.Emph */
|
|
||||||
.gr { color: #ef2929 } /* Generic.Error */
|
|
||||||
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
|
||||||
.gi { color: #00A000 } /* Generic.Inserted */
|
|
||||||
.go { color: #000000; font-style: italic } /* Generic.Output */
|
|
||||||
.gp { color: #8f5902 } /* Generic.Prompt */
|
|
||||||
.gs { color: #000000; font-weight: bold } /* Generic.Strong */
|
|
||||||
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
|
||||||
.gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
|
|
||||||
.kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
|
|
||||||
.kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
|
|
||||||
.kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
|
|
||||||
.kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
|
|
||||||
.kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
|
|
||||||
.kt { color: #204a87; font-weight: bold } /* Keyword.Type */
|
|
||||||
.ld { color: #000000 } /* Literal.Date */
|
|
||||||
.m { color: #0000cf; font-weight: bold } /* Literal.Number */
|
|
||||||
.s { color: #4e9a06 } /* Literal.String */
|
|
||||||
.na { color: #c4a000 } /* Name.Attribute */
|
|
||||||
.nb { color: #204a87 } /* Name.Builtin */
|
|
||||||
.nc { color: #000000 } /* Name.Class */
|
|
||||||
.no { color: #000000 } /* Name.Constant */
|
|
||||||
.nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
|
|
||||||
.ni { color: #ce5c00 } /* Name.Entity */
|
|
||||||
.ne { color: #cc0000; font-weight: bold } /* Name.Exception */
|
|
||||||
.nf { color: #000000 } /* Name.Function */
|
|
||||||
.nl { color: #f57900 } /* Name.Label */
|
|
||||||
.nn { color: #000000 } /* Name.Namespace */
|
|
||||||
.nx { color: #000000 } /* Name.Other */
|
|
||||||
.py { color: #000000 } /* Name.Property */
|
|
||||||
.nt { color: #204a87; font-weight: bold } /* Name.Tag */
|
|
||||||
.nv { color: #000000 } /* Name.Variable */
|
|
||||||
.ow { color: #204a87; font-weight: bold } /* Operator.Word */
|
|
||||||
.w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
|
|
||||||
.mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
|
|
||||||
.mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
|
|
||||||
.mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */
|
|
||||||
.mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
|
|
||||||
.sb { color: #4e9a06 } /* Literal.String.Backtick */
|
|
||||||
.sc { color: #4e9a06 } /* Literal.String.Char */
|
|
||||||
.sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
|
|
||||||
.s2 { color: #4e9a06 } /* Literal.String.Double */
|
|
||||||
.se { color: #4e9a06 } /* Literal.String.Escape */
|
|
||||||
.sh { color: #4e9a06 } /* Literal.String.Heredoc */
|
|
||||||
.si { color: #4e9a06 } /* Literal.String.Interpol */
|
|
||||||
.sx { color: #4e9a06 } /* Literal.String.Other */
|
|
||||||
.sr { color: #4e9a06 } /* Literal.String.Regex */
|
|
||||||
.s1 { color: #4e9a06 } /* Literal.String.Single */
|
|
||||||
.ss { color: #4e9a06 } /* Literal.String.Symbol */
|
|
||||||
.bp { color: #3465a4 } /* Name.Builtin.Pseudo */
|
|
||||||
.vc { color: #000000 } /* Name.Variable.Class */
|
|
||||||
.vg { color: #000000 } /* Name.Variable.Global */
|
|
||||||
.vi { color: #000000 } /* Name.Variable.Instance */
|
|
||||||
.il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */
|
|
|
@ -21,7 +21,7 @@ Contents:
|
||||||
Source, license, & bug reports
|
Source, license, & bug reports
|
||||||
==============================
|
==============================
|
||||||
The source code which was used to generate this documentation is accessible by
|
The source code which was used to generate this documentation is accessible by
|
||||||
clicking the little [source]_ links next to the docs. Current source code can
|
clicking the little `source` links next to the docs. Current source code can
|
||||||
be found in this github repository_. The **master** branch always reflects the
|
be found in this github repository_. The **master** branch always reflects the
|
||||||
latest release, all releases are tagged with signed, annotated git tags, and
|
latest release, all releases are tagged with signed, annotated git tags, and
|
||||||
the **develop** branch represents the state of the next release.
|
the **develop** branch represents the state of the next release.
|
||||||
|
|
|
@ -8,31 +8,31 @@
|
||||||
# © 2008-2012 Vinay Sajip
|
# © 2008-2012 Vinay Sajip
|
||||||
# © 2005 Steve Traugott
|
# © 2005 Steve Traugott
|
||||||
# © 2004 A.M. Kuchling
|
# © 2004 A.M. Kuchling
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by the Free
|
# under the terms of the GNU General Public License as published by the Free
|
||||||
# Software Foundation, either version 3 of the License, or (at your option)
|
# Software Foundation, either version 3 of the License, or (at your option)
|
||||||
# any later version.
|
# any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
from . import gnupg
|
from . import gnupg
|
||||||
from . import copyleft
|
from . import copyleft
|
||||||
from . import _ansistrm
|
from . import _ansistrm
|
||||||
from . import _logger
|
from . import _logger
|
||||||
from . import _meta
|
from . import _meta
|
||||||
from . import _parsers
|
from . import _parsers
|
||||||
from . import _util
|
from . import _util
|
||||||
from .gnupg import GPG
|
from .gnupg import GPG
|
||||||
from ._version import get_versions
|
from ._version import get_versions
|
||||||
|
|
||||||
__version__ = get_versions()['version']
|
__version__ = get_versions()['version']
|
||||||
__authors__ = copyleft.authors
|
__authors__ = copyleft.authors
|
||||||
__license__ = copyleft.full_text
|
__license__ = copyleft.full_text
|
||||||
__copyleft__ = copyleft.copyright
|
__copyleft__ = copyleft.copyright
|
||||||
|
|
||||||
## do not set __package__ = "gnupg", else we will end up with
|
## do not set __package__ = "gnupg", else we will end up with
|
||||||
|
|
108
gnupg/_meta.py
108
gnupg/_meta.py
|
@ -7,12 +7,12 @@
|
||||||
# © 2008-2012 Vinay Sajip
|
# © 2008-2012 Vinay Sajip
|
||||||
# © 2005 Steve Traugott
|
# © 2005 Steve Traugott
|
||||||
# © 2004 A.M. Kuchling
|
# © 2004 A.M. Kuchling
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by the Free
|
# under the terms of the GNU General Public License as published by the Free
|
||||||
# Software Foundation, either version 3 of the License, or (at your option)
|
# Software Foundation, either version 3 of the License, or (at your option)
|
||||||
# any later version.
|
# any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
||||||
|
@ -87,7 +87,8 @@ class GPGMeta(type):
|
||||||
|
|
||||||
|
|
||||||
class GPGBase(object):
|
class GPGBase(object):
|
||||||
"""Base class for property storage and to control process initialisation."""
|
"""Base class for property storage and to control process
|
||||||
|
initialisation."""
|
||||||
|
|
||||||
__metaclass__ = GPGMeta
|
__metaclass__ = GPGMeta
|
||||||
_decode_errors = 'strict'
|
_decode_errors = 'strict'
|
||||||
|
@ -604,7 +605,7 @@ class GPGBase(object):
|
||||||
:param str keyids: A space-delimited string containing the keyids to
|
:param str keyids: A space-delimited string containing the keyids to
|
||||||
request.
|
request.
|
||||||
:param str keyserver: The keyserver to request the ``keyids`` from;
|
:param str keyserver: The keyserver to request the ``keyids`` from;
|
||||||
defaults to :property:`gnupg.GPG.keyserver`.
|
defaults to `gnupg.GPG.keyserver`.
|
||||||
"""
|
"""
|
||||||
if not keyserver:
|
if not keyserver:
|
||||||
keyserver = self.keyserver
|
keyserver = self.keyserver
|
||||||
|
@ -631,9 +632,10 @@ class GPGBase(object):
|
||||||
:param bool detach: If True, create a detached signature.
|
:param bool detach: If True, create a detached signature.
|
||||||
:param bool binary: If True, do not ascii armour the output.
|
:param bool binary: If True, do not ascii armour the output.
|
||||||
:param str digest_algo: The hash digest to use. Again, to see which
|
:param str digest_algo: The hash digest to use. Again, to see which
|
||||||
hashes your GnuPG is capable of using, do:
|
hashes your GnuPG is capable of using, do:
|
||||||
``$ gpg --with-colons --list-config digestname``.
|
``$ gpg --with-colons --list-config
|
||||||
The default, if unspecified, is ``'SHA512'``.
|
digestname``. The default, if unspecified, is
|
||||||
|
``'SHA512'``.
|
||||||
"""
|
"""
|
||||||
log.debug("_sign_file():")
|
log.debug("_sign_file():")
|
||||||
if binary:
|
if binary:
|
||||||
|
@ -685,42 +687,55 @@ class GPGBase(object):
|
||||||
|
|
||||||
:param str data: The file or bytestream to encrypt.
|
:param str data: The file or bytestream to encrypt.
|
||||||
|
|
||||||
:param str recipients: The recipients to encrypt to. Recipients must
|
:param recipients: The recipients to encrypt to. Recipients must be
|
||||||
be specified keyID/fingerprint. Care should be taken in Python2.x
|
specified keyID/fingerprint. Care should be taken
|
||||||
to make sure that the given fingerprint is in fact a string and
|
in Python2.x to make sure that the given fingerprint
|
||||||
not a unicode object.
|
is in fact a string and not a unicode object.
|
||||||
|
:type recipients: str
|
||||||
|
|
||||||
:param str default_key: The keyID/fingerprint of the key to use for
|
:param default_key: The keyID/fingerprint of the key to use for
|
||||||
signing. If given, ``data`` will be encrypted and signed.
|
signing. If given, ``data`` will be encrypted
|
||||||
|
and signed.
|
||||||
|
:type default_key: str
|
||||||
|
|
||||||
:param str passphrase: If given, and ``default_key`` is also given,
|
:param passphrase: If given, and ``default_key`` is also given,
|
||||||
use this passphrase to unlock the secret portion of the
|
use this passphrase to unlock the secret portion of
|
||||||
``default_key`` to sign the encrypted ``data``. Otherwise, if
|
the ``default_key`` to sign the encrypted ``data``.
|
||||||
``default_key`` is not given, but ``symmetric=True``, then use
|
Otherwise, if ``default_key`` is not given, but
|
||||||
this passphrase as the passphrase for symmetric
|
``symmetric=True``, then use this passphrase as the
|
||||||
encryption. Signing and symmetric encryption should *not* be
|
passphrase for symmetric encryption. Signing and
|
||||||
combined when sending the ``data`` to other recipients, else the
|
symmetric encryption should *not* be combined when
|
||||||
passphrase to the secret key would be shared with them.
|
sending the ``data`` to other recipients, else the
|
||||||
|
passphrase to the secret key would be shared with
|
||||||
|
them.
|
||||||
|
:type passphrase: str
|
||||||
|
|
||||||
:param bool armor: If True, ascii armor the output; otherwise, the
|
:param armor: If True, ascii armor the output; otherwise, the output
|
||||||
output will be in binary format. (Default: True)
|
will be in binary format. (Default: True)
|
||||||
|
:type armor: bool
|
||||||
|
|
||||||
:param bool encrypt: If True, encrypt the ``data`` using the
|
:param encrypt: If True, encrypt the ``data`` using the ``recipients``
|
||||||
``recipients`` public keys. (Default: True)
|
public keys. (Default: True)
|
||||||
|
:type encrypt: bool
|
||||||
|
|
||||||
:param bool symmetric: If True, encrypt the ``data`` to ``recipients``
|
:param symmetric: If True, encrypt the ``data`` to ``recipients``
|
||||||
using a symmetric key. See the ``passphrase`` parameter. Symmetric
|
using a symmetric key. See the ``passphrase``
|
||||||
encryption and public key encryption can be used simultaneously,
|
parameter. Symmetric encryption and public key
|
||||||
and will result in a ciphertext which is decryptable with either
|
encryption can be used simultaneously, and will
|
||||||
the symmetric ``passphrase`` or one of the corresponding private
|
result in a ciphertext which is decryptable with
|
||||||
keys.
|
either the symmetric ``passphrase`` or one of the
|
||||||
|
corresponding private keys.
|
||||||
|
:type symmetric: bool
|
||||||
|
|
||||||
:param bool always_trust: If True, ignore trust warnings on recipient
|
:param always_trust: If True, ignore trust warnings on recipient
|
||||||
keys. If False, display trust warnings. (default: True)
|
keys. If False, display trust warnings.
|
||||||
|
(default: True)
|
||||||
|
:type always_trust: bool
|
||||||
|
|
||||||
:param str output: The output file to write to. If not specified, the
|
:param output: The output file to write to. If not specified, the
|
||||||
encrypted output is returned, and thus should be stored as an
|
encrypted output is returned, and thus should be
|
||||||
object in Python. For example:
|
stored as an object in Python. For example:
|
||||||
|
:type output: str
|
||||||
|
|
||||||
>>> import shutil
|
>>> import shutil
|
||||||
>>> import gnupg
|
>>> import gnupg
|
||||||
|
@ -742,16 +757,21 @@ class GPGBase(object):
|
||||||
'The crow flies at midnight.'
|
'The crow flies at midnight.'
|
||||||
|
|
||||||
:param str cipher_algo: The cipher algorithm to use. To see available
|
:param str cipher_algo: The cipher algorithm to use. To see available
|
||||||
algorithms with your version of GnuPG, do:
|
algorithms with your version of GnuPG, do:
|
||||||
``$ gpg --with-colons --list-config ciphername``.
|
``$ gpg --with-colons --list-config
|
||||||
The default ``cipher_algo``, if unspecified, is ``'AES256'``.
|
ciphername``.
|
||||||
|
The default ``cipher_algo``, if unspecified,
|
||||||
|
is ``'AES256'``.
|
||||||
|
:type cipher_algo: str
|
||||||
|
|
||||||
:param str digest_algo: The hash digest to use. Again, to see which
|
:param digest_algo: The hash digest to use. Again, to see which
|
||||||
hashes your GnuPG is capable of using, do:
|
hashes your GnuPG is capable of using, do:
|
||||||
``$ gpg --with-colons --list-config digestname``.
|
``$ gpg --with-colons --list-config digestname``.
|
||||||
The default, if unspecified, is ``'SHA512'``.
|
The default, if unspecified, is ``'SHA512'``.
|
||||||
|
:type digest_algo: str
|
||||||
|
|
||||||
:param str compress_algo: The compression algorithm to use. Can be one
|
:param compress_algo: The compression algorithm to use. Can be one
|
||||||
|
:type compress_algo: str
|
||||||
of ``'ZLIB'``, ``'BZIP2'``, ``'ZIP'``, or ``'Uncompressed'``.
|
of ``'ZLIB'``, ``'BZIP2'``, ``'ZIP'``, or ``'Uncompressed'``.
|
||||||
"""
|
"""
|
||||||
args = []
|
args = []
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
# © 2008-2012 Vinay Sajip
|
# © 2008-2012 Vinay Sajip
|
||||||
# © 2005 Steve Traugott
|
# © 2005 Steve Traugott
|
||||||
# © 2004 A.M. Kuchling
|
# © 2004 A.M. Kuchling
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by the Free
|
# under the terms of the GNU General Public License as published by the Free
|
||||||
# Software Foundation, either version 3 of the License, or (at your option)
|
# Software Foundation, either version 3 of the License, or (at your option)
|
||||||
# any later version.
|
# any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
||||||
|
@ -78,11 +78,11 @@ def import_ownertrust(self, trustdb=None):
|
||||||
def fix_trustdb(cls, trustdb=None):
|
def fix_trustdb(cls, trustdb=None):
|
||||||
"""Attempt to repair a broken trustdb.gpg file.
|
"""Attempt to repair a broken trustdb.gpg file.
|
||||||
|
|
||||||
GnuPG>=2.0.x has this magical-seeming flag: '--fix-trustdb'. You'd think
|
GnuPG>=2.0.x has this magical-seeming flag: `--fix-trustdb`. You'd think
|
||||||
it would fix the the trustdb. Hah! It doesn't. Here's what it does
|
it would fix the the trustdb. Hah! It doesn't. Here's what it does
|
||||||
instead:
|
instead:
|
||||||
|
|
||||||
(python-gnupg)∃!isisⒶwintermute:(testing/digest-algo *$=)~/code/python-gnupg ∴ gpg2 --fix-trustdb
|
(python-gnupg)∃!isisⒶwintermute:(testing/digest-algo)~/code/python-gnupg ∴ gpg2 --fix-trustdb
|
||||||
gpg: You may try to re-create the trustdb using the commands:
|
gpg: You may try to re-create the trustdb using the commands:
|
||||||
gpg: cd ~/.gnupg
|
gpg: cd ~/.gnupg
|
||||||
gpg: gpg2 --export-ownertrust > otrust.tmp
|
gpg: gpg2 --export-ownertrust > otrust.tmp
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
# © 2008-2012 Vinay Sajip
|
# © 2008-2012 Vinay Sajip
|
||||||
# © 2005 Steve Traugott
|
# © 2005 Steve Traugott
|
||||||
# © 2004 A.M. Kuchling
|
# © 2004 A.M. Kuchling
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by the Free
|
# under the terms of the GNU General Public License as published by the Free
|
||||||
# Software Foundation, either version 3 of the License, or (at your option)
|
# Software Foundation, either version 3 of the License, or (at your option)
|
||||||
# any later version.
|
# any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
# FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.
|
||||||
|
@ -373,7 +373,7 @@ class GPG(GPGBase):
|
||||||
:param str keyids: Each ``keyids`` argument should be a string
|
:param str keyids: Each ``keyids`` argument should be a string
|
||||||
containing a keyid to request.
|
containing a keyid to request.
|
||||||
:param str keyserver: The keyserver to request the ``keyids`` from;
|
:param str keyserver: The keyserver to request the ``keyids`` from;
|
||||||
defaults to :property:`gnupg.GPG.keyserver`.
|
defaults to `gnupg.GPG.keyserver`.
|
||||||
"""
|
"""
|
||||||
if keyids:
|
if keyids:
|
||||||
keys = ' '.join([key for key in keyids])
|
keys = ' '.join([key for key in keyids])
|
||||||
|
@ -389,22 +389,23 @@ class GPG(GPGBase):
|
||||||
be deleted from :attr:`GPG.secring`.
|
be deleted from :attr:`GPG.secring`.
|
||||||
|
|
||||||
:type fingerprints: str or list or tuple
|
:type fingerprints: str or list or tuple
|
||||||
|
|
||||||
:param fingerprints: A string, or a list/tuple of strings,
|
:param fingerprints: A string, or a list/tuple of strings,
|
||||||
representing the fingerprint(s) for the key(s) to delete.
|
representing the fingerprint(s) for the key(s)
|
||||||
|
to delete.
|
||||||
|
|
||||||
:param bool secret: If True, delete the corresponding secret key(s)
|
:param bool secret: If True, delete the corresponding secret key(s)
|
||||||
also. (default: False)
|
also. (default: False)
|
||||||
|
|
||||||
:param bool subkeys: If True, delete the secret subkey first, then the
|
:param bool subkeys: If True, delete the secret subkey first, then the
|
||||||
public key. (default: False) Same as:
|
public key. (default: False) Same as:
|
||||||
``$ gpg --delete-secret-and-public-key 0x12345678``
|
``$ gpg --delete-secret-and-public-key
|
||||||
|
0x12345678``
|
||||||
"""
|
"""
|
||||||
which='keys'
|
which = 'keys'
|
||||||
if secret:
|
if secret:
|
||||||
which='secret-keys'
|
which = 'secret-keys'
|
||||||
if subkeys:
|
if subkeys:
|
||||||
which='secret-and-public-keys'
|
which = 'secret-and-public-keys'
|
||||||
|
|
||||||
if _is_list_or_tuple(fingerprints):
|
if _is_list_or_tuple(fingerprints):
|
||||||
fingerprints = ' '.join(fingerprints)
|
fingerprints = ' '.join(fingerprints)
|
||||||
|
@ -425,11 +426,11 @@ class GPG(GPGBase):
|
||||||
:param bool secret: If True, export only the secret key.
|
:param bool secret: If True, export only the secret key.
|
||||||
:param bool subkeys: If True, export the secret subkeys.
|
:param bool subkeys: If True, export the secret subkeys.
|
||||||
"""
|
"""
|
||||||
which=''
|
which = ''
|
||||||
if subkeys:
|
if subkeys:
|
||||||
which='-secret-subkeys'
|
which = '-secret-subkeys'
|
||||||
elif secret:
|
elif secret:
|
||||||
which='-secret-keys'
|
which = '-secret-keys'
|
||||||
|
|
||||||
if _is_list_or_tuple(keyids):
|
if _is_list_or_tuple(keyids):
|
||||||
keyids = ' '.join(['%s' % k for k in keyids])
|
keyids = ' '.join(['%s' % k for k in keyids])
|
||||||
|
@ -441,7 +442,7 @@ class GPG(GPGBase):
|
||||||
## gpg --export produces no status-fd output; stdout will be empty in
|
## gpg --export produces no status-fd output; stdout will be empty in
|
||||||
## case of failure
|
## case of failure
|
||||||
#stdout, stderr = p.communicate()
|
#stdout, stderr = p.communicate()
|
||||||
result = self._result_map['delete'](self) # any result will do
|
result = self._result_map['delete'](self) # any result will do
|
||||||
self._collect_output(p, result, stdin=p.stdin)
|
self._collect_output(p, result, stdin=p.stdin)
|
||||||
log.debug('Exported:%s%r' % (os.linesep, result.data))
|
log.debug('Exported:%s%r' % (os.linesep, result.data))
|
||||||
return result.data.decode(self._encoding, self._decode_errors)
|
return result.data.decode(self._encoding, self._decode_errors)
|
||||||
|
@ -467,9 +468,9 @@ class GPG(GPGBase):
|
||||||
>>> assert print2 in pubkeys.fingerprints
|
>>> assert print2 in pubkeys.fingerprints
|
||||||
"""
|
"""
|
||||||
|
|
||||||
which='public-keys'
|
which = 'public-keys'
|
||||||
if secret:
|
if secret:
|
||||||
which='secret-keys'
|
which = 'secret-keys'
|
||||||
args = "--list-%s --fixed-list-mode --fingerprint " % (which,)
|
args = "--list-%s --fixed-list-mode --fingerprint " % (which,)
|
||||||
args += "--with-colons --list-options no-show-photos"
|
args += "--with-colons --list-options no-show-photos"
|
||||||
args = [args]
|
args = [args]
|
||||||
|
|
Loading…
Reference in New Issue