Skip to content

Commit 24b2fe5

Browse files
committed
Merge pull request #3 from nuodb/master
Fast Forward
2 parents bd18040 + f57e330 commit 24b2fe5

File tree

5 files changed

+338
-3
lines changed

5 files changed

+338
-3
lines changed

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ notifications:
1212
recipients:
1313
1414
15-
1615
1716
1817

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,9 @@ deploy:
4545
clean:
4646
rm -vrf build/ dist/ *.egg-info htmlcov/
4747

48+
doc:
49+
pip install epydoc
50+
epydoc --html --name PyNuoDB pynuodb/
51+
cp epydoc.css html/
52+
4853
.PHONY: all install test

epydoc.css

Lines changed: 322 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,322 @@
1+
2+
3+
/* Epydoc CSS Stylesheet
4+
*
5+
* This stylesheet can be used to customize the appearance of epydoc's
6+
* HTML output.
7+
*
8+
*/
9+
10+
/* Default Colors & Styles
11+
* - Set the default foreground & background color with 'body'; and
12+
* link colors with 'a:link' and 'a:visited'.
13+
* - Use bold for decision list terms.
14+
* - The heading styles defined here are used for headings *within*
15+
* docstring descriptions. All headings used by epydoc itself use
16+
* either class='epydoc' or class='toc' (CSS styles for both
17+
* defined below).
18+
*/
19+
body { background: #ffffff; color: #000000; }
20+
p { margin-top: 0.5em; margin-bottom: 0.5em; }
21+
a:link { color: #000000; }
22+
a:visited { color: #000000; }
23+
dt { font-weight: bold; }
24+
h1 { font-size: +140%; font-style: italic;
25+
font-weight: bold; }
26+
h2 { font-size: +125%; font-style: italic;
27+
font-weight: bold; }
28+
h3 { font-size: +110%; font-style: italic;
29+
font-weight: normal; }
30+
code { font-size: 100%; }
31+
/* N.B.: class, not pseudoclass */
32+
a.link { font-family: monospace; }
33+
34+
/* Page Header & Footer
35+
* - The standard page header consists of a navigation bar (with
36+
* pointers to standard pages such as 'home' and 'trees'); a
37+
* breadcrumbs list, which can be used to navigate to containing
38+
* classes or modules; options links, to show/hide private
39+
* variables and to show/hide frames; and a page title (using
40+
* <h1>). The page title may be followed by a link to the
41+
* corresponding source code (using 'span.codelink').
42+
* - The footer consists of a navigation bar, a timestamp, and a
43+
* pointer to epydoc's homepage.
44+
*/
45+
h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; }
46+
h2.epydoc { font-size: +130%; font-weight: bold; }
47+
h3.epydoc { font-size: +115%; font-weight: bold;
48+
margin-top: 0.2em; }
49+
td h3.epydoc { font-size: +115%; font-weight: bold;
50+
margin-bottom: 0; }
51+
table.navbar { background: #c1cd23; color: #000000;
52+
border: 2px groove #c0d0d0; }
53+
table.navbar table { color: #000000; }
54+
th.navbar-select { background: #FFFFFF;
55+
color: #000000; }
56+
table.navbar a { text-decoration: none; }
57+
table.navbar a:link { color: #000000; }
58+
table.navbar a:visited { color: #000000; }
59+
span.breadcrumbs { font-size: 85%; font-weight: bold; }
60+
span.options { font-size: 70%; }
61+
span.codelink { font-size: 85%; }
62+
td.footer { font-size: 85%; }
63+
64+
/* Table Headers
65+
* - Each summary table and details section begins with a 'header'
66+
* row. This row contains a section title (marked by
67+
* 'span.table-header') as well as a show/hide private link
68+
* (marked by 'span.options', defined above).
69+
* - Summary tables that contain user-defined groups mark those
70+
* groups using 'group header' rows.
71+
*/
72+
td.table-header { background: #c1cd23; color: #000000;
73+
border: 1px solid #608090; }
74+
td.table-header table { color: #FFFFFF; }
75+
td.table-header table a:link { color: #000000; }
76+
td.table-header table a:visited { color: #000000; }
77+
span.table-header { font-size: 120%; font-weight: bold; }
78+
th.group-header { background: #c0e0f8; color: #000000;
79+
text-align: left; font-style: italic;
80+
font-size: 115%;
81+
border: 1px solid #608090; }
82+
83+
/* Summary Tables (functions, variables, etc)
84+
* - Each object is described by a single row of the table with
85+
* two cells. The left cell gives the object's type, and is
86+
* marked with 'code.summary-type'. The right cell gives the
87+
* object's name and a summary description.
88+
* - CSS styles for the table's header and group headers are
89+
* defined above, under 'Table Headers'
90+
*/
91+
table.summary { border-collapse: collapse;
92+
background: #E6EBA7; color: #000000;
93+
border: 1px solid #608090;
94+
margin-bottom: 0.5em; }
95+
td.summary { border: 1px solid #5F584E; }
96+
code.summary-type { font-size: 85%; }
97+
table.summary a:link { color: #000000; }
98+
table.summary a:visited { color: #000000; }
99+
100+
101+
/* Details Tables (functions, variables, etc)
102+
* - Each object is described in its own div.
103+
* - A single-row summary table w/ table-header is used as
104+
* a header for each details section (CSS style for table-header
105+
* is defined above, under 'Table Headers').
106+
*/
107+
table.details { border-collapse: collapse;
108+
background: #E6EBA7; color: #000000;
109+
border: 1px solid #608090;
110+
margin: .2em 0 0 0; }
111+
table.details table { color: #000000; }
112+
table.details a:link { color: #000000; }
113+
table.details a:visited { color: #000000; }
114+
115+
/* Fields */
116+
dl.fields { margin-left: 2em; margin-top: 1em;
117+
margin-bottom: 1em; }
118+
dl.fields dd ul { margin-left: 0em; padding-left: 0em; }
119+
dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; }
120+
div.fields { margin-left: 2em; }
121+
div.fields p { margin-bottom: 0.5em; }
122+
123+
/* Index tables (identifier index, term index, etc)
124+
* - link-index is used for indices containing lists of links
125+
* (namely, the identifier index & term index).
126+
* - index-where is used in link indices for the text indicating
127+
* the container/source for each link.
128+
* - metadata-index is used for indices containing metadata
129+
* extracted from fields (namely, the bug index & todo index).
130+
*/
131+
table.link-index { border-collapse: collapse;
132+
background: #E6EBA7; color: #000000;
133+
border: 1px solid #608090; }
134+
td.link-index { border-width: 0px; }
135+
table.link-index a:link { color: #000000; }
136+
table.link-index a:visited { color: #000000; }
137+
span.index-where { font-size: 70%; }
138+
table.metadata-index { border-collapse: collapse;
139+
background: #e8f0f8; color: #000000;
140+
border: 1px solid #608090;
141+
margin: .2em 0 0 0; }
142+
td.metadata-index { border-width: 1px; border-style: solid; }
143+
table.metadata-index a:link { color: #0000ff; }
144+
table.metadata-index a:visited { color: #204080; }
145+
146+
/* Function signatures
147+
* - sig* is used for the signature in the details section.
148+
* - .summary-sig* is used for the signature in the summary
149+
* table, and when listing property accessor functions.
150+
* */
151+
.sig-name { color: #006080; }
152+
.sig-arg { color: #008060; }
153+
.sig-default { color: #602000; }
154+
.summary-sig { font-family: monospace; }
155+
.summary-sig-name { color: #006080; font-weight: bold; }
156+
table.summary a.summary-sig-name:link
157+
{ color: #000000; font-weight: bold; }
158+
table.summary a.summary-sig-name:visited
159+
{ color: #006080; font-weight: bold; }
160+
.summary-sig-arg { color: #006040; }
161+
.summary-sig-default { color: #501800; }
162+
163+
/* Subclass list
164+
*/
165+
ul.subclass-list { display: inline; }
166+
ul.subclass-list li { display: inline; }
167+
168+
/* To render variables, classes etc. like functions */
169+
table.summary .summary-name { color: #006080; font-weight: bold;
170+
font-family: monospace; }
171+
table.summary
172+
a.summary-name:link { color: #006080; font-weight: bold;
173+
font-family: monospace; }
174+
table.summary
175+
a.summary-name:visited { color: #006080; font-weight: bold;
176+
font-family: monospace; }
177+
178+
/* Variable values
179+
* - In the 'variable details' sections, each varaible's value is
180+
* listed in a 'pre.variable' box. The width of this box is
181+
* restricted to 80 chars; if the value's repr is longer than
182+
* this it will be wrapped, using a backslash marked with
183+
* class 'variable-linewrap'. If the value's repr is longer
184+
* than 3 lines, the rest will be ellided; and an ellipsis
185+
* marker ('...' marked with 'variable-ellipsis') will be used.
186+
* - If the value is a string, its quote marks will be marked
187+
* with 'variable-quote'.
188+
* - If the variable is a regexp, it is syntax-highlighted using
189+
* the re* CSS classes.
190+
*/
191+
pre.variable { padding: .5em; margin: 0;
192+
background: #887e6f; color: #000000;
193+
border: 1px solid #708890; }
194+
.variable-linewrap { color: #604000; font-weight: bold; }
195+
.variable-ellipsis { color: #604000; font-weight: bold; }
196+
.variable-quote { color: #604000; font-weight: bold; }
197+
.variable-group { color: #008000; font-weight: bold; }
198+
.variable-op { color: #604000; font-weight: bold; }
199+
.variable-string { color: #006030; }
200+
.variable-unknown { color: #a00000; font-weight: bold; }
201+
.re { color: #000000; }
202+
.re-char { color: #006030; }
203+
.re-op { color: #600000; }
204+
.re-group { color: #003060; }
205+
.re-ref { color: #404040; }
206+
207+
/* Base tree
208+
* - Used by class pages to display the base class hierarchy.
209+
*/
210+
pre.base-tree { font-size: 80%; margin: 0; }
211+
212+
/* Frames-based table of contents headers
213+
* - Consists of two frames: one for selecting modules; and
214+
* the other listing the contents of the selected module.
215+
* - h1.toc is used for each frame's heading
216+
* - h2.toc is used for subheadings within each frame.
217+
*/
218+
h1.toc { text-align: center; font-size: 105%;
219+
margin: 0; font-weight: bold;
220+
padding: 0; }
221+
h2.toc { font-size: 100%; font-weight: bold;
222+
margin: 0.5em 0 0 -0.3em; }
223+
224+
/* Syntax Highlighting for Source Code
225+
* - doctest examples are displayed in a 'pre.py-doctest' block.
226+
* If the example is in a details table entry, then it will use
227+
* the colors specified by the 'table pre.py-doctest' line.
228+
* - Source code listings are displayed in a 'pre.py-src' block.
229+
* Each line is marked with 'span.py-line' (used to draw a line
230+
* down the left margin, separating the code from the line
231+
* numbers). Line numbers are displayed with 'span.py-lineno'.
232+
* The expand/collapse block toggle button is displayed with
233+
* 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
234+
* modify the font size of the text.)
235+
* - If a source code page is opened with an anchor, then the
236+
* corresponding code block will be highlighted. The code
237+
* block's header is highlighted with 'py-highlight-hdr'; and
238+
* the code block's body is highlighted with 'py-highlight'.
239+
* - The remaining py-* classes are used to perform syntax
240+
* highlighting (py-string for string literals, py-name for names,
241+
* etc.)
242+
*/
243+
pre.py-doctest { padding: .5em; margin: 1em;
244+
background: #e8f0f8; color: #000000;
245+
border: 1px solid #708890; }
246+
table pre.py-doctest { background: #dce4ec;
247+
color: #000000; }
248+
pre.py-src { border: 2px solid #000000;
249+
background: #f0f0f0; color: #000000; }
250+
.py-line { border-left: 2px solid #000000;
251+
margin-left: .2em; padding-left: .4em; }
252+
.py-lineno { font-style: italic; font-size: 90%;
253+
padding-left: .5em; }
254+
a.py-toggle { text-decoration: none; }
255+
div.py-highlight-hdr { border-top: 2px solid #000000;
256+
border-bottom: 2px solid #000000;
257+
background: #d8e8e8; }
258+
div.py-highlight { border-bottom: 2px solid #000000;
259+
background: #d0e0e0; }
260+
.py-prompt { color: #005050; font-weight: bold;}
261+
.py-more { color: #005050; font-weight: bold;}
262+
.py-string { color: #006030; }
263+
.py-comment { color: #003060; }
264+
.py-keyword { color: #600000; }
265+
.py-output { color: #404040; }
266+
.py-name { color: #000050; }
267+
.py-name:link { color: #000000 !important; }
268+
.py-name:visited { color: #000000 !important; }
269+
.py-number { color: #005000; }
270+
.py-defname { color: #000060; font-weight: bold; }
271+
.py-def-name { color: #000060; font-weight: bold; }
272+
.py-base-class { color: #000060; }
273+
.py-param { color: #000060; }
274+
.py-docstring { color: #006030; }
275+
.py-decorator { color: #804020; }
276+
/* Use this if you don't want links to names underlined: */
277+
/*a.py-name { text-decoration: none; }*/
278+
279+
/* Graphs & Diagrams
280+
* - These CSS styles are used for graphs & diagrams generated using
281+
* Graphviz dot. 'img.graph-without-title' is used for bare
282+
* diagrams (to remove the border created by making the image
283+
* clickable).
284+
*/
285+
img.graph-without-title { border: none; }
286+
img.graph-with-title { border: 1px solid #000000; }
287+
span.graph-title { font-weight: bold; }
288+
span.graph-caption { }
289+
290+
/* General-purpose classes
291+
* - 'p.indent-wrapped-lines' defines a paragraph whose first line
292+
* is not indented, but whose subsequent lines are.
293+
* - The 'nomargin-top' class is used to remove the top margin (e.g.
294+
* from lists). The 'nomargin' class is used to remove both the
295+
* top and bottom margin (but not the left or right margin --
296+
* for lists, that would cause the bullets to disappear.)
297+
*/
298+
p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em;
299+
margin: 0; }
300+
.nomargin-top { margin-top: 0; }
301+
.nomargin { margin-top: 0; margin-bottom: 0; }
302+
303+
/* HTML Log */
304+
div.log-block { padding: 0; margin: .5em 0 .5em 0;
305+
background: #e8f0f8; color: #000000;
306+
border: 1px solid #000000; }
307+
div.log-error { padding: .1em .3em .1em .3em; margin: 4px;
308+
background: #ffb0b0; color: #000000;
309+
border: 1px solid #000000; }
310+
div.log-warning { padding: .1em .3em .1em .3em; margin: 4px;
311+
background: #ffffb0; color: #000000;
312+
border: 1px solid #000000; }
313+
div.log-info { padding: .1em .3em .1em .3em; margin: 4px;
314+
background: #b0ffb0; color: #000000;
315+
border: 1px solid #000000; }
316+
h2.log-hdr { background: #c1cd23; color: #000000;
317+
margin: 0; padding: 0em 0.5em 0em 0.5em;
318+
border-bottom: 1px solid #000000; font-size: 110%; }
319+
p.log { font-weight: bold; margin: .5em 0 .5em 0; }
320+
tr.opt-changed { color: #000000; font-weight: bold; }
321+
tr.opt-default { color: #606060; }
322+
pre.log { margin: 0; padding: 0; padding-left: 1em; }

pynuodb/crypt.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,15 @@ def __init__(self, key):
280280
state[i], state[j] = state[j], state[i]
281281

282282
def transform(self, data):
283+
"""
284+
Preforms a byte by byte RC4 transform on the stream
285+
Python 2:
286+
automatically handles encoding bytes into an extended ASCII encoding [0,255] w/ 1 byte per character
287+
Python 3:
288+
bytes objects must be converted into extended ASCII, latin-1 uses the desired range of [0,255]
289+
For utf-8 strings (characters consisting of more than 1 byte) the values are broken into 1 byte sections and shifted
290+
The RC4 stream cipher processes 1 byte at a time, as does ord when converting character values to integers
291+
"""
283292
transformed = []
284293
state = self.__state
285294
if type(data) is bytes:

tests/nuodb_executionflow_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import unittest
1111
import os
12-
from distutils.version import StrictVersion
12+
from distutils.version import LooseVersion
1313

1414
from .nuodb_base import NuoBase
1515
from pynuodb.exception import Error
@@ -194,7 +194,7 @@ def test_error_after_error(self):
194194

195195
def version_lt(version):
196196
current_version = os.getenv('NUODB_VERSION', None)
197-
if current_version is not None and StrictVersion(current_version) < StrictVersion(version):
197+
if current_version is not None and LooseVersion(current_version) < LooseVersion(version):
198198
return True
199199

200200
return False

0 commit comments

Comments
 (0)