Commit be51c0a5 authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

merge

parents 3c4c2af5 03d4937c
...@@ -109,6 +109,11 @@ class Context: ...@@ -109,6 +109,11 @@ class Context:
def find_pxd_file(self, qualified_name, pos): def find_pxd_file(self, qualified_name, pos):
# Search include path for the .pxd file corresponding to the # Search include path for the .pxd file corresponding to the
# given fully-qualified module name. # given fully-qualified module name.
# Will find either a dotted filename or a file in a
# package directory. If a source file position is given,
# the directory containing the source file is searched first
# for a dotted filename, and its containing package root
# directory is searched first for a non-dotted filename.
return self.search_include_directories(qualified_name, ".pxd", pos) return self.search_include_directories(qualified_name, ".pxd", pos)
def find_pyx_file(self, qualified_name, pos): def find_pyx_file(self, qualified_name, pos):
...@@ -120,27 +125,30 @@ class Context: ...@@ -120,27 +125,30 @@ class Context:
# Search list of include directories for filename. # Search list of include directories for filename.
# Reports an error and returns None if not found. # Reports an error and returns None if not found.
path = self.search_include_directories(filename, "", pos, path = self.search_include_directories(filename, "", pos,
split_package=False) include=True)
if not path: if not path:
error(pos, "'%s' not found" % filename) error(pos, "'%s' not found" % filename)
return path return path
def search_include_directories(self, qualified_name, suffix, pos, def search_include_directories(self, qualified_name, suffix, pos,
split_package=True): include=False):
# Search the list of include directories for the given # Search the list of include directories for the given
# file name. If a source file position is given, first # file name. If a source file position is given, first
# searches the directory containing that file. Returns # searches the directory containing that file. Returns
# None if not found, but does not report an error. # None if not found, but does not report an error.
# The 'include' option will disable package dereferencing.
dirs = self.include_directories dirs = self.include_directories
if pos: if pos:
file_desc = pos[0] file_desc = pos[0]
if not isinstance(file_desc, FileSourceDescriptor): if not isinstance(file_desc, FileSourceDescriptor):
raise RuntimeError("Only file sources for code supported") raise RuntimeError("Only file sources for code supported")
here_dir = os.path.dirname(file_desc.filename) if include:
dirs = [here_dir] + dirs dirs = [os.path.dirname(file_desc.filename)] + dirs
else:
dirs = [self.find_root_package_dir(file_desc.filename)] + dirs
dotted_filename = qualified_name + suffix dotted_filename = qualified_name + suffix
if split_package: if not include:
names = qualified_name.split('.') names = qualified_name.split('.')
package_names = names[:-1] package_names = names[:-1]
module_name = names[-1] module_name = names[-1]
...@@ -151,7 +159,7 @@ class Context: ...@@ -151,7 +159,7 @@ class Context:
path = os.path.join(dir, dotted_filename) path = os.path.join(dir, dotted_filename)
if os.path.exists(path): if os.path.exists(path):
return path return path
if split_package: if not include:
package_dir = self.check_package_dir(dir, package_names) package_dir = self.check_package_dir(dir, package_names)
if package_dir is not None: if package_dir is not None:
path = os.path.join(package_dir, module_filename) path = os.path.join(package_dir, module_filename)
...@@ -163,15 +171,27 @@ class Context: ...@@ -163,15 +171,27 @@ class Context:
return path return path
return None return None
def find_root_package_dir(self, file_path):
dir = os.path.dirname(file_path)
while self.is_package_dir(dir):
parent = os.path.dirname(dir)
if parent == dir:
break
dir = parent
return dir
def is_package_dir(self, dir):
package_init = os.path.join(dir, "__init__.py")
return os.path.exists(package_init) or \
os.path.exists(package_init + "x") # same with .pyx
def check_package_dir(self, dir, package_names): def check_package_dir(self, dir, package_names):
package_dir = os.path.join(dir, *package_names) package_dir = os.path.join(dir, *package_names)
if not os.path.exists(package_dir): if not os.path.exists(package_dir):
return None return None
for dirname in package_names: for dirname in package_names:
dir = os.path.join(dir, dirname) dir = os.path.join(dir, dirname)
package_init = os.path.join(dir, "__init__.py") if not self.is_package_dir(dir):
if not os.path.exists(package_init) and \
not os.path.exists(package_init + "x"): # same with .pyx ?
return None return None
return package_dir return package_dir
......
SLIDES=$(subst .txt,.html,$(wildcard *.txt))
slides: $(SLIDES)
%.html: %.txt
rst2s5 --current-slide --language=en $< $@
clean:
rm -f *~ $(SLIDES)
/* The following styles size, place, and layer the slide components.
Edit these if you want to change the overall slide layout.
The commented lines can be uncommented (and modified, if necessary)
to help you with the rearrangement process. */
/* target = 1024x768 */
div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
div#header {top: 0; height: 3em; z-index: 1;}
div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0;}
#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
html>body #currentSlide {position: fixed;}
/*
div#header {background: #FCC;}
div#footer {background: #CCF;}
div#controls {background: #BBD;}
div#currentSlide {background: #FFC;}
*/
<public:component>
<public:attach event="onpropertychange" onevent="doFix()" />
<script>
// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
// Free usage permitted as long as this notice remains intact.
// This must be a path to a blank image. That's all the configuration you need here.
var blankImg = 'v11rc1/default/blank.gif';
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
function filt(s, m) {
if (filters[f]) {
filters[f].enabled = s ? true : false;
if (s) with (filters[f]) { src = s; sizingMethod = m }
} else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
}
function doFix() {
if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
(event && !/(background|src)/.test(event.propertyName))) return;
if (tagName == 'IMG') {
if ((/\.png$/i).test(src)) {
filt(src, 'image'); // was 'scale'
src = blankImg;
} else if (src.indexOf(blankImg) < 0) filt();
} else if (style.backgroundImage) {
if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
var s = RegExp.$1;
style.backgroundImage = '';
filt(s, 'crop');
} else filt();
}
}
doFix();
</script>
</public:component>
\ No newline at end of file
/* DO NOT CHANGE THESE unless you really want to break Opera Show */
.slide {
visibility: visible !important;
position: static !important;
page-break-before: always;
}
#slide0 {page-break-before: avoid;}
/* don't change this unless you want the layout stuff to show up in the outline view! */
.layout div, #footer *, #controlForm * {display: none;}
#footer, #controls, #controlForm, #navLinks, #toggle {
display: block; visibility: visible; margin: 0; padding: 0;}
#toggle {float: right; padding: 0.5em;}
html>body #toggle {position: fixed; top: 0; right: 0;}
/* making the outline look pretty-ish */
#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
#slide0 h1 {padding-top: 1.5em;}
.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
/* Following are the presentation styles -- edit away! */
/* body {background: #FFF url(cython.png) 1em 1em no-repeat; color: #000; font-size: 2em;} */
:link, :visited {text-decoration: none; color: #646464;}
#controls :active {color: #646464 !important;}
#controls :focus {outline: 1px dotted #646464;}
h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
ul, pre {margin: 0; line-height: 1em;}
html, body {margin: 0; padding: 0;}
blockquote, q {font-style: italic;}
blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
blockquote p {margin: 2em;}
blockquote p strong {font-size: 1.5em;}
blockquote i {font-style: normal;}
blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
blockquote b i {font-style: italic;}
kbd {font-weight: bold; font-size: 1em;}
sup {font-size: smaller; line-height: 1px;}
.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
.slide code.bad, code del {color: red;}
.slide code.old {color: silver;}
.slide .pre {padding: 0; margin: 0 0 0 0; color: #533; font-size: 80%;}
.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
/* .slide pre {padding: 0; margin: 0 0 0 0; color: #533; font-size: 90%;} */
.slide pre code {display: block;}
.slide div > ul {padding-left: 0; margin-left: 0; list-style: disc; }
.slide li {margin-top: 0.75em; margin-right: 0;}
.slide ul ul {line-height: 1; padding-left: 1em; margin-left: 2%; margin-right: 5%; list-style: disc; }
.slide ul ul li {margin: .4em; font-size: 85%; list-style: square;}
.slide img.leader {display: block; margin: 0 auto;}
div#header, div#footer {background: #f0f0f0; color: #646464;
font-family: Verdana, Helvetica, sans-serif; padding: 0;}
div#header {background: #f0f0f0 url(cython-logo64.png) 1ex 0.6ex no-repeat;
line-height: 1px; border-bottom: solid #646464 4px;}
div#footer {font-size: 0.5em; font-weight: bold; padding: 0.6em 0;
border-top: solid #646464 3px;}
#footer h1, #footer h2 {display: block; padding: 0 1em;}
#footer h2 {font-style: italic;}
#footer a {color: #646464;}
div.long {font-size: 0.75em;}
.slide h1 {position: absolute; top: 0.4em; left: 87px; z-index: 1;
margin: 0; padding: 0.2em 0 0 25px; white-space: nowrap;
font: bold 150%/1em Helvetica, sans-serif; /* text-transform: capitalize; */
color: #646464; background: #f0f0f0;}
.slide h3 {font-size: 130%;}
h1 abbr {font-variant: small-caps;}
div#controls {position: absolute; left: 50%; bottom: 0;
width: 50%;
text-align: right; font: bold 0.7em Verdana, Helvetica, sans-serif;}
html>body div#controls {position: fixed; padding: 0 0 1em 0;
top: auto;}
div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
margin: 0; padding: 0;}
#controls #navLinks a {padding: 0; margin: 0 0.5em;
background: #f0f0f0; border: none; color: #646464;
cursor: pointer;}
#controls #navList {height: 1em;}
#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #f0f0f0; color: black;}
#currentSlide {text-align: center; font-size: 0.5em; color: #646464; left: 90%; bottom: 2px;}
#slide0 {padding-top: 3em; font-size: 90%;}
#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
font: bold 2em Helvetica, sans-serif; white-space: normal;
color: #000; background: transparent;}
#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 1.25em;}
#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
#slide0 h4 {margin-top: 0; font-size: 1em;}
ul.urls {list-style: none; display: inline; margin: 0;}
.urls li {display: inline; margin: 0;}
.note {display: none;}
.external {border-bottom: 1px dotted gray;}
html>body .external {border-bottom: none;}
/* .external:after {content: " \274F"; font-size: smaller; color: #7B7;} */
/* .incremental, .incremental *, .incremental *:after {color: #646464; visibility: visible;} */
.incremental, .incremental *, .incremental *:after {visibility: hidden;}
img.incremental {visibility: hidden;}
.slide .current {color: #B02;}
.center {text-align: center; }
.right {text-align: right; }
.small {font-size: 60%; }
img.center {display: block; margin-left: auto; margin-right: auto; }
.slide .syntax {padding: 2px 0.25em; font-weight: bold; color: #533; font-size:85%; }
/* diagnostics
li:after {content: " [" attr(class) "]"; color: #F88;}
*/
/* Syntax highlighting */
/* .syntax { background: #f0f0f0; } */
.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
.syntax .err { border: 1px solid #FF0000 } /* Error */
.syntax .k { color: #007020; font-weight: bold } /* Keyword */
.syntax .o { color: #666666 } /* Operator */
.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
.syntax .cp { color: #007020 } /* Comment.Preproc */
.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
.syntax .gd { color: #A00000 } /* Generic.Deleted */
.syntax .ge { font-style: italic } /* Generic.Emph */
.syntax .gr { color: #FF0000 } /* Generic.Error */
.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.syntax .gi { color: #00A000 } /* Generic.Inserted */
.syntax .go { color: #404040 } /* Generic.Output */
.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.syntax .gs { font-weight: bold } /* Generic.Strong */
.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.syntax .gt { color: #0040D0 } /* Generic.Traceback */
.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.syntax .kp { color: #007020 } /* Keyword.Pseudo */
.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.syntax .kt { color: #902000 } /* Keyword.Type */
.syntax .m { color: #40a070 } /* Literal.Number */
.syntax .s { color: #4070a0 } /* Literal.String */
.syntax .na { color: #4070a0 } /* Name.Attribute */
.syntax .nb { color: #007020 } /* Name.Builtin */
.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.syntax .no { color: #60add5 } /* Name.Constant */
.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.syntax .ne { color: #007020 } /* Name.Exception */
.syntax .nf { color: #06287e } /* Name.Function */
.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
.syntax .nv { color: #bb60d5 } /* Name.Variable */
.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
.syntax .w { color: #bbbbbb } /* Text.Whitespace */
.syntax .mf { color: #40a070 } /* Literal.Number.Float */
.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
.syntax .sc { color: #4070a0 } /* Literal.String.Char */
.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.syntax .sx { color: #c65d09 } /* Literal.String.Other */
.syntax .sr { color: #235388 } /* Literal.String.Regex */
.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
.syntax .ss { color: #517918 } /* Literal.String.Symbol */
.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */.slide, ul {page-break-inside: avoid; visibility: visible !important;}h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;}* {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}#slide0 h3 {margin: 0; padding: 0;}#slide0 h4 {margin: 0 0 0.5em; padding: 0;}#slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}.extra {background: transparent !important;}div.extra, pre.extra, .example {font-size: 10pt; color: #333;}ul.extra a {font-weight: bold;}p.example {display: none;} #header {display: none;}#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}#footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */.layout, .layout * {display: none !important;}
\ No newline at end of file
/* Do not edit or override these styles! The system will likely break if you do. */
div#header, div#footer, div#controls, .slide {position: absolute;}
html>body div#header, html>body div#footer,
html>body div#controls, html>body .slide {position: fixed;}
.handout {display: none;}
.layout {display: block;}
.slide, .hideme, .incremental {visibility: hidden;}
#slide0 {visibility: visible;}
@import url(s5-core.css); /* required to make the slide show run at all */
@import url(framing.css); /* sets basic placement and size of slide components */
@import url(pretty.css); /* stuff that makes the slides look better than blah */
\ No newline at end of file
This diff is collapsed.
...@@ -16,3 +16,6 @@ test: testclean ...@@ -16,3 +16,6 @@ test: testclean
test3: testclean test3: testclean
${PYTHON} runtests.py --no-cleanup ${PYTHON} runtests.py --no-cleanup
python3.0 runtests.py --no-cython python3.0 runtests.py --no-cython
s5:
$(MAKE) -C Doc/s5 slides
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment